Trabalhar com grandes conjuntos de dados de recursos do Azure

O Azure Resource Graph foi projetado para trabalhar e obter informações sobre recursos em seu ambiente do Azure. O Resource Graph torna a obtenção desses dados rápida, mesmo ao consultar milhares de registros. O Resource Graph tem várias opções para trabalhar com esses grandes conjuntos de dados.

Para obter orientação sobre como trabalhar com consultas com alta frequência, vá para Orientação para solicitações limitadas.

Tamanho do resultado do conjunto de dados

Por padrão, o Gráfico de Recursos limita qualquer consulta a retornar apenas 1.000 registros. Este controlo protege o utilizador e o serviço de consultas não intencionais que poderiam resultar em grandes conjuntos de dados. Este evento ocorre com mais frequência quando um cliente está a experimentar consultas para localizar e filtrar recursos de uma forma que corresponda às suas necessidades particulares. Este controlo é diferente de utilizar os operadores de linguagem top ou limit do Azure Data Explorer para limitar os resultados.

Nota

Ao usar firsto , é recomendável ordenar os resultados por pelo menos uma coluna com asc ou desc. Sem ordenar, os resultados devolvidos serão aleatórios e não poderão ser repetidos.

O limite predefinido pode ser substituído através de todos os métodos de interação com o Resource Graph. Os exemplos a seguir mostram como alterar o limite de tamanho do conjunto de dados para 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

Na API REST, o controle é $top e faz parte do QueryRequestOptions.

Vence o controle mais restritivo . Por exemplo, se sua consulta usa os top operadores ou limit e resultaria em mais registros do que , o máximo de registros retornados firstseria igual a first. Da mesma forma, se top ou limit for menor que first, o conjunto de registros retornado será o menor valor configurado por top ou limit.

O first parâmetro tem um valor máximo permitido de 1000.

Limitação do tamanho do resultado de exportação CSV

Ao usar a funcionalidade de exportação de valores separados por vírgulas (CSV) do Azure Resource Graph Explorer, o conjunto de resultados é limitado a 55.000 registros. Essa limitação é um limite de plataforma que não pode ser substituído preenchendo um tíquete de suporte do Azure.

Para baixar resultados CSV do portal do Azure, navegue até o Azure Resource Graph Explorer e execute uma consulta. Na barra de ferramentas, selecione Baixar como CSV.

Ignorar registos

A próxima opção para trabalhar com grandes conjuntos de dados é o skip controle. Esse controle permite que sua consulta pule ou ignore o número definido de registros antes de retornar os resultados. Skip é útil para consultas que classificam os resultados de uma forma significativa, onde a intenção é obter registros em algum lugar no meio do conjunto de resultados. Se os resultados necessários estiverem no final do conjunto de dados retornado, é mais eficiente usar uma configuração de classificação diferente e recuperar os resultados da parte superior do conjunto de dados.

Nota

Ao usar skipo , é recomendável ordenar os resultados por pelo menos uma coluna com asc ou desc. Sem ordenar, os resultados devolvidos serão aleatórios e não poderão ser repetidos. Se limit ou take forem usados na consulta, skip será ignorado.

Os exemplos a seguir mostram como ignorar os primeiros 10 registros em que uma consulta resultaria, em vez de iniciar o conjunto de resultados retornado com o 11º registro:

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

Na API REST, o controle é $skip e faz parte do QueryRequestOptions.

Resultados de paginação

Quando for necessário dividir um conjunto de resultados em conjuntos menores de registros para processamento ou porque um conjunto de resultados excederia o valor máximo permitido de 1000 registros retornados, use a paginação. A API QueryResponse REST fornece valores que indicam que um conjunto de resultados foi quebrado: resultTruncated e $skipToken. resultTruncated é um valor booleano que informa o consumidor se houver mais registos não devolvidos na resposta. Esta condição também pode ser identificada quando a propriedade count é inferior à propriedade totalRecords. totalRecords Define quantos registros correspondem à consulta.

resultTruncated é true quando há menos recursos disponíveis do que uma consulta está solicitando ou quando a paginação está desabilitada ou quando a paginação não é possível porque:

  • A consulta contém um limit operador or/sampletake.
  • Todas as colunas de saída são ou dynamic null tipo.

Quando resultTruncated é true, a $skipToken propriedade não está definida.

Os exemplos a seguir mostram como ignorar os primeiros 3.000 registros e retornar os 1.000 registros depois que esses registros foram ignorados com a CLI do Azure e o first 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

A resposta não incluirá o $skipToken se:

  • A consulta contém um limit operador or/sampletake.
  • Todas as colunas de saída são ou dynamic null tipo.

Para obter um exemplo, vá para Consulta de página seguinte nos documentos da API REST.

Formatar os resultados

Os resultados de uma consulta do Gráfico de Recursos são fornecidos em dois formatos Table e ObjectArray. O formato é configurado com o resultFormat parâmetro como parte das opções de solicitação. O Table formato é o valor padrão para resultFormat.

Os resultados da CLI do Azure são fornecidos em JSON por padrão. Os resultados no Azure PowerShell são um PSResourceGraphResponse objeto, mas podem ser rapidamente convertidos em JSON usando o ConvertTo-Json cmdlet na data propriedade. Para outros SDKs, os resultados da consulta podem ser configurados para gerar o ObjectArray formato.

Formato - Tabela

O formato padrão, Table, retorna resultados em um formato JSON projetado para destacar o design da coluna e os valores de linha das propriedades retornadas pela consulta. Esse formato se assemelha muito aos dados definidos em uma tabela estruturada ou planilha com as colunas identificadas primeiro e, em seguida, cada linha representando dados alinhados a essas colunas.

Aqui está um exemplo de um resultado de consulta com a Table formatação:

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

O ObjectArray formato também retorna resultados em um formato JSON. No entanto, esse design se alinha à relação de par chave/valor comum no JSON, onde os dados da coluna e da linha são correspondidos em grupos de matrizes.

Aqui está um exemplo de um resultado de consulta com a ObjectArray formatação:

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

Tempo limite da consulta

O Azure Resource Graph impõe um tempo limite de consulta de 30 segundos que se alinha com o Azure Resource Manager.

Soluções possíveis:

  • Tente novamente a consulta usando um escopo menor. Por exemplo, consulte menos assinaturas.
  • As consultas que usam join devem ter conjuntos de resultados menores no lado esquerdo do join.

Próximos passos