You need to enable JavaScript to run this app. Kusto中如何拆分逗号分隔列唯一值生成新行并统计关联计数
优惠活动
大模型
产品
解决方案
定价
更多

Kusto中如何拆分逗号分隔列唯一值生成新行并统计关联计数

Kusto 查询实现方案

核心实现逻辑

整个查询完全对齐提出的计算规则,拆分4个可独立调整的步骤完成计算:

  • 提取全量固定Shop枚举值,确保每个令牌匹配全部5个可选店铺,不会因为某类组合无数据就漏行
  • 从原表Tokens列拆分所有逗号分隔的字符串,提取全量去重后的独立令牌,自动适配空Tokens的场景
  • 逐行拆分原表的Tokens值,按「单个令牌+对应店铺」维度聚合计数,拿到每一组组合的真实匹配行数
  • 做令牌与店铺的全量交叉匹配,关联上聚合后的计数,无匹配的组合计数默认填充为0,输出最终结果

可直接套用的查询代码

// 替换为你实际的业务表名,此处为示例结构
let SourceTable = datatable(Tokens:string, Shop:string)[
    "a",  "P",
    "a,b",  "Q",
    "c,d,e",  "P",
    "c",  "R",
    "c,d",  "Q"
];
// 提取表内全量不重复的Shop值(共5个固定可选值,自动提取无需手动维护)
let AllShops = SourceTable | distinct Shop;
// 提取全量去重后的独立令牌,自动过滤空Tokens产生的无效空值
let AllDistinctTokens = SourceTable
| mv-expand Token = split(Tokens, ",")
| where isnotempty(Token)
| distinct Token;
// 计算每个「令牌+Shop」组合对应的原表匹配行数
let TokenShopAgg = SourceTable
| mv-expand Token = split(Tokens, ",")
| where isnotempty(Token)
| summarize Count = count() by Token, Shop;
// 生成最终结果:全量令牌匹配全量Shop,关联对应计数
AllDistinctTokens
| cross join AllShops
| left join TokenShopAgg on Token, Shop
| project
    DistinctTokens = Token,
    Shop = Shop,
    Count = coalesce(Count, 0)

可调整的适配点

  • 如果你的Shop枚举值是固定硬编码的5个值,不需要从表里动态提取,可以替换AllShops的定义为手动枚举,示例:
    let AllShops = datatable(Shop:string)["P", "Q", "R", "S", "T"];
    
  • 如果Tokens列的分隔符不是逗号,可以调整split(Tokens, ",")里的分隔符参数适配实际场景
  • 如果需要保留空值对应的令牌统计,删除where isnotempty(Token)过滤条件即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.02 12:24:03