Grundlegendes zur Azure Resource Graph-AbfragespracheUnderstanding the Azure Resource Graph query language

Die Abfragesprache für Azure Resource Graph unterstützt eine Reihe von Operatoren und Funktionen.The query language for the Azure Resource Graph supports a number of operators and functions. Diese arbeiten und funktionieren auf Grundlage der Abfragesprache Kusto (Kusto Query Language, KQL).Each work and operate based on Kusto Query Language (KQL). Wenn Sie mehr über die von Resource Graph verwendete Abfragesprache erfahren möchten, beginnen Sie mit dem Tutorial für KQL.To learn about the query language used by Resource Graph, start with the tutorial for KQL.

In diesem Artikel werden die von Resource Graph unterstützten Sprachkomponenten behandelt:This article covers the language components supported by Resource Graph:

Resource Graph-TabellenResource Graph tables

Resource Graph umfasst mehrere Tabellen für die Daten, die in Bezug auf Azure Resource Manager-Ressourcentypen und deren Eigenschaften gespeichert werden.Resource Graph provides several tables for the data it stores about Azure Resource Manager resource types and their properties. Einige Tabellen können mit den Operatoren join oder union verwendet werden, um Eigenschaften von verknüpften Ressourcentypen zu erhalten.Some tables can be used with join or union operators to get properties from related resource types. Es folgt eine Liste der in Resource Graph verfügbaren Tabellen:Here is the list of tables available in Resource Graph:

Resource Graph-TabelleResource Graph table Ist ein join für andere Tabellen möglich?Can join other tables? BESCHREIBUNGDescription
RessourcenResources JaYes Die Standardtabelle, wenn keine in der Abfrage definiert ist.The default table if none defined in the query. Die meisten Resource Manager-Ressourcentypen und -Eigenschaften sind hier enthalten.Most Resource Manager resource types and properties are here.
ResourceContainersResourceContainers JaYes Umfasst die Ressourcentypen und Daten des Abonnements (in der Vorschauphase – Microsoft.Resources/subscriptions) und der Ressourcengruppe (Microsoft.Resources/subscriptions/resourcegroups).Includes subscription (in preview -- Microsoft.Resources/subscriptions) and resource group (Microsoft.Resources/subscriptions/resourcegroups) resource types and data.
AdvisorResourcesAdvisorResources Ja (Vorschau)Yes (preview) Umfasst Ressourcen, die mit Microsoft.Advisorin Zusammenhang stehen.Includes resources related to Microsoft.Advisor.
AlertsManagementResourcesAlertsManagementResources Ja (Vorschau)Yes (preview) Umfasst Ressourcen, die mit Microsoft.AlertsManagementin Zusammenhang stehen.Includes resources related to Microsoft.AlertsManagement.
ExtendedLocationResourcesExtendedLocationResources NeinNo Umfasst Ressourcen, die mit Microsoft.ExtendedLocationin Zusammenhang stehen.Includes resources related to Microsoft.ExtendedLocation.
GuestConfigurationResourcesGuestConfigurationResources NeinNo Umfasst Ressourcen, die mit Microsoft.GuestConfigurationin Zusammenhang stehen.Includes resources related to Microsoft.GuestConfiguration.
KubernetesConfigurationResourcesKubernetesConfigurationResources NeinNo Umfasst Ressourcen, die mit Microsoft.KubernetesConfigurationin Zusammenhang stehen.Includes resources related to Microsoft.KubernetesConfiguration.
MaintenanceResourcesMaintenanceResources Teilweise, nur Beitritt zu.Partial, join to only. (Vorschauversion)(preview) Umfasst Ressourcen, die mit Microsoft.Maintenancein Zusammenhang stehen.Includes resources related to Microsoft.Maintenance.
PatchAssessmentResourcesPatchAssessmentResources NoNo Umfasst Ressourcen im Zusammenhang mit der Azure Virtual Machines-Patchbewertung.Includes resources related to Azure Virtual Machines patch assessment.
PatchInstallationResourcesPatchInstallationResources NeinNo Umfasst Ressourcen im Zusammenhang mit der Azure Virtual Machines-Patchinstallation.Includes resources related to Azure Virtual Machines patch installation.
PolicyResourcesPolicyResources NeinNo Umfasst Ressourcen, die mit Microsoft.PolicyInsightsin Zusammenhang stehen.Includes resources related to Microsoft.PolicyInsights. (Vorschau)(Preview)
RecoveryServicesResourcesRecoveryServicesResources Teilweise, nur Beitritt zu.Partial, join to only. (Vorschauversion)(preview) Umfasst Ressourcen im Zusammenhang mit Microsoft.DataProtection und Microsoft.RecoveryServices.Includes resources related to Microsoft.DataProtection and Microsoft.RecoveryServices.
SecurityResourcesSecurityResources Teilweise, nur Beitritt zu.Partial, join to only. (Vorschauversion)(preview) Umfasst Ressourcen, die mit Microsoft.Securityin Zusammenhang stehen.Includes resources related to Microsoft.Security.
ServiceHealthResourcesServiceHealthResources NeinNo Umfasst Ressourcen, die mit Microsoft.ResourceHealthin Zusammenhang stehen.Includes resources related to Microsoft.ResourceHealth.
WorkloadMonitorResourcesWorkloadMonitorResources NeinNo Umfasst Ressourcen, die mit Microsoft.WorkloadMonitorin Zusammenhang stehen.Includes resources related to Microsoft.WorkloadMonitor.

