KQL中带Where语句的.ingest inline查询执行失败问题
问题分析与解决方案
错误原因
你执行失败的核心原因是:直接在CSV格式的单行数据后追加| where子句的写法不符合Kusto语法规则。Kusto无法将单独的CSV字符串识别为带有列名(id、label)的结构化表,因此where子句中引用的id列会被判定为不存在,导致执行报错。
正确实现方式
方式1:过滤本次插入数据中的指定ID
如果只是想过滤掉本次要插入的数据中的某个特定ID,需要先用datatable构造出带列名的结构化数据源,再添加过滤逻辑:
.ingest inline into table testing <| datatable(id:string, label:string) [ "5671343d-8eaa-4939-8225-cb17805868d8", "2" ] | where id != "5671343d-8eaa-4939-8225-cb17805868d8"
方式2:避免插入目标表中已存在的ID
如果你的真实需求是不插入testing表中已经存在的ID,需要通过左反连接(leftanti)对比目标表中的已有数据,再执行插入:
.ingest inline into table testing <| datatable(id:string, label:string) [ "5671343d-8eaa-4939-8225-cb17805868d8", "2" ] | join kind=leftanti (testing) on id
这种写法会自动过滤掉与testing表中id重复的数据,只插入新的、不存在的记录。
内容的提问来源于stack exchange,提问作者Naveen Gorojanam
相关产品推荐
相关产品推荐

