如何使用KUSTO查询从JSON中提取单个值.
我希望能够读取SourceSystemId,Message的值并投影这些值.我还想在以下JSON中使用date作为过滤器.并且仅投影日期大于作为外部参数提供的日期的记录.
{{
"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"
}}
Run Code Online (Sandbox Code Playgroud)
假设您有一个名为的表T,其中一个列名为MyString,它存储您的JSON值并键入为string(下面为此示例定义了一个表).
parse_json()在列上调用(除非它已经输入,dynamic而不是,因为string在这种情况下,您可以跳过此步骤).DateJSON值访问该属性,并使用todatetime()它将其强制转换为type datetime.dateTimeLowerBound在下面的示例中).project你的相关性兴趣(Message在第一单元Errors阵列,以及SourceSystemId),你可以将它们转换成预期的类型(如long和string使用tolong(),并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)
Run Code Online (Sandbox Code Playgroud)
本实施例的输出应为表2列,命名SourceSystemId和Message,的类型long和string,并用这些值4的some message分别.
| 归档时间: |
|
| 查看次数: |
5244 次 |
| 最近记录: |