JSONPath:使用键和值提取单个字典
JSONPath: Extract single dict with keys and values
我有一个在 Azure Data Lake 环境中运行的 U-SQL 应用程序。它应该处理一个充满 JSON 数据的文件,看起来像这样,除了在现实生活中多于两行。
[
{"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") 似乎是 returning "reports" 键与嵌入式字典。如果我尝试 "reports.*" 的 JsonPath 值,我会得到嵌入值(例如,{ "FWD", "STOPS", 0 }
),但我真的希望密钥与它们一起使用,所以 SELECT direction, drive, frob_variable
会 return有用的东西。
长话短说,我正在寻找一种方法来从该内部字典中提取键 和 值。因此,我希望 EXTRACT
的输出是一个行集,其列为 "direction"、"drive" 和 "frob_variable",其值如源数据中所示。似乎在 U-SQL.
中应该有一个 JsonPath 解决方案或一个简单的解决方法
@extract =
EXTRACT
reports String
FROM @"/input/file.json"
USING new Microsoft.Analytics.Samples.Formats.Json.JsonExtractor();
@relation =
SELECT
Microsoft.Analytics.Samples.Formats.Json.JsonFunctions.JsonTuple(reports)
AS report
FROM @extract;
@fields =
SELECT
report["direction"] AS direction,
report["drive"] AS drive,
Int32.Parse(report["frob_variable"]) AS frob
FROM @relation;
另见 U-SQL - Extract data from json-array
我有一个在 Azure Data Lake 环境中运行的 U-SQL 应用程序。它应该处理一个充满 JSON 数据的文件,看起来像这样,除了在现实生活中多于两行。
[
{"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") 似乎是 returning "reports" 键与嵌入式字典。如果我尝试 "reports.*" 的 JsonPath 值,我会得到嵌入值(例如,{ "FWD", "STOPS", 0 }
),但我真的希望密钥与它们一起使用,所以 SELECT direction, drive, frob_variable
会 return有用的东西。
长话短说,我正在寻找一种方法来从该内部字典中提取键 和 值。因此,我希望 EXTRACT
的输出是一个行集,其列为 "direction"、"drive" 和 "frob_variable",其值如源数据中所示。似乎在 U-SQL.
@extract =
EXTRACT
reports String
FROM @"/input/file.json"
USING new Microsoft.Analytics.Samples.Formats.Json.JsonExtractor();
@relation =
SELECT
Microsoft.Analytics.Samples.Formats.Json.JsonFunctions.JsonTuple(reports)
AS report
FROM @extract;
@fields =
SELECT
report["direction"] AS direction,
report["drive"] AS drive,
Int32.Parse(report["frob_variable"]) AS frob
FROM @relation;
另见 U-SQL - Extract data from json-array