Práce s velkými datovými sadami prostředků Azure
Azure Resource Graph je navržený pro práci s prostředky ve vašem prostředí Azure a získávání informací o prostředcích. Služba Resource Graph umožňuje rychle získat tato data i při dotazování tisíců záznamů. Resource Graph nabízí několik možností pro práci s těmito velkými datovými sadami.
Pokyny k práci s dotazy s vysokou frekvencí najdete v části Pokyny pro omezené požadavky.
Velikost výsledku datové sady
Resource Graph ve výchozím nastavení omezuje jakýkoli dotaz na vrácení pouze 1 000 záznamů. Tento kontrolní mechanismus chrání uživatele i službu před neúmyslnými dotazy, jejichž výsledkem by byly rozsáhlé datové sady. K tomu nejčastěji dojde, když zákazník experimentuje s dotazy a hledá a filtruje prostředky způsobem, který vyhovuje jeho konkrétním potřebám. Tento kontrolní mechanismus se liší od použití operátorů top nebo limit jazyka Azure Data Explorer sloužícím k omezení výsledků.
Poznámka:
Při použití first
se doporučuje výsledky uspořádat alespoň podle jednoho sloupce s asc
nebo desc
. Bez seřazení jsou vrácené výsledky náhodné a neopakovatelné.
Výchozí limit je možné přepsat všemi metodami interakce se službou Resource Graph. Následující příklady ukazují, jak změnit limit velikosti sady dat na 200:
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
V rozhraní REST API je $top
ovládací prvek a je součástí QueryRequestOptions
.
Ovládací prvek, který je nejvíce omezující vyhrává. Pokud například dotaz používá operátory nebo operátory top
a výsledkem by bylo více záznamů než first
, maximální vrácené záznamy by se rovna first
.limit
Podobně pokud top
je nebo limit
je menší než first
, vrácená sada záznamů by byla menší hodnotou nakonfigurovanou top
hodnotou nebo limit
.
Parametr first
má maximální povolenou hodnotu 1 000.
Omezení velikosti výsledků exportu csv
Při použití funkce exportu hodnot oddělených čárkami (CSV) v Azure Resource Graph Exploreru je sada výsledků omezená na 55 000 záznamů. Toto omezení je limit platformy, který nejde přepsat vyplněním lístku podpora Azure.
Pokud chcete stáhnout výsledky sdíleného svazku clusteru z webu Azure Portal, přejděte do Azure Resource Graph Exploreru a spusťte dotaz. Na panelu nástrojů vyberte Stáhnout jako CSV.
Přeskakování záznamů
Další možností pro práci s velkými datovými sadami je skip
ovládací prvek. Tento ovládací prvek umožňuje dotazu přeskočit nebo přeskočit definovaný počet záznamů před vrácením výsledků. Skip
je užitečná pro dotazy, které seřadí výsledky smysluplným způsobem, kde je záměr získat záznamy někde uprostřed sady výsledků. Pokud jsou potřebné výsledky na konci vrácené datové sady, je efektivnější použít jinou konfiguraci řazení a místo toho načíst výsledky z horní části sady dat.
Poznámka:
Při použití skip
se doporučuje výsledky uspořádat alespoň podle jednoho sloupce s asc
nebo desc
. Bez seřazení jsou vrácené výsledky náhodné a neopakovatelné. Pokud limit
nebo take
jsou použity v dotazu, skip
je ignorována.
Následující příklady ukazují, jak přeskočit prvních 10 záznamů, které by výsledkem dotazu byly, a místo toho spustit vrácenou sadu výsledků s 11. záznamem:
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
V rozhraní REST API je $skip
ovládací prvek a je součástí QueryRequestOptions
.
Výsledky stránkování
Pokud je nutné rozdělit sadu výsledků na menší sady záznamů pro zpracování nebo protože sada výsledků by překročila maximální povolenou hodnotu 1 000 vrácených záznamů, použijte stránkování. Rozhraní REST API QueryResponse
poskytuje hodnoty, které označují, že sada výsledků byla rozdělena: resultTruncated
a $skipToken
. Hodnota resultTruncated
je logická hodnota, která informuje příjemce v případě, že existuje více záznamů, které se v odpovědi nevrátily. To samé je možné zjistit také tím, že je hodnota vlastnosti count
nižší než hodnota vlastnosti totalRecords
. totalRecords
definuje, kolik záznamů odpovídá dotazu.
resultTruncated
pokud true
je k dispozici méně prostředků, než požaduje dotaz, nebo když je stránkování zakázané nebo pokud stránkování není možné, protože:
- Dotaz obsahuje
limit
operátor nebosample
/take
operátor. - Všechny výstupní sloupce jsou buď
dynamic
nebonull
typu.
Pokud resultTruncated
je true
, $skipToken
vlastnost není nastavena.
Následující příklady ukazují, jak přeskočit prvních 3 000 záznamů a vrátit first
1 000 záznamů po vynechání těchto záznamů pomocí Azure CLI a Azure PowerShellu:
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
Důležité
Odpověď nebude obsahovat následující $skipToken
:
- Dotaz obsahuje
limit
operátor nebosample
/take
operátor. - Všechny výstupní sloupce jsou buď
dynamic
nebonull
typu.
Například v dokumentaci k rozhraní REST API přejděte na dotaz další stránky.
Formátování výsledků
Výsledky dotazu Resource Graphu jsou k dispozici ve dvou formátech Table
a ObjectArray
. Formát se konfiguruje s parametrem resultFormat
jako součást možností požadavku. Formát Table
je výchozí hodnota pro resultFormat
.
Výsledky z Azure CLI jsou ve výchozím nastavení k dispozici ve formátu JSON. Výsledky v Azure PowerShellu PSResourceGraphResponse
jsou objekt, ale dají se rychle převést na JSON pomocí rutiny ConvertTo-Json
ve data
vlastnosti. U jiných sad SDK je možné výsledky dotazu nakonfigurovat tak, aby vystavovaly ObjectArray
formát.
Formát – tabulka
Výchozí formát vrátí výsledky ve formátu JSON, který je navržený tak, Table
aby zvýrazňoval návrh sloupce a hodnoty řádků vlastností vrácených dotazem. Tento formát se podobá datům definovaným ve strukturované tabulce nebo tabulce se sloupci identifikovanými jako první a potom každý řádek představující data zarovnaná k těmto sloupcům.
Tady je ukázka výsledku dotazu s formátováním Table
:
{
"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"
}
Formát – ObjectArray
Formát ObjectArray
také vrací výsledky ve formátu JSON. Tento návrh ale odpovídá relaci páru klíč/hodnota, která je společná ve formátu JSON, kde se sloupec a data řádků shodují ve skupinách polí.
Tady je ukázka výsledku dotazu s formátováním ObjectArray
:
{
"totalRecords": 47,
"count": 1,
"data": [
{
"name": "veryscaryvm2-nsg",
"type": "microsoft.network/networksecuritygroups",
"location": "eastus",
"subscriptionId": "11111111-1111-1111-1111-111111111111"
}
],
"facets": [],
"resultTruncated": "true"
}
Vypršení časového limitu dotazu
Azure Resource Graph vynucuje časový limit dotazu 30 sekund, který odpovídá Azure Resource Manageru.
Možná řešení:
- Zkuste dotaz zopakovat pomocí menšího oboru. Můžete například zadat dotaz na méně předplatných.
- Dotazy, které používají
join
, by měly mít menší sady výsledků na levé stranějoin
.
Další kroky
- Přečtěte si další informace o porozumění dotazovacímu jazyku Azure Resource Graph.
- Přečtěte si další informace o tom, jak prozkoumat prostředky.