如何在Power Automate中判断KQL查询是否无返回行
解决Power Automate中判断KQL查询是否无返回行的问题
问题根源
你用的Run KQL Query操作返回的是HTML表格格式结果,不是原始JSON数据集,所以之前的判断逻辑都踩了坑:
body('cmdletsForEmail')?['value']一直返回False,是因为这个操作的输出结构里根本没有value字段empty(outputs('cmdletsForEmail')?['body/body'])一直为True,是因为这里的body是操作的包装结构,不是查询的实际结果数据
两种可行的判断方法
方法1:解析HTML表格判断(适合当前HTML输出场景)
KQL返回的空HTML表格只有表头,没有数据行。你可以通过检查bodyHtml里是否存在数据行标签来判断:
not(contains(body('cmdletsForEmail')?['bodyHtml'], '<tr><td>'))
原理:有数据时,HTML里会出现<tr><td>开头的行;空结果只有表头的<tr><th>,所以这个表达式能准确识别是否无返回行。
方法2:切换返回格式为JSON(更可靠)
如果你的操作支持调整返回格式(部分环境可在Run KQL Query的设置里修改),改成返回JSON数据集,之后用这个表达式判断:
empty(body('cmdletsForEmail')?['value'])
这种方式不用解析HTML,逻辑更直接,不容易出错。
避坑提醒
- 用HTML判断时,注意查看实际返回的
bodyHtml内容,如果<tr><td>不匹配,换成你环境里实际的数据行标识 - 别直接用
length处理HTML字符串,空格、换行都会干扰判断结果
内容的提问来源于stack exchange,提问作者Adam S
相关产品推荐
相关产品推荐

