Comparteix a través de


Trabajo con grandes conjuntos de datos de recursos de Azure

Azure Resource Graph está diseñado para trabajar con el entorno de Azure y obtener información sobre los recursos que contiene. Resource Graph permite obtener estos datos de manera más rápida, incluso cuando se consultan miles de registros. Resource Graph presenta varias opciones de funcionamiento con estos grandes conjuntos de datos.

Para obtener orientación sobre cómo trabajar con consultas de alta frecuencia, vaya a Guía para solicitudes limitadas.

Tamaño de resultados del conjunto de datos

De forma predeterminada, Resource Graph limita las consultas a 1 000 registros. Este control protege tanto al usuario como al servicio de consultas no intencionadas que darían lugar a grandes conjuntos de datos. Este caso suele suceder cuando un cliente experimenta con consultas para buscar y filtrar los recursos de la manera en que se adapte a sus necesidades concretas. Este control es diferente que usar los operadores de lenguaje top o limit de Azure Data Explorer para limitar los resultados.

Nota:

Al utilizar first, se recomienda ordenar los resultados al menos por una columna con asc o desc. Si los resultados no están ordenados, los resultados devueltos son aleatorios y no se pueden repetir.

El límite predeterminado se puede invalidar mediante todos los métodos de interacción con Resource Graph. En los ejemplos siguientes se muestra cómo cambiar el límite de tamaño del conjunto de datos a 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

En la API de REST, el control es $top y forma parte de QueryRequestOptions.

Gana el control más restrictivo. Por ejemplo, si la consulta utiliza los operadores top o limit y da como resultado más registros que first, el máximo de registros devueltos será igual a first. Del mismo modo, si top o limit es menor que first, el conjunto de registros devuelto sería el valor menor configurado por top o limit.

El parámetro first tiene un valor máximo permitido de 1 000.

Limitación del tamaño del resultado de exportación de CSV

Al usar la funcionalidad de exportación de valores separados por comas (CSV) de Azure Resource Graph Explorer, el conjunto de resultados se limita a 55 000 registros. Se trata de una limitación de la plataforma que no se puede invalidar mediante la presentación de una incidencia de Soporte técnico de Azure.

Para descargar los resultados CSV de Azure Portal, vaya al Explorador de Azure Resource Graph y ejecute una consulta. En la barra de herramientas, seleccione Descargar como CSV.

Omisión de registros

La siguiente opción para trabajar con grandes conjuntos de datos es el control skip. Este control permite que la consulta salte u omita el número definido de registros antes de devolver los resultados. Skip es útil para las consultas que ordenan los resultados de una manera significativa cuando la intención es llegar a los registros en algún lugar en el medio del conjunto de resultados. Si los resultados necesarios están al final del conjunto de datos devuelto, es mejor usar una configuración de ordenación diferente y recuperar los resultados del principio del conjunto de datos.

Nota:

Al utilizar skip, se recomienda ordenar los resultados al menos por una columna con asc o desc. Si los resultados no están ordenados, los resultados devueltos son aleatorios y no se pueden repetir. Si se usan limit o take en la consulta, skip se ignora.

En los ejemplos siguientes se muestra cómo omitir los primeros 10 registros que devolvería una consulta, en lugar de comenzar el conjunto de resultados devuelto con el registro número 11:

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

En la API de REST, el control es $skip y forma parte de QueryRequestOptions.

Paginación de resultados

Cuando sea necesario dividir un conjunto de resultados en conjuntos de registros más pequeños para su procesamiento, o porque un conjunto de resultados superaría el valor máximo permitido de 1000 registros devueltos, use la paginación. La API de REST QueryResponse proporciona valores que indican que un conjunto de resultados se ha dividido: resultTruncated y $skipToken. resultTruncated es un valor booleano que avisa al consumidor si existen más registros no devueltos en la respuesta. Esta condición también se puede identificar cuando la propiedad count es menor que la propiedad totalRecords. totalRecords define cuántos registros coinciden con la consulta.

resultTruncated es true cuando hay menos recursos disponibles de los que solicita una consulta o cuando la paginación está desactivada o cuando la paginación no es posible porque:

  • La consulta contiene un limit o un operador sample/take.
  • Todas las columnas de salida son del tipo dynamic o null.

Cuando resultTruncated es true, la propiedad $skipToken no está fijada.

Los siguientes ejemplos muestran cómo omitir los 3 000 primeros registros y devolver los first 1 000 registros posteriores a los omitidos con Azure CLI y 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 respuesta no incluirá $skipToken si:

  • La consulta contiene un limit o un operador sample/take.
  • Todas las columnas de salida son del tipo dynamic o null.

Para ver un ejemplo, consulte Consulta de página siguiente en los documentos de la API REST.

Resultados de formato

Los resultados de una consulta del Gráfico de Recursos se ofrecen en dos formatos, Table y ObjectArray. El formato se configura con el parámetro resultFormat como parte de las opciones de solicitud. El formato Table es el valor predeterminado para resultFormat.

De forma predeterminada, los resultados de la CLI de Azure se proporcionan en JSON. Los resultados en Azure PowerShell son un objeto PSResourceGraphResponse, pero pueden convertirse rápidamente a JSON utilizando el cmdlet ConvertTo-Json de la propiedad data. Para otros SDK, los resultados de la consulta pueden configurarse para dar salida al formato ObjectArray.

Formato: Table

El formato predeterminado, Table, devuelve los resultados en un formato JSON diseñado para resaltar el diseño de las columnas y los valores de las filas de las propiedades devueltas por la consulta. Este formato se parece mucho a los datos definidos en una hoja de cálculo o tabla estructurada con las columnas identificadas primero y, después, cada fila que representa datos alineada con esas columnas.

He aquí un ejemplo de resultado de consulta con el formato 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

El formato ObjectArray también devuelve los resultados en formato JSON. pero este diseño se alinea con la relación de par clave-valor común en JSON, donde los datos de columna y fila se relacionan en grupos de matrices.

He aquí un ejemplo de resultado de consulta con el formato ObjectArray:

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

Tiempo de espera de la consulta

Azure Resource Graph impone un tiempo de espera de consulta de 30 segundos que se alinea con Azure Resource Manager.

Posibles soluciones:

  • Vuelva a realizar la consulta utilizando un ámbito menor. Por ejemplo, consultar menos suscripciones.
  • Las consultas que utilizan join deben tener conjuntos de resultados más pequeños a la izquierda del join.

Pasos siguientes