Pyspark сглаживает встроенные структуры на одном уровне

Есть ли простой способ сделать что-то вроде изображения сверху вниз, где все столбцы находятся рядом друг с другом без вложений, на одном уровне?
https://i.s tack.imgur.com/3r46K.png

1 ответ

Решение

Вы можете обновить sourcestruct, добавляя поля из внутренней структуры. Что-то вроде этого:

# get all fields of source struct except the inner struct e_struct
source_cols = [col(f"source.{c}") for c in df.select(col("source.*")).columns if c != "e_struct"]

# get all fields of the inner struct e_struct
e_struct_cols = [col(f"source.e_struct.{c}") for c in df.select(col("source.e_struct.*")).columns]

# combine them
new_struct_cols = source_cols + e_struct_cols

# update source column
df = df.withColumn("source", struct(*new_struct_cols))
Другие вопросы по тегам