Eine komplette Liste, einschließlich Ressourcentypen, finden Sie unter Azure Resource Graph-Tabelle und Ressourcentypreferenz.For a complete list, including resource types, see Reference: Supported tables and resource types.

Hinweis

Resources ist die Standardtabelle.Resources is the default table. Beim Abfragen der Tabelle Resources muss der Tabellenname nicht angegeben werden, es sei denn, join oder union wird verwendet.While querying the Resources table, it isn't required to provide the table name unless join or union are used. Es wird jedoch empfohlen, immer die anfängliche Tabelle in die Abfrage einzubeziehen.However, the recommended practice is to always include the initial table in the query.

Verwenden Sie den Resource Graph-Explorer im Portal, um zu ermitteln, welche Ressourcentypen in den einzelnen Tabellen verfügbar sind.Use Resource Graph Explorer in the portal to discover what resource types are available in each table. Sie können auch eine Abfrage verwenden (z.B. <tableName> | distinct type), um eine Liste von Ressourcentypen zu erhalten, die von der angegebenen Resource Graph-Tabelle unterstützt werden und in Ihrer Umgebung vorhanden sind.As an alternative, use a query such as <tableName> | distinct type to get a list of resource types the given Resource Graph table supports that exist in your environment.

Die folgende Abfrage zeigt eine einfache Verwendung von join.The following query shows a simple join. Im Abfrageergebnis sind die Spalten kombiniert, und an alle doppelten Spaltennamen aus der verknüpften Tabelle (ResourceContainers in diesem Beispiel) wird 1 angehängt.The query result blends the columns together and any duplicate column names from the joined table, ResourceContainers in this example, are appended with 1. Da die Tabelle ResourceContainers Typen für Abonnements und Ressourcengruppen enthält, können beide Typen zum Verknüpfen der Ressource aus der Tabelle Resources verwendet werden.As ResourceContainers table has types for both subscriptions and resource groups, either type might be used to join to the resource from Resources table.

Resources
| join ResourceContainers on subscriptionId
| limit 1

