Arbeiten mit großen Datasets von Azure-Ressourcen
Azure Resource Graph ist für das Arbeiten mit Informationen zu Ressourcen in Ihrer Azure-Umgebung und das Abrufen von diesen konzipiert. Mit Resource Graph erhalten Sie diese Daten schnell, selbst beim Abfragen von Tausenden von Datensätzen. Resource Graph umfasst mehrere Optionen für das Arbeiten mit diesen großen Datasets.
Anleitungen zum Arbeiten mit sehr häufigen Abfragen finden Sie im Leitfaden für gedrosselte Anforderungen.
Ergebnisgröße von Datasets
Standardmäßig sind in Resource Graph alle Abfragen so beschränkt, dass nur 1.000 Datensätze zurückgegeben werden. Durch diese Steuerung werden sowohl Benutzer als auch der Dienst vor unbeabsichtigten Abfragen geschützt, die zu großen Datasets führen. Dieser Fall tritt meistens auf, wenn ein Kunde Abfragen testet, um Ressourcen seinen speziellen Anforderungen entsprechend zu suchen und zu filtern. Dieses Steuerelement unterscheidet sich von der Verwendung der Azure Data Explorer-Sprachoperatoren top und limit zum Einschränken der Ergebnisse.
Hinweis
Bei Verwendung von first
empfiehlt es sich, die Ergebnisse mit asc
oder desc
nach mindestens einer Spalte zu sortieren. Ohne Sortierung sind die zurückgegebenen Ergebnisse zufällig und nicht wiederholbar.
Das Standardlimit kann über alle Methoden für die Interaktion mit Resource Graph überschrieben werden. Die folgenden Beispiele zeigen, wie die Größenbeschränkung von Datasets in 200 geändert wird:
az graph query -q "Resources | project name | order by name asc" --first 200 --output table
Search-AzGraph -Query "Resources | project name | order by name asc" -First 200
In der REST-API wird das Steuerelement $top
verwendet, das Teil von QueryRequestOptions
ist.
Das jeweils restriktivste Steuerelement hat Vorrang. Wenn in Ihrer Abfrage beispielsweise der Operator top
oder limit
verwendet wird und mehr Datensätze gefunden werden als gemäß first
zulässig sind, entspricht die maximale Anzahl zurückgegebener Datensätze der durch first
vorgegebenen Anzahl. Umgekehrt gilt, dass wenn top
oder limit
kleiner als first
ist, die Größe der Datensatzgruppe jeweils dem niedrigsten der über top
und limit
konfigurierten Werte entspricht.
Für den Parameter first
ist als maximal zulässiger Wert 1.000 festgelegt.
Größenbeschränkung für CSV-Exportergebnisse
Wenn Sie die Funktion für CSV-Exporte des Azure Resource Graph-Explorers nutzen, ist das Resultset auf 55.000 Datensätze beschränkt. Diese Einschränkung ist ein Plattformgrenzwert, der nicht durch Einsenden eines Azure-Supporttickets außer Kraft gesetzt werden kann.
Um CSV-Ergebnisse aus dem Azure-Portal herunterzuladen, navigieren Sie zum Azure Resource Graph-Explorer, und führen Sie eine Abfrage aus. Wählen Sie auf der Symbolleiste Als CSV herunterladen aus.
Überspringen von Datensätzen
Eine weitere Option für das Arbeiten mit großen Datasets ist das Steuerelement skip
. Über dieses Steuerelement kann bei der Abfrage die definierte Anzahl von Datensätzen vor dem Zurückgeben der Ergebnisse übersprungen werden. Skip
eignet sich für Abfragen, bei denen die Ergebnisse auf sinnvolle Weise sortiert werden, um so Datensätze abzurufen, die sich irgendwo in der Mitte des Resultsets befinden. Wenn sich die erforderlichen Ergebnisse am Ende des zurückgegebenen Datasets befinden, ist es effizienter, eine andere Sortierungskonfiguration zu verwenden und stattdessen die Ergebnisse vom Anfang des Datasets abzurufen.
Hinweis
Bei Verwendung von skip
empfiehlt es sich, die Ergebnisse mit asc
oder desc
nach mindestens einer Spalte zu sortieren. Ohne Sortierung sind die zurückgegebenen Ergebnisse zufällig und nicht wiederholbar. Wenn in der Abfrage limit
oder take
verwendet wird, wird skip
ignoriert.
Die folgenden Beispiele zeigen, wie die ersten 10 Datensätze übersprungen werden, die sich bei einer Abfrage ergeben, anstatt das zurückgegebene Resultset mit dem 11. Datensatz zu beginnen:
az graph query -q "Resources | project name | order by name asc" --skip 10 --output table
Search-AzGraph -Query "Resources | project name | order by name asc" -Skip 10
In der REST-API wird das Steuerelement $skip
verwendet, das Teil von QueryRequestOptions
ist.
Auslagerungsergebnisse
Wenn es erforderlich ist, ein Resultset in kleinere Datensatzgruppen zu unterteilen, um sie zu verarbeiten oder weil das Resultset den maximal zulässigen Wert von 1000 zurückgegebenen Datensätzen überschreitet, verwenden Sie die Paginierung. Die REST-API QueryResponse
stellt Werte bereit, die angeben, dass ein Resultset aufgeteilt wurde: resultTruncated
und $skipToken
. resultTruncated
ist ein boolescher Wert, über den der Consumer informiert wird, wenn weitere Datensätze vorhanden sind, die in der Antwort nicht zurückgegeben werden. Diese Bedingung kann auch erkannt werden, wenn der Wert der Eigenschaft count
kleiner ist als der Wert der Eigenschaft totalRecords
. totalRecords
definiert die Anzahl der Datensätze, die mit der Abfrage übereinstimmen.
resultTruncated
ist true
, wenn weniger Ressourcen verfügbar sind als von einer Abfrage angefordert werden oder wenn Paginierung deaktiviert oder aus folgenden Gründen nicht möglich ist:
- Die Abfrage enthält einen
limit
- odersample
/take
-Operator. - Alle Ausgabespalten sind vom Typ
dynamic
odernull
.
Wenn resultTruncated
den Wert true
aufweist, wird die Eigenschaft $skipToken
nicht festgelegt.
Die folgenden Beispiele zeigen, wie Sie mit der Azure CLI und Azure PowerShell die ersten 3.000 Datensätze überspringen und die ersten (first
) 1.000 Datensätze nach den übersprungenen Datensätzen zurückgeben:
az graph query -q "Resources | project id, name | order by id asc" --first 1000 --skip 3000
Search-AzGraph -Query "Resources | project id, name | order by id asc" -First 1000 -Skip 3000
Wichtig
Die Antwort enthält in folgenden Fällen $skipToken
nicht:
- Die Abfrage enthält einen
limit
- odersample
/take
-Operator. - Alle Ausgabespalten sind vom Typ
dynamic
odernull
.
Ein Beispiel finden Sie in der REST-API-Dokumentation unter Abfrage der nächsten Seite.
Formatieren von Ergebnissen
Die Ergebnisse einer Resource Graph-Abfrage werden in zwei Formaten bereitgestellt: Table
und ObjectArray
. Das Format wird als Teil der Anforderungsoptionen mit dem Parameter resultFormat
konfiguriert. Das Format Table
ist der Standardwert für resultFormat
.
Ergebnisse von Azure CLI werden standardmäßig im JSON-Format bereitgestellt. In Azure PowerShell handelt es sich bei den Ergebnissen um ein PSResourceGraphResponse
-Objekt, das jedoch schnell in JSON konvertiert werden kann, indem das Cmdlet ConvertTo-Json
für die Eigenschaft data
verwendet wird. Bei anderen SDKs kann konfiguriert werden, dass die Abfrageergebnisse im ObjectArray
-Format ausgegeben werden.
Format „Table“
Beim Standardformat Table
werden die Ergebnisse in einem JSON-Format zurückgegeben, das so konzipiert ist, dass die Spaltenstruktur und die Zeilenwerte der Eigenschaften hervorgehoben werden, die für die Abfrage zurückgegeben werden. Dieses Format ähnelt Daten, die in einer strukturierten Tabelle oder Kalkulationstabelle definiert sind, wobei die Spalten zuerst angegeben sind, gefolgt von den einzelnen Zeilen zur Darstellung der Daten, die diesen Spalten zugeordnet sind.
Hier sehen Sie ein Beispiel für ein Abfrageergebnis mit der Table
-Formatierung:
{
"totalRecords": 47,
"count": 1,
"data": {
"columns": [
{
"name": "name",
"type": "string"
},
{
"name": "type",
"type": "string"
},
{
"name": "location",
"type": "string"
},
{
"name": "subscriptionId",
"type": "string"
}
],
"rows": [
[
"veryscaryvm2-nsg",
"microsoft.network/networksecuritygroups",
"eastus",
"11111111-1111-1111-1111-111111111111"
]
]
},
"facets": [],
"resultTruncated": "true"
}
Format „ObjectArray“
Beim ObjectArray
-Format werden ebenfalls Ergebnisse in einem JSON-Format zurückgegeben. Dieser Entwurf richtet sich jedoch nach der in JSON üblichen Schlüssel-Wert-Paarbeziehung, wobei die Spalten und die Zeilendaten in Arraygruppen abgeglichen werden.
Hier sehen Sie ein Beispiel für ein Abfrageergebnis mit der ObjectArray
-Formatierung:
{
"totalRecords": 47,
"count": 1,
"data": [
{
"name": "veryscaryvm2-nsg",
"type": "microsoft.network/networksecuritygroups",
"location": "eastus",
"subscriptionId": "11111111-1111-1111-1111-111111111111"
}
],
"facets": [],
"resultTruncated": "true"
}
Abfragetimeout
Azure Resource Graph erzwingt ein an Azure Resource Manager angepasstes Abfragetimeout nach 30 Sekunden.
Lösungsvorschläge:
- Wiederholen Sie die Abfrage mit einem kleineren Bereich. Fragen Sie beispielsweise weniger Abonnements ab.
- Bei Abfragen, in denen
join
verwendet wird, sollten auf der linken Seite vonjoin
kleinere Resultsets stehen.
Nächste Schritte
- Lesen Sie sich weitere Informationen unter Grundlegendes zur Azure Resource Graph-Abfragesprache durch.
- Erfahren Sie mehr über das Erkunden von Ressourcen.