Sdílet prostřednictvím


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í firstse 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í skipse 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 nebo sample/take operátor.
  • Všechny výstupní sloupce jsou buď dynamic nebo null 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 nebo sample/take operátor.
  • Všechny výstupní sloupce jsou buď dynamic nebo null 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, Tableaby 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