【发布时间】:2021-12-30 06:17:40
【问题描述】:
我正在使用 Azure Synapse pyspark 来扁平化嵌套的 json 数据。 json 文件包含带有嵌套数据的 json 对象,如下所示,这里的 cords 是第 1 条和第 3 条记录的 struct 类型和第 2 条记录的字符串类型。 当我使用 df.printSchema() 打印模式时,它会将线类型打印为字符串,如果我删除第二行 json 对象,那么它会打印结构类型的模式。 在这里,我想根据 cords 数据类型过滤 json 对象,以便我可以展平 cords 结构嵌套数据。至于第二个记录展平不是 必需的。请问有人可以帮我吗?
{"dateTime":"2020-11-29T13:51:16.168659Z","cords":{"x_al":0.0191342489,"y_al":-0.1200904993}}
{"dateTime":"2020-12-29T13:51:21.457739Z","cords":51.0}
{"dateTime":"2021-10-29T13:51:26.634289Z","cords":{"x_al":0.01600042489,"y_al":-0.1200900993}}
【问题讨论】:
-
您的预期结果是什么?你都尝试了些什么?如果您提供一个工作示例,创建一个数据框,添加数据以使人们更容易工作,那就更好了。
-
@wBob 谢谢你的回复。目标是从源文件中提取 json 数据并展平其所有嵌套的 json 数据。源文件有大量复杂的数据,上面的 json 数据只是它的一部分样本。在源文件中,很少有 json 对象具有像 "cords":51.0 这样的值,因此 df.printSchema() 将线数据类型视为字符串,因此我无法展平线数据。仅出于测试目的,我将第一行和第二行 json 对象复制到单独的 valid.json 文件中,从 valid.json 文件中展平嵌套数据就像一个魅力,因为 df.printSchema() 将线数据类型视为结构。
标签: json pyspark azure-synapse nested-json