0

我正在使用 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}}

4

1 回答 1

0

您可以将 pandas 导入您的代码,然后它们会使用它加载数据,如下所示:

df = pd.DataFrame([flatten_json(data)])

从上面的代码行中,我们假设“数据”是存储 JSON 结构化数据的变量。

此外,我们在关于您的三种 json 类型的数据中有多种方案可以展平。

  • 如果你只有一个字典,那么你可以使用flatten_json(data)
  • 如果您有多个 dicts [{},{}.{}],那么您可以使用 as[flatten_json(x) for x in data]
  • 如果你有多个值,{1: {}, 2: {}, 3: {}}那么你应该使用 as[flatten_json(data[key]) for key in data.keys()]

为了更好地理解 Pyspark,请参阅此博客,感谢向数据科学提供清晰的解释。

于 2021-11-20T11:13:03.430 回答