You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kusto中拆分JSON的analog-values并关联设备位置信息?

Kusto Query Solution for New JSON Structure

Final Query Code

print sampleData = dynamic({
  "url": "/api/rest/v2/services/bacnet",
  "status": 200,
  "headers": {
    "content-length": "1067",
    "content-type": "application/json"
  },
  "body": {
    "local": {
      "objects": {
        "devices": {
          "5000": {
            "object-name": "ABC-LDN-DEF-GHIJ"
          },
          "4194303": {
            "object-name": "ABC-LDN-DEF-GHIJ"
          }
        },
        "analog-values": {
          "1": {
            "units": "NoUnits",
            "present-value": 0
          },
          "2": {
            "units": "NoUnits",
            "present-value": 122
          }
        }
      }
    }
  }
})
// 提取第一个device的object-name并生成位置子串
| extend devices = sampleData.body.local.objects.devices
| mv-expand kind=array deviceEntry = devices
| take 1 // 直接取第一个设备条目
| extend objectName = tostring(deviceEntry[1].['object-name'])
| extend location = substring(objectName, 4, 3)
// 将analog-values拆分为单独行
| project sampleData, location
| mv-expand kind=array analogEntry = sampleData.body.local.objects.['analog-values']
// 解析每个analog-value的字段
| extend objectId = tostring(analogEntry[0]),
         units = tostring(analogEntry[1].units),
         presentValue = analogEntry[1].['present-value']
// 保留需要的输出字段
| project location, objectId, units, presentValue

Key Steps Explanation

  • 提取位置信息:
    1. 从JSON中拆分出devices节点,用mv-expand kind=array把字典转为键值对数组,通过take 1直接获取第一个设备条目。
    2. 提取该条目的object-name,再用substring截取指定位置的子串作为位置信息。
  • 拆分analog-values:
    1. 拆分出analog-values节点,同样用mv-expand kind=array将每个条目转为单独行。
    2. 解析每条记录的objectId(键值对的键)、units和present-value字段。
  • 整合结果: 将位置信息与解析后的analog-value字段组合,得到目标输出结构。

内容的提问来源于stack exchange,提问作者aTTraX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 02:07:31