Partager via


Utilisation de jeux de données volumineux d’Azure Resource Graph

Azure Resource Graph est conçu pour obtenir et utiliser des informations sur des ressources dans votre environnement Azure. Resource Graph permet d’obtenir ces données rapidement, même en cas d’interrogation de milliers d’enregistrements. Resource Graph offre plusieurs options pour utiliser ces jeux de données volumineux.

Pour obtenir des conseils sur l’utilisation des requêtes à une fréquence élevée, consultez Instructions pour les requêtes limitées.

Taille du jeu de résultats

Par défaut, Resource Graph limite à 1 000 le nombre d’enregistrements que retourne toute requête. Ce contrôle protège l’utilisateur et le service contre des requêtes involontaires qui auraient pour effet de retourner des jeux de données volumineux. Cela se produit le plus souvent quand un client expérimente des requêtes pour rechercher et filtrer des ressources d’une manière correspondant à ses besoins particuliers. Ce contrôle diffère de l’utilisation des opérateurs linguistiques top ou limit d’Azure Data Explorer pour limiter les résultats.

Remarque

Lorsque vous utilisez first, il est recommandé de trier les résultats sur au moins une colonne avec asc ou desc. À défaut de tri, les résultats retournés sont aléatoires et non reproductibles.

La limite par défaut peut être modifiée via toutes les méthodes d’interaction avec Resource Graph. Les exemples suivants montrent comment modifier la limite de taille de jeu de données en la définissant sur 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

Dans l’API REST, le contrôle est $top et fait partie de QueryRequestOptions.

Le contrôle le plus restrictif l’emporte. Par exemple, si votre requête utilise les opérateurs top ou limit et a pour effet de retourner plus d’enregistrements qu’avec l’opérateur first, le nombre maximal d’enregistrements retournés est égal à celui obtenu avec l’opérateur first. De même, si les opérateurs top ou limit ont pour effet de retourner un nombre d’enregistrements inférieur à celui que retournerait l’opérateur first, le jeu d’enregistrements retourné est celui comprenant le plus petit nombre d’enregistrements retournés par les opérateurs top ou limit.

Le paramètre first a une valeur maximale autorisée de 1 000.

Limitation de la taille des résultats CSV exportés

Lorsque vous utilisez la fonctionnalité d’exportation CSV de l’Explorateur Azure Resource Graph, le jeu de résultats est limité à 55 000 enregistrements. Il s’agit d’une limite de plate-forme qui ne peut pas être surmontée en déposant un ticket de support Azure.

Pour télécharger les résultats CSV à partir du portail Azure, accédez à l’Explorateur Azure Resource Graph et exécutez une requête. Dans la barre d’outils, sélectionnez Télécharger au format CSV.

Omission d’enregistrements

La prochaine option pour la manipulation de grands jeux de données est l’utilisation du contrôle skip. Ce contrôle permet à votre requête d’omettre ou d’ignorer le nombre défini d’enregistrements avant de retourner les résultats. Le contrôle Skip est utile pour les requêtes qui trient les résultats de façon explicite lorsque l’intention est d’accéder à des enregistrements quelque part au milieu du jeu de résultats. Si les résultats nécessaires figurent à la fin du jeu de données retourné, il est plus efficace d’utiliser une configuration de tri différente afin de récupérer à la place les résultats à partir de la partie supérieure du jeu de données.

Remarque

Lorsque vous utilisez skip, il est recommandé de trier les résultats sur au moins une colonne avec asc ou desc. À défaut de tri, les résultats retournés sont aléatoires et non reproductibles. Si limit ou take sont utilisés dans la requête, skip est ignoré.

Les exemples suivants montrent comment ignorer les 10 premiers enregistrements qu’une requête retournerait, en retournant le jeu de résultats à partir du 11e enregistrement :

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

Dans l’API REST, le contrôle est $skip et fait partie de QueryRequestOptions.

Résultats de pagination

S’il est nécessaire de diviser un jeu de résultats en jeux d’enregistrements plus petits à des fins de traitement ou parce que le jeu de résultats dépasse la valeur maximale autorisée de 1000 enregistrements retournés, utilisez une pagination. L’API REST QueryResponse fournit des valeurs indiquant qu’un jeu de résultats a été divisé : resultTruncated et $skipToken. resultTruncated est une valeur booléenne qui informe le consommateur s’il existe davantage d’enregistrements non retournés dans la réponse. Cette condition peut également être identifiée lorsque la valeur de la propriété count est inférieure à celle de la propriété totalRecords. La valeur totalRecords définit le nombre d’enregistrements correspondant à la requête.

La valeur resultTruncated est true quand il y a moins de ressources disponibles que n’en demande une requête, ou quand la pagination est désactivée ou impossible pour les raisons suivantes :

  • La requête contient un opérateur limit ou sample/take.
  • Toutes les colonnes de sortie sont de type dynamic ou null.

Quand resultTruncated est true, la propriété $skipToken n’est pas définie.

Les exemples suivants montrent comment ignorer les 3 000 premiers enregistrements et retourner les 1 000 premiers (first) enregistrements suivants avec Azure CLI et 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

Important

La réponse n’inclut pas $skipToken si :

  • La requête contient un opérateur limit ou sample/take.
  • Toutes les colonnes de sortie sont de type dynamic ou null.

Pour obtenir un exemple, accédez à Requête Page suivante dans la documentation de l’API REST.

Mise en forme des résultats

Les résultats d’une requête Resource Graph sont fournis aux deux formats suivants : Table et ObjectArray. Le format est configuré avec le paramètre resultFormat dans le cadre des options de requête. Le format Table est la valeur par défaut pour resultFormat.

Les résultats de l’interface Azure CLI sont fournis au format JSON par défaut. Les résultats dans Azure PowerShell sont un objet PSResourceGraphResponse. Cependant, ils peuvent être convertis rapidement au format JSON à l’aide de la cmdlet ConvertTo-Json sur la propriété data. Pour les autres kits SDK, les résultats de la requête peuvent être configurés au format ObjectArray.

Format - Table

Le format par défaut, Table, retourne les résultats dans un format JSON conçu pour mettre en évidence la conception des colonnes et les valeurs de lignes des propriétés retournées par la requête. Ce format se rapproche beaucoup de celui d’une table de données structurée ou d’une feuille de calcul avec les colonnes identifiées en premier et chaque ligne représentant les données alignées à ces colonnes.

Voici un exemple de résultat de requête au format 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"
}

Format - ObjectArray

Le format ObjectArray retourne également les résultats au format JSON. Toutefois, cette conception s’aligne sur la relation de paire clé/valeur courante du format JSON, où les données de colonne et de ligne sont mises en correspondance dans des groupes de tableaux.

Voici un exemple de résultat de requête au format ObjectArray :

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

Délai d'expiration de la requête

Azure Resource Graph applique un délai d’expiration de requête de 30 secondes qui est aligné sur Azure Resource Manager.

Solutions possibles :

  • Réessayez la requête à l’aide d’une plus petite étendue. Par exemple, interrogez moins d’abonnements.
  • Les requêtes qui utilisent join doivent avoir des jeux de résultats plus petits sur le côté gauche de join.

Étapes suivantes