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

Azure Resource Graph中KQL Let子句替换及查询整合需求

解决方案

Azure Resource Graph的KQL子集确实不支持let语句,同时关联查询需要注意ARG的语法限制。以下是针对你的需求的可行方案:

1. 替代Let子句

把原本用let定义的逻辑直接转为子查询(用括号包裹的查询块),嵌入主查询中。

2. 合并安全控制与分数数据

通过join操作,基于安全控制的唯一标识(比如controlId或recommendationName)将两个数据集关联,确保数据对齐。

3. 导出可用的标签字段

使用bag_unpack(tags)将资源的动态标签对象拆分为独立列,这样导出CSV后可直接用于透视表分析;如果标签数量较多或需要保留原始结构,也可以保留tags字段(导出为JSON格式,多数透视工具支持解析)。

完整示例查询

// 子查询1:统计各安全控制下的不健康资源数
SecurityRecommendation
| where status == "Unhealthy"
| summarize unhealthyResourceCount = count() by controlId, recommendationName, category
// 关联分数数据
| join kind=inner (
    // 子查询2:计算各安全控制的最大分数和可提升分数
    SecurityRecommendation
    | summarize maxScore = max(score), scoreToImprove = sum(score) by controlId, recommendationName
) on controlId, recommendationName
// 关联资源标签数据
| join kind=inner (
    Resources
    | project resourceId = id, tags
) on resourceId
// 展开所有标签为独立列
| evaluate bag_unpack(tags)
// 整理输出字段顺序
| project controlId, recommendationName, category, unhealthyResourceCount, maxScore, scoreToImprove, *

关键注意事项

  • 关联键要确保唯一:优先使用controlId+recommendationName组合,避免因重名导致数据错误;如果需要关联到具体资源,用resourceId关联。
  • 性能优化:添加where子句过滤订阅、资源类型或时间范围(比如where subscriptionId == "xxx"),减少查询的数据量,提升速度。
  • 标签处理:如果标签包含特殊字符,bag_unpack会自动将其转换为合法列名(比如空格转为下划线);若不需要拆分,去掉| evaluate bag_unpack(tags)即可保留原始标签对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 02:07:09