我有一個在Azure Data Lake環境中運行的U-SQL應用程序。它應該處理一個充滿JSON數據的文件,看起來像這樣,除了現實生活中的兩行以外。JSONPath:使用鍵和值提取單個字典
[
{"reports" : {"direction": "FWD", "drive": "STOPS", "frob_variable": 0}},
{"reports" : {"direction": "FWD", "drive": "CRANKS", "frob_variable": -3}}
]
該數據湖的工作,我有以下行:
@json =
EXTRACT direction string, drive string, frob_variable int FROM @"/input/file.json"
USING new Microsoft.Analytics.Samples.Formats.Json.JsonExtractor("reports");
當我轉儲@json
變量到一個文本文件中的內容,我得到空值:零長度字符串和零估值整數。我確實得到了正確數量的輸出行,所以它必須迭代我的所有輸入。
將源代碼戳到JsonExtractor
顯示我指定的JsonPath值(「報告」)似乎正在返回帶有嵌入字典的「reports」鍵。如果我嘗試使用「reports。*」的JsonPath值,我會得到嵌入的值(例如,{ "FWD", "STOPS", 0 }
),但我確實希望密鑰與它們一起使用,因此SELECT direction, drive, frob_variable
會返回一些有用的值。長話短說,我正在尋找一種方法來從該內部字典中取得鍵值和的值。因此,我所期望的EXTRACT
的輸出將是一個行集,其列是「方向」,「驅動器」和「frob_variable」,其值如源數據中所示。在U-SQL中似乎應該有一個JsonPath解決方案或一個簡單的解決方法。
啊哈見!這就是我一直在尋找的。 Json數組提取! – catfood