Utilizzo di set di dati della risorsa di Azure di grandi dimensioni

Azure Resource Graph è progettato per elaborare e ottenere informazioni sulle risorse nell'ambiente di Azure. Resource Graph rende più rapido il recupero di questi dati, anche in caso di query su migliaia di record. Resource Graph offre diverse opzioni per l'utilizzo di questi set di dati di grandi dimensioni.

Per informazioni sull'uso di query a frequenza elevata, vedere Istruzioni per le richieste con limitazioni.

Dimensioni dei risultati dei set di dati

Per impostazione predefinita, Resource Graph limita qualsiasi query a restituire solo 1000 record. Questa impostazione protegge sia l'utente che il servizio da query non intenzionali che restituirebbero set di dati di grandi dimensioni. Questo evento si verifica per lo più mentre l'utente fa diversi esperimenti con le query per trovare e filtrare le risorse nel modo più adeguato alle sue esigenze. Questa impostazione è diversa dall'uso degli operatori di linguaggio top o limit di Esplora dati di Azure per limitare i risultati.

Nota

Quando si usa First, è consigliabile ordinare i risultati in base ad almeno una colonna con asc o desc. Senza ordinamento, i risultati restituiti sono casuali e non ripetibili.

È possibile eseguire l'override del limite predefinito tramite tutti i metodi di interazione con Resource Graph. Gli esempi seguenti mostrano come impostare il limite di dimensioni dei set di dati su 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

Nell'API REST il controllo è $top e fa parte di QueryRequestOptions.

Ha la priorità il controllo più restrittivo. Ad esempio, se la query usa l'operatore top o limit e la sua esecuzione restituirebbe più record rispetto a First, il numero massimo di record restituiti sarebbe uguale a First. Analogamente, se il valore di top o limit è inferiore a First, il set di record restituito sarebbe il valore più piccolo configurato da top o limit.

Il parametro First ha un valore massimo consentito pari a 1000.

Limitazione delle dimensioni dei risultati dell'esportazione CSV

Quando si usa la funzionalità di esportazione con valori delimitati da virgole di Azure Resource Graph Explorer, il set di risultati è limitato a 55.000 record. Si tratta di un limite di piattaforma che non può essere sottoposto a override inviando un ticket di supporto tecnico di Azure.

Per scaricare i risultati CSV dalla portale di Azure, passare ad Azure Resource Graph Explorer ed eseguire una query. Sulla barra degli strumenti fare clic su Scarica come CSV.

Ignorare record

Un'altra opzione per l'elaborazione di set di dati di grandi dimensioni è il controllo Skip. Questo controllo consente alla query di saltare o ignorare il numero definito di record prima di restituire i risultati. Skip è utile per le query che ordinano i risultati in un modo significativo allo scopo di ottenere i record situati in una posizione centrale del set di risultati. Se i risultati desiderati sono alla fine del set di dati restituito, è più efficiente usare una configurazione di ordinamento diversa e recuperare i risultati dall'inizio del set di dati.

Nota

Quando si usa Skip, è consigliabile ordinare i risultati in base ad almeno una colonna con asc o desc. Senza ordinamento, i risultati restituiti sono casuali e non ripetibili. Se limit o take vengono usati nella query, Skip viene ignorato.

Gli esempi seguenti mostrano come ignorare i primi 10 record restituiti da una query facendo iniziare il set di risultati restituito dall'undicesimo record:

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

Nell'API REST il controllo è $skip e fa parte di QueryRequestOptions.

Risultati di paging

Se è necessario suddividere un set di risultati in set di record più piccoli ai fini dell'elaborazione o per evitare di superare il valore massimo consentito di 1000 record restituiti, usare la paginazione. L'API RESTQueryResponse fornisce i valori resultTruncated e $skipToken per indicare se un set di risultati è stato suddiviso. resultTruncated è un valore booleano che informa il consumer se nella risposta non vengono restituiti altri record. Questa condizione può essere identificata anche quando il valore della proprietà count è inferiore a quello della proprietà totalRecords. totalRecords definisce il numero di record che soddisfano la query.

resultTruncated è true quando sono disponibili risorse inferiori a quelle richieste da una query o quando il paging è disabilitato o quando il paging non è possibile perché:

  • La query contiene un limit operatore o sample/take .
  • Tutte le colonne di output sono o dynamicnull di tipo .

Quando resultTruncated è true, la proprietà $skipToken non è impostata.

Gli esempi seguenti illustrano come ignorare i primi 3.000 record e restituire i primi 1.000 record dopo che questi record sono stati ignorati con l'interfaccia della riga di comando di Azure e 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

Importante

La risposta non includerà il $skipToken se:

  • La query contiene un limit operatore o sample/take .
  • Tutte le colonne di output sono o dynamicnull di tipo .

Per un esempio, vedere Next page query (Query della pagina successiva) nella documentazione dell'API REST.

Formattazione dei risultati

I risultati di una query di Resource Graph sono offerti in due formati: Table e ObjectArray. Il formato viene configurato con il parametro resultFormat nell'ambito delle opzioni della richiesta. Il formato Table è il valore predefinito per resultFormat.

Per impostazione predefinita, i risultati dell'interfaccia della riga di comando di Azure vengono restituiti in formato JSON. I risultati di Azure PowerShell sono un oggetto PSResourceGraphResponse , ma possono essere convertiti rapidamente in JSON usando il ConvertTo-Json cmdlet nella proprietà Data . Per gli altri SDK, è possibile configurare i risultati delle query in modo da restituire il formato ObjectArray.

Formato - Table

Il formato predefinito, Table, restituisce i risultati in un formato JSON ideato per evidenziare la struttura delle colonne e i valori di riga delle proprietà restituite dalla query. Questo formato è molto simile ai dati definiti in una tabella o un foglio di calcolo strutturato con le colonne identificate per prime e quindi ogni riga che rappresenta i dati allineati a queste colonne.

Di seguito è riportato un esempio di risultato della query con la formattazione tabella :

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

Formato - ObjectArray

Anche il formato ObjectArray restituisce i risultati in un formato JSON. Questa progettazione si allinea tuttavia alla relazione della coppia chiave/valore comune in JSON, in cui la colonna e i dati della riga vengono associati in gruppi di matrici.

Ecco un esempio di risultato di query con la formattazione ObjectArray :

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

Passaggi successivi