Die folgende Abfrage zeigt eine komplexere Verwendung von join.The following query shows a more complex use of join. Zuerst verwendet die Abfrage project, um die Felder aus Resources für den Ressourcentyp „Azure Key Vault-Tresore“ abzurufen.First, the query uses project to get the fields from Resources for the Azure Key Vault vaults resource type. Im nächsten Schritt werden die Ergebnisse mithilfe von join mit ResourceContainers zusammengeführt, wobei es sich bei dem Typ um ein Abonnement für eine Eigenschaft handelt, die sich sowohl im project der ersten Tabelle als auch im project der verbundenen Tabelle befindet.The next step uses join to merge the results with ResourceContainers where the type is a subscription on a property that is both in the first table's project and the joined table's project. Durch das Umbenennen des Felds wird das Hinzufügen als name1 bei join vermieden, da die Eigenschaft bereits unter Resources projiziert ist.The field rename avoids join adding it as name1 since the property already is projected from Resources. Das Abfrageergebnis ist ein einzelner Schlüsseltresor, der den Typ, den Namen, den Speicherort und die Ressourcengruppe des Schlüsseltresors sowie den Namen des Abonnements anzeigt, in dem er sich befindet.The query result is a single key vault displaying type, the name, location, and resource group of the key vault, along with the name of the subscription it's in.

Resources
| where type == 'microsoft.keyvault/vaults'
| project name, type, location, subscriptionId, resourceGroup
| join (ResourceContainers | where type=='microsoft.resources/subscriptions' | project SubName=name, subscriptionId) on subscriptionId
| project type, name, location, resourceGroup, SubName
| limit 1

Hinweis

Wenn Sie die Ergebnisse von join mit project einschränken, muss die Eigenschaft, die von join zum Verknüpfen der beiden Tabellen verwendet wird (subscriptionId im obigen Beispiel), in project enthalten sein.When limiting the join results with project, the property used by join to relate the two tables, subscriptionId in the above example, must be included in project.

Erweiterte Eigenschaften (Vorschau)Extended properties (preview)

Als Previewfunktion verfügen einige der Ressourcentypen in Resource Graph über zusätzliche typbezogene Eigenschaften, die über die von Azure Resource Manager bereitgestellten Eigenschaften hinaus abgefragt werden können.As a preview feature, some of the resource types in Resource Graph have additional type-related properties available to query beyond the properties provided by Azure Resource Manager. Dieser Satz von Werten, bekannt als erweiterte Eigenschaften, existiert auf einem unterstützten Ressourcentyp in properties.extended.This set of values, known as extended properties, exists on a supported resource type in properties.extended. Verwenden Sie die folgende Abfrage, um zu ermitteln, welche Ressourcentypen über erweiterte Eigenschaften verfügen:To see which resource types have extended properties, use the following query:

Resources
| where isnotnull(properties.extended)
| distinct type
| order by type asc

Beispiel: Abrufen der Anzahl virtueller Computer über instanceView.powerState.code:Example: Get count of virtual machines by instanceView.powerState.code:

Resources
| where type == 'microsoft.compute/virtualmachines'
| summarize count() by tostring(properties.extended.instanceView.powerState.code)

Benutzerdefinierte Sprachelemente in Resource GraphResource Graph custom language elements

Syntax für freigegebene Abfragen (Vorschauversion)Shared query syntax (preview)

Als Previewfunktion kann der Zugriff auf eine freigegebene Abfrage direkt in einer Resource Graph-Abfrage erfolgen.As a preview feature, a shared query can be accessed directly in a Resource Graph query. Dieses Szenario ermöglicht es, Standardabfragen als freigegebene Abfragen zu erstellen und wiederzuverwenden.This scenario makes it possible to create standard queries as shared queries and reuse them. Verwenden Sie die Syntax {{shared-query-uri}}, um eine freigegebene Abfrage innerhalb einer Resource Graph-Abfrage aufzurufen.To call a shared query inside a Resource Graph query, use the {{shared-query-uri}} syntax. Der URI der freigegebenen Abfrage entspricht der Ressourcen-ID der freigegebenen Abfrage auf der Seite Einstellungen für diese Abfrage.The URI of the shared query is the Resource ID of the shared query on the Settings page for that query. In diesem Beispiel ist /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS der URI für die freigegebene Abfrage.In this example, our shared query URI is /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS. Dieser URI verweist auf das Abonnement, die Ressourcengruppe und den vollständigen Namen der freigegebenen Abfrage, auf die in einer anderen Abfrage verwiesen werden soll.This URI points to the subscription, resource group, and full name of the shared query we want to reference in another query. Diese Abfrage ist identisch mit der Abfrage, die unter Tutorial: Erstellen und Freigeben einer Abfrage erstellt wird.This query is the same as the one created in Tutorial: Create and share a query.

