You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ARM模板部署Azure Data Explorer脚本解析与执行语法错误排查

问题原因及解决方案

核心问题分析

  1. JSON映射字符串拆分导致语法错误
    你把JSON映射拆成了多行单引号包裹的片段,Azure Data Explorer(ADX)执行KQL命令时,会将这些片段识别为多个独立字符串,而非完整的JSON数组,直接触发语法错误。

  2. 转义符处理冲突
    ARM模板的字符串参数中,双引号的转义规则和KQL命令的JSON格式要求存在冲突:ARM需要用\"转义双引号,而你之前使用的"是HTML转义格式,在ADX执行环境中无法被正确解析为JSON的双引号。

修正后的脚本示例

将整个JSON映射合并为一个完整字符串,并按照ARM的转义规则处理双引号:

.create table telemetry (
    DeviceId: string,
    CreationDateTime: datetime,
    Data: dynamic
)
.alter table telemetry policy streamingingestion enable
.create table telemetry ingestion json mapping 'JsonTelemetryMapping' '[{\"Column\": \"DeviceId\", \"Properties\": {\"Path\": \"$.DeviceId\"}},{\"Column\": \"CreationDateTime\", \"Properties\": {\"Path\": \"$.iothub-enqueuedtime\"}},{\"Column\": \"Data\", \"Properties\": {\"Path\": \"$\"}}]'

如果是在ARM模板的script参数中,需要进一步转义反斜杠,最终写法如下:

"script": ".create table telemetry (DeviceId: string, CreationDateTime: datetime, Data: dynamic) .alter table telemetry policy streamingingestion enable .create table telemetry ingestion json mapping 'JsonTelemetryMapping' '[{\\\"Column\\\": \\\"DeviceId\\\", \\\"Properties\\\": {\\\"Path\\\": \\\"$.DeviceId\\\"}},{\\\"Column\\\": \\\"CreationDateTime\\\", \\\"Properties\\\": {\\\"Path\\\": \\\"$.iothub-enqueuedtime\\\"}},{\\\"Column\\\": \\\"Data\\\", \\\"Properties\\\": {\\\"Path\\\": \\\"$\\\"}}]'"

额外注意事项

  • 先在ADX门户的查询编辑器中测试命令,确认能正常执行后,再转到ARM模板中处理转义,避免格式问题。
  • 若要保留换行,ARM中需用\n转义,但建议合并为单行减少转义复杂度。

内容的提问来源于stack exchange,提问作者Abdelwahed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 12:10:01