Bicep多行字符串插值失效,工作簿提示参数未赋值求助
解决Bicep插入变量到多行字符串的参数未赋值问题
问题根源
你之前的写法存在两个核心问题:
- 手动添加
\r\n的单引号多行字符串易出现转义错误,导致最终生成的KQL查询格式异常 - 在JSON字段中再次用
"${sourceQuery1}"包裹变量,引发双重插值冲突,导致工作簿无法正确识别自身参数{SyncTableRowId}
修正方案
1. 用Bicep Heredoc语法定义KQL查询
Heredoc语法("""包裹)支持直接编写多行文本,自动处理换行,同时精准区分Bicep变量插值和工作簿自有参数:
param sourceDataCloudRoleName string param sourceDataOperationName string var sourceQuery1 = """ traces | extend prop_syncTableRowIds_array = parse_json(customDimensions.prop__syncRowIds) | mv-expand prop_syncRowIds_array | where tostring(prop_syncTableRowIds_array) contains {SyncTableRowId} | where cloud_RoleName =~ "${sourceDataCloudRoleName}" and operation_Name =~ "${sourceDataOperationName}" """
2. 直接在JSON结构中引用Bicep变量
无需在JSON的query字段中再次用字符串插值包裹变量,直接引用即可:
{ "type": 3, "content": { "version": "KqlItem/1.0", "query": sourceQuery1, "size": 0, "title": "Search by \"SyncRowId\"", "timeContextFromParameter": "TimeRange", "queryType": 0, "resourceType": "microsoft.insights/components" }, "name": "query - 1" }
关键说明
- Heredoc语法自动保留文本格式,无需手动添加
\r\n,彻底避免转义错误 - Bicep会自动替换
${sourceDataCloudRoleName}和${sourceDataOperationName}的值,同时完整保留工作簿的{SyncTableRowId}参数,确保工作簿运行时能正常识别并使用该参数
内容的提问来源于stack exchange,提问作者Thor
相关产品推荐
相关产品推荐

