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

如何在Kusto查询语言中提取JSON数组指定属性的所有值

问题描述

现有表格包含OrgId、OrgName及动态JSON数组列DProducts,示例输入如下:

OrgId,  OrgName, DProducts (dynamic)
581,    ABC,    [{"Id":"123","Name":"abc","PlanId":"af3"},{"Id":"234","Name":"bcd","PlanId":"aee3"}]
582,    ABCD,   [{"Id":"12345","Name":"abcfg","PlanId":"afg3"},{"Id":"234","Name":"bcd","PlanId":"aee3"}]
583,    CDEF,   []

需要提取每个机构对应的所有Name属性值组成新数组,期望输出格式如下:

OrgId,  OrgName, DProducts_name
581,    ABC,    ["abc" , "bcd"]
582,    ABCD,   ["abcfg" , "bcd"]
583,    CDEF,   []

尝试过以下Kusto查询,但会将每个Name值展开为单独行,不符合预期:

| mv-expand DProducts
| project OrgId, OrgName,DProducts["Name"]
解决方案

可以通过两种方式实现需求:

方法1:使用array_map函数(推荐,更简洁)

直接遍历DProducts数组,提取每个元素的Name字段生成新数组:

| project OrgId, OrgName, DProducts_name = array_map(p => p.Name, DProducts)

方法2:使用mv-apply结合summarize

先将数组元素展开,再按机构聚合生成Name数组:

| mv-apply DProducts on (
    project Name = DProducts.Name
)
| summarize DProducts_name = make_list(Name) by OrgId, OrgName

两种方法都能保留原有的机构行,同时生成包含所有Name值的数组列,其中方法1性能更优,适合处理大规模数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 02:34:55