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

如何在Azure Resource Graph中使用KQL创建Join关联查询

KQL 关联 policyresources 与 advisorresources 的正确写法

你当前的查询语句缺失join操作的必要参数,无法正常执行:KQL的join需要明确指定关联匹配字段,以及可选但强烈建议显式声明的关联类型。

基础语法规则

KQL join的标准结构如下:

<左表数据集>
| <左表过滤、字段筛选等预处理逻辑>
| join kind=<关联类型> (
    <右表数据集>
    | <右表过滤、字段筛选等预处理逻辑>
  ) on <关联匹配条件>

针对你场景的可运行示例

你要筛选策略集定义类型的资源、关联顾问资源数据,最通用的关联维度是订阅ID(两个表均有subscriptionId字段),如果需要更细粒度匹配也可以替换为资源ID、资源组字段,示例代码:

policyresources
| where type == "microsoft.authorization/policysetdefinitions"
// 提前筛选需要的字段,减少join数据量提升性能
| project PolicySetId = id, PolicySetName = name, PolicySetProperties = properties, subscriptionId
| join kind=inner // 显式指定关联类型
    (
        advisorresources
        // 右表同样提前做字段裁剪、过滤
        | project AdvisorRecId = id, RecommendationContent = properties, subscriptionId, resourceGroup
    )
    on subscriptionId // 指定关联匹配字段

实操注意事项

  • 如果两个表的关联字段名不一致,需要显式指定左右表字段,格式为on $left.左表字段名 == $right.右表字段名,比如左表关联字段为subId、右表为subscriptionId时,匹配条件写为on $left.subId == $right.subscriptionId
  • 常用关联类型按需选择:
    • inner:仅返回两表关联字段能完全匹配的行,是最常用的类型
    • leftouter:返回左表所有行,右表无匹配的字段填null,适合需要保留全部策略集数据、不要求必须有对应顾问资源的场景
    • rightouter/fullouter按需使用,无特殊需求不建议选,会返回大量冗余数据
  • 大表关联前一定要先做过滤和字段裁剪,不要直接全表join,很容易触发查询超时、资源配额超限的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 19:06:41