PySpark 问题用嵌套 JSON 和其他元素展平数组

PySpark problem flattening array with nested JSON and other elements

我正在努力使用正确的语法来展平一些数据。

我有一个 dlt table 和一个列(为了示例而命名为 lorem),其中每一行如下所示:

[{"field1": {"field1_1": null, "field1_2": null}, "field2": "blabla", "field3": 13209914, "field4": {"field4_1": null, "field4_2": null}, "field5": 4}, ...]

我希望我的输出基于第一个创建一个新的 table,它基本上为我上面共享的数组中的每个元素创建一行。

Table 应该是这样的: |field1_1|field1_2|field2|field3|field4_1|field4_2|field_5| |:--------|:--------|:-----|:-----|:--------|:------ |:------| |null|null|blabla|13209914|null|null|4|

然而,当我像这样爆炸时:select(explode("lorem")) 我没有得到想要的输出,相反,我只得到字段 0 和爆炸以及除 field4 内的所有内容之外的其他字段。

我的问题是,我应该用什么其他方式来展平这些数据? 如果需要,我可以提供更清晰的示例。

使用 withColumn 添加您需要的其他列。一个简单的例子:

%%pyspark
from pyspark.sql.functions import col

df = spark.read.json("abfss://somelake@somestorage.dfs.core.windows.net/raw/flattenJson.json")

df2 = df \
    .withColumn("field4_1", col("field4.field4_1")) \
    .withColumn("field4_2", col("field4.field4_2"))

df2.show()

我的结果: