【问题标题】:Parsing json in kusto query在 kusto 查询中解析 json
【发布时间】:2017-05-22 21:42:17
【问题描述】:

如何使用 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"
}}

【问题讨论】:

    标签: azure


    【解决方案1】:

    假设您有一个名为 T 的表,其中有一列名为 MyString,它存储您的 JSON 值并键入为 string(下面为示例定义了这样的表)。

    1. 您首先需要在您的列上调用parse_json()(除非它已经输入为dynamic 而不是string,在这种情况下您可以跳过此步骤)。
    2. 然后您可以访问 JSON 值中的 Date 属性并使用 todatetime() 将其强制转换为类型 datetime
    3. 之后,您可以按外部参数进行过滤(下例中为dateTimeLowerBound)。
    4. 最后——你可以project你感兴趣的相关属性(MessageErrors数组的第一个元素中,SourceSystemId),你可以将它们转换为它们的预期类型(例如,longstring 分别使用 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)
    

    此示例的输出应该是一个包含 2 列的表,名为 SourceSystemIdMessage,类型为 longstring,值分别为 4some message

    【讨论】:

    【解决方案2】:

    尝试 |extend Status = extractjson("$.",toString([column]))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多