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

2024-07-04 15:54:22 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

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

表应该如下所示: |场1|1 |场1|2 |场2 |场3 |场4|1 |场4|2 |场5| |:-------|:-------|:-----|:-----|:-------|:-------|:------| |空|空| blabla | 13209914 |空|空| 4 |

但是,当我像这样分解时:select(explode("lorem"))我没有得到想要的输出,相反,我只得到字段0和分解的字段以及除字段4内的所有内容之外的其他字段

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


Tags: 数据元素示例语法数组selectnulllorem
1条回答
网友
1楼 · 发布于 2024-07-04 15:54:22

使用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()

我的结果:

enter image description here

相关问题 更多 >

    热门问题