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, passare a Istruzioni per le richieste con limitazioni.

Dimensioni dei risultati dei set di dati

Per impostazione predefinita, Resource Graph limita a 1.000 i record i risultati che possono essere restituiti da ogni query. 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 gli operatori top o limit e genera più record di first, il numero massimo di record restituiti sarà uguale a first. Analogamente, se top o limit è minore di first, il set di record restituito sarà costituito dal valore minore configurato da top o limit.

Il parametro first ha un valore massimo consentito di 1.000.

Limitazione delle dimensioni dei risultati dell'esportazione di CSV

Quando si usa la funzionalità di esportazione con valori delimitati da virgole (CVS) 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 di Azure.

Per scaricare i risultati CSV dal portale di Azure, passare ad Azure Resource Graph Explorer ed eseguire una query. Sulla barra degli strumenti, selezionare Scarica come CVS.

Ignorare record

L'opzione successiva 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 REST QueryResponse fornisce valori che indicano che un set di risultati è stato diviso: resultTruncated e $skipToken. resultTruncated è un valore booleano che informa il consumer se sono presenti record aggiuntivi non restituiti nella risposta. 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 meno risorse rispetto alla richiesta di una query oppure quando il paging è disabilitato o non possibile perché:

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

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

Gli esempi seguenti illustrano come ignorare i primi 3.000 record e restituire i first 1.000 record dopo i record 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à $skipToken se:

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

Per un esempio, passare a Query della pagina successiva nella documentazione dell'API REST.

Formattazione dei risultati

I risultati di una query di Resource Graph vengono 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 in Azure PowerShell sono un oggetto PSResourceGraphResponse, ma possono essere rapidamente convertiti in formato JSON usando il cmdlet ConvertTo-Json 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 del risultato di una query con la formattazione 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"
}

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.

Di seguito è riportato un esempio del risultato di una 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"
}

Timeout query

Azure Resource Graph applica un timeout di query di 30 secondi allineato ad Azure Resource Manager.

Soluzioni possibili:

  • Ripetere la query usando un ambito più piccolo. Ad esempio, eseguire una query su un minor numero di sottoscrizioni.
  • Le query che usano join devono avere set di risultati più piccoli sul lato sinistro di join.

Passaggi successivi