Hinweis

Eine Abfrage, die auf eine freigegebene Abfrage verweist, kann nicht als freigegebene Abfrage gespeichert werden.You can't save a query that references a shared query as a shared query.

Beispiel 1: Alleiniges Verwenden der freigegebenen AbfrageExample 1: Use only the shared query

Die Ergebnisse dieser Resource Graph-Abfrage sind identisch mit denen der in der freigegebenen Abfrage gespeicherten.The results of this Resource Graph query are the same as the query stored in the shared query.

{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}

Beispiel 2: Einfügen der freigegebenen Abfrage als Teil einer größeren AbfrageExample 2: Include the shared query as part of a larger query

Bei dieser Abfrage wird zunächst die freigegebene Abfrage und dann limit verwendet, um die Ergebnisse weiter einzugrenzen.This query first uses the shared query, and then uses limit to further restrict the results.

{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
| where properties_storageProfile_osDisk_osType =~ 'Windows'

Unterstützte KQL-SprachelementeSupported KQL language elements

Resource Graph unterstützt eine Teilmenge von Datentypen, Skalarfunktionen, Skalaroperatoren und Aggregationsfunktionen von KQL.Resource Graph supports a subset of KQL data types, scalar functions, scalar operators, and aggregation functions. Es werden bestimmte tabellarische Operatoren von Resource Graph unterstützt, von denen einige unterschiedliche Verhaltensweisen aufweisen.Specific tabular operators are supported by Resource Graph, some of which have different behaviors.

Unterstützte tabellarische Operatoren und Operatoren auf oberster EbeneSupported tabular/top level operators

Es folgt eine Liste der von Resource Graph unterstützten tabellarischen KQL-Operatoren mit spezifischen Beispielen:Here is the list of KQL tabular operators supported by Resource Graph with specific samples:

KQLKQL Resource Graph-BeispielabfrageResource Graph sample query NotizenNotes
countcount Anzahl von SchlüsseltresorenCount key vaults
distinctdistinct Anzeigen von Ressourcen, die Speicher enthaltenShow resources that contain storage
extendextend Anzahl von virtuellen Computern nach BetriebssystemtypCount virtual machines by OS type
joinjoin Schlüsseltresor mit AbonnementnameKey vault with subscription name Unterstützte Joinvarianten: innerunique, inner, leftouter.Join flavors supported: innerunique, inner, leftouter. Begrenzt auf 3 join in einer einzelnen Abfrage, von denen einer ein tabellenübergreifender join sein kann.Limit of 3 join in a single query, 1 of which may be a cross-table join. Wenn alle tabellenübergreifenden join-Vorgänge zwischen Resource und ResourceContainers stattfinden, sind drei tabellenübergreifende join zulässig.If all cross-table join use is between Resource and ResourceContainers, then 3 cross-table join are allowed. Benutzerdefinierte Joinstrategien wie Broadcastjoin sind nicht zulässig.Custom join strategies, such as broadcast join, aren't allowed. Welche Tabellen join verwenden können, erfahren Sie unter Resource Graph-Tabellen.For which tables can use join, see Resource Graph tables.
limitlimit Liste der öffentlichen IP-AdressenList all public IP addresses Synonym für take.Synonym of take. Funktioniert nicht für Skip.Doesn't work with Skip.
mvexpandmvexpand Legacy-Operator, verwenden Sie stattdessen mv-expand.Legacy operator, use mv-expand instead. RowLimit maximal 400.RowLimit max of 400. Der Standardwert ist 128.The default is 128.
mv-expandmv-expand Auflisten von Cosmos DB mit bestimmten SchreibstandortenList Cosmos DB with specific write locations RowLimit maximal 400.RowLimit max of 400. Der Standardwert ist 128.The default is 128. Maximal zwei mv-expand-Elemente in einer einzelnen Abfrage.Limit of 2 mv-expand in a single query.
orderorder Auflisten von Ressourcen nach Namen sortiertList resources sorted by name Synonym für sortSynonym of sort
projectproject Auflisten von Ressourcen nach Namen sortiertList resources sorted by name
project-awayproject-away Entfernen von Spalten aus den ErgebnissenRemove columns from results
sortsort Auflisten von Ressourcen nach Namen sortiertList resources sorted by name Synonym für orderSynonym of order
summarizesummarize Anzahl der Azure-RessourcenCount Azure resources Nur vereinfachte erste SeiteSimplified first page only
taketake Liste der öffentlichen IP-AdressenList all public IP addresses Synonym für limit.Synonym of limit. Funktioniert nicht für Skip.Doesn't work with Skip.
toptop Anzeigen der ersten fünf virtuellen Computer nach Name und BS-TypShow first five virtual machines by name and their OS type
unionunion Vereinen von Ergebnissen aus zwei Abfragen in einem einzigen ErgebnisCombine results from two queries into a single result Einzelne Tabelle zulässig: T | union [kind= inner|outer] [withsource=ColumnName] Table.Single table allowed: T | union [kind= inner|outer] [withsource=ColumnName] Table. Maximal drei union-Verzweigungen in einer einzelnen Abfrage.Limit of 3 union legs in a single query. Fuzzyauflösung von union-Verzweigungstabellen ist nicht zulässig.Fuzzy resolution of union leg tables isn't allowed. Kann innerhalb einer einzelnen Tabelle oder zwischen den Tabellen Resources und ResourceContainers verwendet werden.May be used within a single table or between the Resources and ResourceContainers tables.
wherewhere Anzeigen von Ressourcen, die Speicher enthaltenShow resources that contain storage

Es gibt eine Standardbegrenzung auf 3 join und 3 mv-expand-Operatoren in einer einzelnen Resource Graph-SDK-Abfrage.There is a default limit of 3 join and 3 mv-expand operators in a single Resource Graph SDK query. Sie können eine Erhöhung dieser Grenzwerte für Ihren Mandanten über Hilfe und Support anfordern.You can request an increase in these limits for your tenant through Help + support.

Zur Unterstützung der Portalfunktion „Abfrage öffnen“ weist der Azure Resource Graph-Explorer einen höheren globalen Grenzwert als das Resource Graph-SDK auf.To support the "Open Query" portal experience, Azure Resource Graph Explorer has a higher global limit than Resource Graph SDK.

AbfragebereichQuery scope

Der Bereich der Abonnements, aus denen Ressourcen von einer Abfrage zurückgegeben werden, hängt von der Methode des Zugriffs auf Resource Graph ab.The scope of the subscriptions from which resources are returned by a query depend on the method of accessing Resource Graph. Azure CLI und Azure PowerShell füllen die Liste der Abonnements, die in die Anforderung eingeschlossen werden sollen, basierend auf dem Kontext des autorisierten Benutzers auf.Azure CLI and Azure PowerShell populate the list of subscriptions to include in the request based on the context of the authorized user. Die Liste der Abonnements kann jeweils manuell mit dem Parameter subscriptions bzw. Subscription definiert werden.The list of subscriptions can be manually defined for each with the subscriptions and Subscription parameters, respectively. In der REST-API und allen anderen SDKs muss die Liste der Abonnements, aus denen Ressourcen eingeschlossen werden sollen, explizit als Teil der Anforderung definiert werden.In REST API and all other SDKs, the list of subscriptions to include resources from must be explicitly defined as part of the request.

Als Vorschau fügt die REST-API-Version 2020-04-01-preview eine Eigenschaft hinzu, um die Abfrage auf eine Verwaltungsgruppe zu beschränken.As a preview, REST API version 2020-04-01-preview adds a property to scope the query to a management group. In dieser Vorschau-API ist außerdem die Abonnementeigenschaft optional.This preview API also makes the subscription property optional. Wenn weder eine Verwaltungsgruppe noch eine Abonnementliste definiert ist, umfasst der Abfragebereich alle Ressourcen, auf die der authentifizierte Benutzer zugreifen kann, einschließlich delegierter Azure Lighthouse-Ressourcen.If a management group or a subscription list isn't defined, the query scope is all resources, which includes Azure Lighthouse delegated resources, that the authenticated user can access. Die neue Eigenschaft managementGroupId übernimmt die Verwaltungsgruppen-ID, die sich von dem Namen der Verwaltungsgruppe unterscheidet.The new managementGroupId property takes the management group ID, which is different from the name of the management group. Wenn managementGroupId angegeben ist, werden Ressourcen aus den ersten 5000 Abonnements in oder unter der angegebenen Verwaltungsgruppenhierarchie eingeschlossen.When managementGroupId is specified, resources from the first 5000 subscriptions in or under the specified management group hierarchy are included. managementGroupId kann nicht gleichzeitig mit subscriptions verwendet werden.managementGroupId can't be used at the same time as subscriptions.

Beispiel: Abfragen aller Ressourcen in der Hierarchie der Verwaltungsgruppe mit Namen „My Management Group“ mit der ID „myMG“Example: Query all resources within the hierarchy of the management group named 'My Management Group' with ID 'myMG'.

  • REST-API-URIREST API URI

    POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2020-04-01-preview
    
  • AnforderungstextRequest Body

    {
        "query": "Resources | summarize count()",
        "managementGroupId": "myMG"
    }
    

Escape-ZeichenEscape characters

Einige Eigenschaftennamen, etwa diejenigen, die einen . oder ein $ enthalten, müssen in einer Abfrage umhüllt oder mit Escapezeichen versehen sein. Andernfalls wird der jeweilige Eigenschaftenname falsch interpretiert, sodass nicht die erwarteten Ergebnisse bereitgestellt werden.Some property names, such as those that include a . or $, must be wrapped or escaped in the query or the property name is interpreted incorrectly and doesn't provide the expected results.

  • . – Umhüllen Sie den Namen der jeweiligen Eigenschaft: ['propertyname.withaperiod']. - Wrap the property name as such: ['propertyname.withaperiod']

    Beispielabfrage, in der die Eigenschaft odata.type umhüllt ist:Example query that wraps the property odata.type:

    where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.['odata.type']
    
  • $ – Versehen Sie den Namen der jeweiligen Eigenschaft mit einem Escapezeichen.$ - Escape the character in the property name. Welches Escapezeichen verwendet wird, hängt von der Shell, in der Ressource Graph ausgeführt wird.The escape character used depends on the shell Resource Graph is run from.

    • Bash - \bash - \

      Beispielabfrage, in der die Eigenschaft $type in Bash mit einem Escapezeichen versehen ist:Example query that escapes the property $type in bash:

      where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.\$type
      
    • cmd – Versehen Sie das $-Zeichen nicht mit einem Escapezeichen.cmd - Don't escape the $ character.

    • PowerShell - `PowerShell - `

      Beispielabfrage, in der die Eigenschaft $type in PowerShell mit einem Escapezeichen versehen ist:Example query that escapes the property $type in PowerShell:

      where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.`$type
      

Nächste SchritteNext steps