Logic App中Kusto查询传递变量无结果,如何解决?
你的原始Kusto查询:
StorageBlobLogs | where Protocol contains "sftp" and Uri contains "@{variables('Filename')}" and OperationName contains "sftpcommit" and TimeGenerated > ago(5m) | project RequesterObjectId
按以下步骤逐一排查:
确认变量替换结果
在Logic App中添加输出步骤,查看@{variables('Filename')}的实际值,确认是否和Blob的完整标识(含容器路径,如果有)一致。比如Blob存放在container/subfolder/file.txt,Uri字段会包含完整路径,若变量只存了file.txt,contains能匹配,但如果变量带了额外前缀/后缀,就会匹配失败。修正大小写匹配问题
Kusto查询默认区分大小写,若Uri或OperationName的实际值大小写和查询不一致(比如实际是SftpCommit),可以改用不区分大小写的contains_i替换contains:StorageBlobLogs | where Protocol contains_i "sftp" and Uri contains_i "@{variables('Filename')}" and OperationName contains_i "sftpcommit" and TimeGenerated > ago(15m) | project RequesterObjectId验证OperationName的准确值
先执行以下查询确认SFTP操作对应的OperationName:StorageBlobLogs | where Protocol contains "sftp" | distinct OperationName用查询返回的实际值替换
"sftpcommit",避免拼写或大小写错误。扩大时间范围
日志生成可能存在延迟,把ago(5m)调整为ago(15m)甚至ago(30m),确认是否在时间范围内有匹配的日志。检查日志收集配置
先去掉Uri过滤条件,执行简化版查询:StorageBlobLogs | where Protocol contains "sftp" and OperationName contains "sftpcommit" and TimeGenerated > ago(30m)如果无结果,说明存储账户的诊断日志未正确开启SFTP操作的日志收集,需要确认已在存储账户的诊断设置中开启
StorageBlobLogs,并包含写入类操作。确认RequesterObjectId字段是否存在
暂时把project RequesterObjectId改为project *,查看所有字段,确认该操作是否真的记录了RequesterObjectId(部分认证方式可能不会生成该字段)。
内容的提问来源于stack exchange,提问作者gaurav sharma

