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

如何在Kusto KQL中对make_set生成的集合按字母排序?

问题根源

make_set()函数仅负责对字段值去重,返回的集合是无序的——无论你之前执行过多少次sort by,它都不会保留排序后的顺序,所以你之前的排序操作对最终生成的集合没有影响。

解决办法

有两种实用方法可以生成按字母顺序排序的集合:

方法1:先排序去重,再用make_list保留顺序

make_list()会严格保留输入的顺序,因此可以先对数据去重、排序,再生成列表:

datatable (CaseNumber:string, AmendmentNumber:string, AmendmentNumberRaw:string, AmendmentType:string)
[
  '5-5-00a000b113z', 'T155', 'T155', 'Non-CTM'
, '5-5-00a000b113z', 'A156', 'A156', 'Non-CTM'
, '5-5-00a000b113z', 'M157', 'M157', 'Non-CTM'
]
| distinct CaseNumber, AmendmentNumber
| sort by CaseNumber, AmendmentNumber asc
| summarize make_list(AmendmentNumber) by CaseNumber

方法2:生成集合后用array_sort_asc排序

先生成去重集合,再调用array_sort_asc()函数对集合进行字母序排序:

datatable (CaseNumber:string, AmendmentNumber:string, AmendmentNumberRaw:string, AmendmentType:string)
[
  '5-5-00a000b113z', 'T155', 'T155', 'Non-CTM'
, '5-5-00a000b113z', 'A156', 'A156', 'Non-CTM'
, '5-5-00a000b113z', 'M157', 'M157', 'Non-CTM'
]
| summarize AmendmentSet = make_set(AmendmentNumber) by CaseNumber
| extend SortedAmendmentSet = array_sort_asc(AmendmentSet)
| project CaseNumber, SortedAmendmentSet

两种方法都能得到你期望的结果:5-5-00a000b113z ["A156","M157","T155"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 08:09:58