У меня есть df схемы
|-- Data: struct (nullable = true)
| |-- address_billing: struct (nullable = true)
| | |-- address1: string (nullable = true)
| | |-- address2: string (nullable = true)
| |-- address_shipping: struct (nullable = true)
| | |-- address1: string (nullable = true)
| | |-- address2: string (nullable = true)
| | |-- city: string (nullable = true)
| |-- cancelled_initiator: string (nullable = true)
| |-- cancelled_reason: string (nullable = true)
| |-- statuses: array (nullable = true)
| | |-- element: string (containsNull = true)
| |-- store_code: string (nullable = true)
| |-- store_name: string (nullable = true)
| |-- tax_code: string (nullable = true)
| |-- total: string (nullable = true)
| |-- updated_at: string (nullable = true)
Мне нужно извлечь все поля в отдельных столбцах без указания имени вручную.
Есть ли способ, которым мы можем это сделать? Я попытался:
val df2=df1.select(df1.col("Data.*"))
, но получил ошибку
org.apache.spark.sql.AnalysisException: No such struct field * in address_billing, address_shipping,....
Также, может ли кто-нибудь подсказать мне, как добавить префикс ко всем этим столбцам, так как некоторые из имен столбцов могут быть таким же. Вывод должен быть похож на address_billing_address1 address_billing_address2. , .