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.

Zie 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 Eerst gebruikt, 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 wordt het besturingselement $top en maakt deel uit van QueryRequestOptions.

De controle die het meest beperkend is, wint. Als uw query bijvoorbeeld gebruikmaakt van de operatoren voor hoogste of limieten en meer records oplevert dan Eerste, is het maximum aantal geretourneerde records gelijk aan First. Als de boven- of limiet kleiner is dan Eerste, is de geretourneerde recordset ook de kleinere waarde die is geconfigureerd door de boven- of limiet.

De eerste 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. Dit 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. Klik op de werkbalk op Downloaden als CSV.

Records overslaan

De volgende optie voor het werken met grote gegevenssets is het besturingselement Overslaan . 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 Skip gebruikt, 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, wordt Skip 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 is het besturingselement $skip en maakt het 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 APIQueryResponse biedt waarden om aan te geven dat een resultatenset is opgesplitst: resultTruncated en $skipToken. resultTruncated is een Booleaanse waarde die de consument informeert als er meer records niet worden geretourneerd in het antwoord. 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 waar 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 nulldynamic typen.

Wanneer resultTruncated true is, wordt de eigenschap $skipToken niet ingesteld.

In de volgende voorbeelden ziet u hoe u de eerste 3000 records overslaat en de eerste 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 als:

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

Zie de volgende paginaquery in de REST API-documenten voor een voorbeeld.

Resultaten opmaken

Resultaten van een Resource Graph-query worden geleverd in twee indelingen, Tabel en ObjectArray. De indeling wordt geconfigureerd met de parameter resultFormat als onderdeel van de aanvraagopties. De tabelindeling 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 eigenschap Data . Voor andere SDK's kunnen de queryresultaten worden geconfigureerd om de ObjectArray-indeling uit te voeren.

Opmaak - Tabel

De standaardindeling Tabel retourneert resultaten in een JSON-indeling die is ontworpen om de kolomontwerp- en 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 tabelopmaak :

{
    "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 objectmaarray-opmaak :

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

Volgende stappen