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 doprovodných materiálech k omezování požadavků.

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 ovládací prvek $top a je součástí QueryRequestOptions.

Ovládací prvek, který je nejvíce omezující , vyhraje. Pokud například dotaz používá operátory nejvyššího nebo limitua výsledkem by bylo více záznamů než First, maximální vrácené záznamy by se rovna první. Podobně platí, že pokud je horní nebo limit menší než First, vrácená sada záznamů by byla menší hodnotou nakonfigurovanou podle nejvyššího nebo limitu.

První parametr má maximální povolenou hodnotu 1000.

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ů. Jedná se o limit platformy, který nelze 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ů klikněte na Stáhnout jako CSV.

Přeskakování záznamů

Další možností pro práci s velkými datovými sadami je ovládací prvek Přeskočit . 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ů. Přeskočit 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í příkazu 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 se v dotazu používají, přeskočení se ignoruje.

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 ovládací prvek $skip 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í. QueryResponse rozhraní REST APIposkytuje hodnoty, které označují, že sada výsledků byla rozdělena: resultTruncated a $skipToken. resultTruncated je logická hodnota, která informuje příjemce, pokud v odpovědi není vráceno více záznamů. Tuto podmínku lze také identifikovat, pokud je vlastnost count menší než totalRecords vlastnost. TotalRecords definuje, kolik záznamů odpovídá dotazu.

ResultTruncated je true , pokud je k dispozici méně prostředků, než dotaz požaduje, nebo pokud je stránkování zakázané nebo pokud stránkování není možné, protože:

  • Dotaz obsahuje limit operátor nebo sample/take operátor.
  • Všechny výstupní sloupce jsou buď dynamic nebo null typu.

Pokud je výsledekTruncated true, vlastnost $skipToken není nastavena.

Následující příklady ukazují, jak přeskočit prvních 3 000 záznamů a vrátit prvních 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 $skipToken , pokud:

  • Dotaz obsahuje limit operátor nebo sample/take operátor.
  • Všechny výstupní sloupce jsou buď dynamic nebo null typu.

Příklad najdete v tématu Další stránkový dotaz v dokumentaci k rozhraní REST API.

Formátování výsledků

Výsledky dotazu Resource Graphu jsou k dispozici ve dvou formátech: Tabulka a ObjectArray. Formát je nakonfigurován s parametrem resultFormat jako součást možností požadavku. Formát tabulky 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 jsou objekt PSResourceGraphResponse , ale pomocí rutiny ConvertTo-Json ve vlastnosti Data je možné je rychle převést na JSON. U jiných sad SDK lze výsledky dotazu nakonfigurovat tak, aby výstupem formátu ObjectArray .

Formát – tabulka

Výchozí formát Table vrátí výsledky ve formátu JSON navrženém ke zvýraznění návrhu sloupce a hodnot řá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 tabulky :

{
    "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"
}

Další kroky