簡體   English   中英

如何將 Azure 數據工廠中的嵌套 JSON 數組和 output 原始 JSON object 展平為字符串?

[英]How to flatten a nested JSON array in Azure Data Factory and output the original JSON object as string?

我的輸入(簡化)來自許多結構如下的 JSON 文件:

{
  Type : "Root",
  Id: "R1",
  Nested : [
    { Type : "NestedType1", Id: "N1", SharedAttribute: 1 },
    { Type : "NestedType1", Id: "N2", SharedAttribute: 2 },
    { Type : "NestedType2", Id: "N3", SharedAttribute: 3, NestedType2SpecificAttribute = "foo" }
  ]
}

重要的一點是嵌套元素共享某些屬性(例如SharedAttribute ),但它們可以具有各種其他屬性(例如NestedType2SpecificAttribute )。 我無法捕獲輸入模式中的所有屬性,因為它們會隨時間變化。

我希望轉換嵌套數組,以便它輸出一個包含所有公共/共享屬性的 Kusto 表和一個包含表示嵌套數組項 JSON 的字符串的附加列。

我正在使用 DataFlow 從 Data Lake 讀取這些 JSON 文件。 為了提取數組,我添加了一個“Flatten”格式化程序並選擇按“Nested”展開並使展開根相同。 這給了我預期的數據:

類型 ID 共享屬性
嵌套類型 1 N1 1個
嵌套類型 1 氮氣 2個
嵌套類型2 N3 3個

但我不知道如何添加一個名為“RawJson”的附加列,該列應包含展開數組的源元素,本質上是toString(currentItem)以產生如下結果:

類型 ID 共享屬性 生傑森
嵌套類型 1 N1 1個 { 類型:“NestedType1”,ID:“N1”,SharedAttribute:1 }
嵌套類型 1 氮氣 2個 { 類型:“NestedType1”,ID:“N2”,SharedAttribute:2 }
嵌套類型2 N3 3個 { 類型:“NestedType2”,ID:“N3”,SharedAttribute:3,NestedType2SpecificAttribute = “foo”}

在 Flatten 轉換的“輸入列”部分,您可以包含原始數組。 您應該能夠選擇您設置為展開依據的數組名稱,然后您可以使用 Name As 屬性在輸入列中將其重命名為“RawJson”。

在我的示例中,“坐標”是我展開並生成它作為 output 的一部分的數組。

在此處輸入圖像描述

添加到@Mark Kromer MSFT ,扁平化轉換后,您將獲得 output 中的對象數組。

帶有表示嵌套數組項 JSON 的字符串的附加列。

然后使用派生列轉換將 output 作為字符串獲取。

展平:

在此處輸入圖像描述

將 Output 展平為對象數組:

在此處輸入圖像描述

派生列:

在此處輸入圖像描述

Output:

在此處輸入圖像描述

暫無
暫無

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

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