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

Azure Resource Graph查询:获取双订阅名称遇表引用限制错误

解决Azure Resource Graph多次引用resourcecontainers的限制问题,获取双订阅ID对应名称

问题背景

查询RecoveryServicesResources近7天数据时,需要同时获取subscriptionId和dataSourceSubscriptionId对应的订阅名称,但两次单独引用resourcecontainers表会触发“超出远程表引用次数限制”的错误,且要求纯查询语句、无shell包装器,可集成至第三方工具。

解决方案

核心思路是一次性预查询所有订阅的ID-名称映射表,再通过两次关联操作分别匹配两个订阅ID字段,避免重复引用远程表。

完整查询语句

// 预获取所有订阅的ID与名称映射(仅引用resourcecontainers一次)
let subscriptions = resourcecontainers
| where type == 'microsoft.resources/subscriptions'
| project subscriptionId = id, subscriptionName = name;

// 主查询:获取近7天的RecoveryServicesResources并关联订阅名称
RecoveryServicesResources
| where timeGenerated > ago(7d)
// 关联主订阅ID对应的名称
| join kind=leftouter subscriptions on $left.subscriptionId == $right.subscriptionId
| project-rename mainSubscriptionName = subscriptionName
// 关联数据源订阅ID对应的名称
| join kind=leftouter subscriptions on $left.dataSourceSubscriptionId == $right.subscriptionId
| project-rename dataSourceSubscriptionName = subscriptionName
// 按需保留所需字段,可自行调整
| project 
    subscriptionId,
    mainSubscriptionName,
    dataSourceSubscriptionId,
    dataSourceSubscriptionName,
    name,
    type,
    timeGenerated

关键说明

  1. 避免远程表重复引用:通过let语句定义subscriptions变量,仅执行一次resourcecontainers查询,生成全局可用的订阅映射表,完全符合Azure Resource Graph的限制规则。
  2. 左外连接保证数据完整性:使用kind=leftouter确保即使某个订阅ID已被删除或不存在,原始RecoveryServicesResources数据依然会被保留,不会因关联失败丢失记录。
  3. 字段重命名避免冲突:两次关联后通过project-rename分别重命名订阅名字段,防止字段名重复导致的查询错误。
  4. 兼容性强:纯Kusto查询语句,无需额外脚本或包装器,可直接在Azure Portal、Azure CLI、PowerShell,以及Grafana、Logic Apps等第三方集成工具中使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 09:32:43