如何利用数据表中的ID列表过滤目标结果集?
用数据表ID集合过滤大型表的正确方法
你之前的查询报错,是因为contains是字符串包含运算符,不能直接用来关联两张表的列,且语法不符合Kusto的查询规则。以下是两种可行的解决方式:
方法一:使用in运算符匹配集合
通过project提取收藏ID列,再用in判断目标表的Id是否在该集合中:
let favoriteIds = datatable (identifier: double) [123, 234, 356, 789]; HugeTable | where Id in (favoriteIds | project identifier)
如果两张表的ID数据类型不一致(比如HugeTable的Id是int,favoriteIds的identifier是double),需要统一类型:
let favoriteIds = datatable (identifier: double) [123, 234, 356, 789]; HugeTable | where todouble(Id) in (favoriteIds | project identifier)
方法二:使用join操作(适合大数据量场景)
通过内连接(inner join)只保留两边ID匹配的行,性能通常更优:
let favoriteIds = datatable (identifier: double) [123, 234, 356, 789]; HugeTable | join kind=inner favoriteIds on $left.Id == $right.identifier | project-away identifier // 若不需要保留identifier列可执行此步骤
内容的提问来源于stack exchange,提问作者Craig
相关产品推荐
相关产品推荐

