将Microsoft Flow API数据导入Azure Log Analytics遇KQL语法错误
解决Azure Log Analytics中KQL mv-apply处理Flow API JSON数组的语法错误
核心用法示例
假设你的日志表中Body是嵌套数组结构,以下是适配Flow JSON数据的正确mv-apply写法:
// 替换为你的实际日志表名 FlowRunLogs // 展开外层Body数组,用别名避免字段名冲突 | mv-apply FlowDetails = Body on ( // 提取Flow顶层属性 project FlowName = FlowDetails.properties.displayName, RunId = FlowDetails.name, RunStatus = FlowDetails.properties.status, // 嵌套展开Flow内的动作数组 mv-apply FlowActions = FlowDetails.properties.actions on ( project ActionName = FlowActions.name, ActionStatus = FlowActions.status, ActionDuration = FlowActions.duration ) ) // 输出最终需要的字段 | project TimeGenerated, FlowName, RunId, RunStatus, ActionName, ActionStatus, ActionDuration
常见语法错误排查
字段别名冲突:
不要直接用原字段名作为mv-apply的别名(比如mv-apply Body = Body on (...)),这会导致内部字段引用混乱,改用FlowDetails这类区分度高的别名。嵌套数组处理不当:
多层嵌套数组必须嵌套使用mv-apply块,每个块仅处理当前层级的数组,不要在同一个块内同时处理多层属性路径。属性路径错误:
Flow API返回的属性通常嵌套在properties节点下,需用FlowDetails.properties.displayName这类完整路径,而非直接引用顶层字段。数据类型不匹配:
先执行以下语句确认Body的类型:FlowRunLogs | take 1 | project Body, BodyType = typeof(Body)如果
Body是字符串类型,需先用parse_json(Body)转换为动态数组后再执行mv-apply。
内容的提问来源于stack exchange,提问作者iDOHandbags
相关产品推荐
相关产品推荐

