簡體   English   中英

使用 Azure Synapse pyspark 根據嵌套對象的數據類型過濾或展平嵌套的 json 對象

[英]Using Azure Synapse pyspark filter or flatten the nested json objects based on nested object's data type

我正在研究 Azure Synapse pyspark 以展平嵌套的 json 數據。 json 文件包含具有嵌套數據的 json 對象,如下所示,這里的 cords 是第 1 和第 3 條記錄的結構類型和第 2 條記錄的字符串類型。 當我使用 df.printSchema() 打印模式時,它會將線類型打印為字符串,如果我刪除第二行 json object 然后它會打印結構類型的模式。 在這里,我想根據線數據類型過濾 json 對象,以便我可以展平線結構嵌套數據。 至於第二個記錄展平是不需要的。 請問有人可以幫我嗎?

{"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}}

您可以將 pandas 導入您的代碼,然后他們使用它加載數據,如下所示:

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

從上面的代碼行中,我們假設“數據”是存儲 JSON 結構化數據的變量。

此外,我們在關於您的三種 json 類型的數據中有多種方案。

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

為了更好地理解 Pyspark 參考這個博客,感謝向數據科學的清晰解釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM