Share via


Werken met grote Azure-resourcegegevenssets

Azure Resource Graph is ontworpen voor het werken met en het ophalen van informatie over resources in uw Azure-omgeving. Met Resource Graph worden deze gegevens snel opgehaald, zelfs wanneer er duizenden records worden opgevraagd. Resource Graph heeft verschillende opties voor het werken met deze grote gegevenssets.

Ga naar Richtlijnen voor beperkte aanvragen voor hulp bij het werken met query's met een hoge frequentie.

Resultaatgrootte van gegevensset

Standaard beperkt Resource Graph elke query tot het retourneren van slechts 1000 records. Dit besturingselement beschermt zowel de gebruiker als de service tegen onbedoelde query's die zouden leiden tot grote gegevenssets. Deze gebeurtenis treedt meestal op wanneer een klant experimenteert met query's om resources te vinden en te filteren op de manier die aan hun specifieke behoeften voldoet. Dit besturingselement verschilt van het gebruik van de Azure Data Explorer-taaloperators bovenste of limiet om de resultaten te beperken.

Notitie

Wanneer u dit gebruikt first, is het raadzaam om de resultaten te ordenen op ten minste één kolom met asc of desc. Zonder sorteren worden de resultaten willekeurig geretourneerd en zijn ze niet herhaalbaar.

De standaardlimiet kan worden overschreven via alle methoden voor interactie met Resource Graph. In de volgende voorbeelden ziet u hoe u de limiet voor de grootte van de gegevensset wijzigt in 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

In de REST API maakt $top het besturingselement deel uit van QueryRequestOptions.

Het besturingselement dat het meest beperkende wint is. Als uw query bijvoorbeeld gebruikmaakt van de top of limit operatoren en resulteert in meer records dan first, is het maximum aantal geretourneerde records gelijk aan first. top Als of limit kleiner is danfirst, is de geretourneerde recordset ook de kleinere waarde die is geconfigureerd door top oflimit.

De first parameter heeft een maximaal toegestane waarde van 1000.

Beperking van de grootte van csv-exportresultaten

Wanneer u de exportfunctionaliteit voor door komma's gescheiden waarden (CSV) van Azure Resource Graph Explorer gebruikt, is de resultatenset beperkt tot 55.000 records. Deze beperking is een platformlimiet die niet kan worden overschreven door een ondersteuning voor Azure ticket in te dienen.

Als u CSV-resultaten wilt downloaden uit Azure Portal, bladert u naar Azure Resource Graph Explorer en voert u een query uit. Selecteer Downloaden als CSV op de werkbalk.

Records overslaan

De volgende optie voor het werken met grote gegevenssets is het skip besturingselement. Met dit besturingselement kan uw query het gedefinieerde aantal records overslaan of overslaan voordat de resultaten worden geretourneerd. Skip is handig voor query's die resultaten op een zinvolle manier sorteren, waarbij de bedoeling is om records ergens in het midden van de resultatenset op te halen. Als de benodigde resultaten aan het einde van de geretourneerde gegevensset staan, is het efficiënter om een andere sorteerconfiguratie te gebruiken en de resultaten boven aan de gegevensset op te halen.

Notitie

Wanneer u dit gebruikt skip, is het raadzaam om de resultaten te ordenen op ten minste één kolom met asc of desc. Zonder sorteren worden de resultaten willekeurig geretourneerd en zijn ze niet herhaalbaar. Als limit of take worden gebruikt in de query, skip wordt deze genegeerd.

In de volgende voorbeelden ziet u hoe u de eerste 10 records overslaat die een query zou opleveren, in plaats daarvan de geretourneerde resultatenset met de 11e record starten:

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 de REST API maakt $skip het besturingselement deel uit van QueryRequestOptions.

Zoekresultaten oproepen

Wanneer het nodig is om een resultatenset op te splitsen in kleinere sets records voor verwerking of omdat een resultatenset de maximaal toegestane waarde van 1000 geretourneerde records overschrijdt, gebruikt u paging. De REST API QueryResponse biedt waarden die aangeven dat een resultatenset is opgesplitst: resultTruncated en $skipToken. resultTruncated is een Booleaanse waarde die de consument informeert indien meer records niet in het antwoord worden geretourneerd. Deze voorwaarde kan ook worden geïdentificeerd wanneer de eigenschap count kleiner is dan de eigenschap totalRecords. totalRecords definieert hoeveel records overeenkomen met de query.

resultTruncated is true wanneer er minder resources beschikbaar zijn dan een query wordt aangevraagd of wanneer paging is uitgeschakeld of wanneer paging niet mogelijk is, omdat:

  • De query bevat een limit of sample/take operator.
  • Alle uitvoerkolommen zijn of dynamic null typen.

Wanneer resultTruncated is truede $skipToken eigenschap niet ingesteld.

In de volgende voorbeelden ziet u hoe u de eerste 3000 records overslaat en de first 1000 records retourneert nadat deze records zijn overgeslagen met Azure CLI en Azure PowerShell:

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

Belangrijk

Het antwoord bevat niet de $skipToken volgende:

  • De query bevat een limit of sample/take operator.
  • Alle uitvoerkolommen zijn of dynamic null typen.

Ga bijvoorbeeld naar de query volgende pagina in de REST API-documenten.

Resultaten opmaken

De resultaten van een Resource Graph-query worden in twee indelingen Table ObjectArrayen . De indeling wordt geconfigureerd met de resultFormat parameter als onderdeel van de aanvraagopties. De Table notatie is de standaardwaarde voor resultFormat.

Resultaten van Azure CLI worden standaard geleverd in JSON. Resultaten in Azure PowerShell zijn een PSResourceGraphResponse object, maar ze kunnen snel worden geconverteerd naar JSON met behulp van de ConvertTo-Json cmdlet in de data eigenschap. Voor andere SDK's kunnen de queryresultaten worden geconfigureerd om de ObjectArray indeling uit te voeren.

Opmaak - Tabel

De standaardindeling, Tableretourneert resultaten in een JSON-indeling die is ontworpen om het kolomontwerp en de rijwaarden te markeren van de eigenschappen die door de query worden geretourneerd. Deze indeling lijkt sterk op gegevens zoals gedefinieerd in een gestructureerde tabel of spreadsheet, waarbij de kolommen eerst worden geïdentificeerd en vervolgens elke rij die gegevens vertegenwoordigt die zijn uitgelijnd op die kolommen.

Hier volgt een voorbeeld van een queryresultaat met de Table opmaak:

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

Opmaak - ObjectArray

De ObjectArray indeling retourneert ook resultaten in een JSON-indeling. Dit ontwerp is echter afgestemd op de sleutel-waardepaarrelatie die gebruikelijk is in JSON, waarbij de kolom en de rijgegevens overeenkomen in matrixgroepen.

Hier volgt een voorbeeld van een queryresultaat met de ObjectArray opmaak:

{
  "totalRecords": 47,
  "count": 1,
  "data": [
    {
      "name": "veryscaryvm2-nsg",
      "type": "microsoft.network/networksecuritygroups",
      "location": "eastus",
      "subscriptionId": "11111111-1111-1111-1111-111111111111"
    }
  ],
  "facets": [],
  "resultTruncated": "true"
}

Time-out voor query

Azure Resource Graph dwingt een time-out van 30 seconden af die overeenkomt met Azure Resource Manager.

Mogelijke oplossingen:

  • Voer de query opnieuw uit met een kleiner bereik. Voer bijvoorbeeld een query uit op minder abonnementen.
  • Query's die worden gebruikt join , moeten kleinere resultatensets hebben aan de linkerkant van de join.

Volgende stappen