Kusto技术问题:如何从指定列表中筛选出缺失值
解决Kusto中获取指定列表缺失值的问题
原查询用array_iff按数组位置对比,导致返回的MissingValues包含null,无法直接得到具体缺失项。要获取fcu列表中不在Models里的元素,应该用集合差集函数set_difference,它能直接返回第一个数组存在但第二个数组不存在的所有元素。
修改后的完整查询
let fcu = todynamic(pack_array("Alarm", "State", "Zone", "Air", "Temp Sp", "Fan", "Zone Air")); let ac = all | join kind=inner (AT) on $left.SourceId == $right.Id | summarize Models=todynamic(make_list(Name2)) by Id | extend MissingValues = set_difference(fcu, Models); // 替换原array_iff逻辑
关键说明
set_difference(fcu, Models):直接计算fcu与Models的差集,返回fcu中所有未出现在Models里的元素,不会包含null。- 如果
Models中存在重复值,可先通过array_distinct去重,确保差集准确:extend MissingValues = set_difference(fcu, array_distinct(Models))
内容的提问来源于stack exchange,提问作者Naga
相关产品推荐
相关产品推荐

