是否存在类似column_ifexists()的表存在判断查询函数
问题
- 现有
column_ifexists()函数的逻辑为:若指定列存在则引用该列,若列不存在则引用用户提供的备选值。 - 核心需求:确认是否存在作用于表的同类函数,满足在查询语句中引用目标表并执行后续处理逻辑时,若目标表存在则正常运行逻辑;若目标表不存在,查询不抛出错误,仅返回空数据即可。
- 预期使用形式:
table_ifexists('sometable') | ...<逻辑>...
解答
KQL没有内置命名为table_ifexists()的现成函数,但可以直接用union的isfuzzy参数实现完全匹配需求的效果,不需要额外开发自定义函数。
union加上isfuzzy=true参数后,会自动忽略不存在的表引用,不会抛出表不存在的解析错误;如果所有引用的表都不存在,会直接返回空结果集,完全符合要求。
实现示例:
union isfuzzy=true (sometable) | // 在这里写后续的处理逻辑
如果需要固定返回的表结构(避免空结果时列类型、列数不匹配导致后续逻辑异常),可以追加一个定义了目标结构的空表做兜底,保证无论目标表是否存在,输出结构都一致:
union isfuzzy=true (sometable), (print col1:typeof(string), col2:typeof(long) | where 1==0) | // 在这里写后续的处理逻辑
这个方案的行为和预期的table_ifexists()完全一致:目标表存在时正常读取表内容执行后续逻辑,目标表不存在时不抛出任何错误,返回空数据。
内容的提问来源于stack exchange,提问作者Dhiraj
相关产品推荐
相关产品推荐

