如何使用 KUSTO 查询从 JSON 中提取单个值。
我希望能够读取 SourceSystemId、Message 的值并投影这些值。我还想使用以下 JSON 中的日期作为过滤器。并且仅投影那些日期大于作为外部参数提供的日期的记录。
{{
"Status": 2,
"SourceSystemId": "4",
"RequisitionId": null,
"Errors": [
{
"Code": "8002",
"Message": "some message",
"FieldName": "VendorNumber",
"PartNumber": null
},
{
"Code": "8003",
"Message": "",
"FieldName": "PartNumber",
"PartNumber": ""
}
],
"SuppName": "SomeSupp",
"Date":"22/2/2017"
}}
Answer recommended by
Microsoft Azure /collectives/azure
Collective
假设您有一个名为T
,其中有一列名为MyString
,它存储您的 JSON 值并键入为string
(下面的示例定义了这样的表)。
- 您首先需要调用
parse_json()
在你的专栏上(除非它已经输入为dynamic
而不是作为string
,在这种情况下您可以跳过此步骤)。
- 然后您就可以访问
Date
JSON 值中的属性和使用todatetime()
将其转换为类型datetime
.
- 之后,您可以通过外部参数进行过滤(
dateTimeLowerBound
在下面的例子中)。
- 最后——你可以
project
您感兴趣的相关属性(Message
位于第一个元素中Errors
数组,以及SourceSystemId
),并且您可以将它们转换为预期的类型(例如long
and string
using tolong()
and tostring()
分别)。
这是例子:
let dateTimeLowerBound = datetime(2017-01-21);
let T = datatable(MyString:string) // this table is just for the example
[
'{"Status": 2, "SourceSystemId": "4", "RequisitionId": null, "Errors": [ { "Code": "8002", "Message": "some message", "FieldName": "VendorNumber", "PartNumber": null }, { "Code": "8003", "Message": "", "FieldName": "PartNumber", "PartNumber": "" } ], "SuppName": "SomeSupp", "Date":"2017-02-22"}'
];
T
| project MyJson = parse_json(MyString)
| where todatetime(MyJson.Date) > dateTimeLowerBound
| project SourceSystemId = tolong(MyJson.SourceSystemId), Message = tostring(MyJson.Errors[0].Message)
此示例的输出应该是一个包含 2 列的表,名为SourceSystemId
and Message
, 类型long
and string
,以及值4
an some message
, 分别。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)