如何使用Kusto查询语言实现按operation_Id去重
解决方法:每个operation_Id仅保留一条记录
你的原有查询逻辑存在问题:当前语句是筛选出(operation_Id, language)组合仅出现一次的记录,这和你“每个operation_Id仅保留一条记录”的需求不匹配——它会直接排除那些对应多种language的operation_Id,完全达不到目标。
以下是几种符合需求的Kusto查询方案:
方案1:随机保留任意一个language(最简单)
直接对每个operation_Id聚合,保留任意一个对应的language值:
// 替换your_table_name为你的数据表名 your_table_name | summarize any(language) by operation_Id | project operation_Id, language = any_language
方案2:按指定优先级保留language
如果需要优先保留特定语言(比如优先en-US,其次en-GB),可以先给语言排序,再取优先级最高的:
// 替换your_table_name为你的数据表名 your_table_name // 给语言设置优先级数值,数值越小优先级越高 | extend rank = case( language == "en-US", 1, language == "en-GB", 2, // 其他语言设为默认优先级 3 ) | summarize arg_min(rank, language) by operation_Id | project operation_Id, language
方案3:保留每个operation_Id的第一条记录
按原数据顺序,取每个operation_Id的第一条记录:
// 替换your_table_name为你的数据表名 your_table_name | partition by operation_Id (take 1)
内容的提问来源于stack exchange,提问作者marula siddesha
相关产品推荐
相关产品推荐

