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, consulte Orientação para solicitações limitadas.

Tamanho do resultado do conjunto de dados

Por padrão, o Resource Graph limita qualquer consulta a retornar apenas 1000 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 First, é 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 de QueryRequestOptions.

Vencerá o controlo mais restritivo . Por exemplo, se sua consulta usar os operadores superior ou limite e resultar em mais registros do que First, o máximo de registros retornados será 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 primeiro 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. Este é um limite de plataforma que não pode ser substituído pelo preenchimento de 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, clique em Baixar como CSV.

Ignorar registos

A próxima opção para trabalhar com grandes conjuntos de dados é o controle Skip . Esse controle permite que sua consulta pule ou ignore o número definido de registros antes de retornar os resultados. Ignorar é útil para consultas que classificam os resultados de uma maneira 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 Ignorar, é 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, Ignorar 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 de 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. O REST APIQueryResponse fornece valores para indicar que um conjunto de resultados foi dividido: resultTruncated e $skipToken. resultTruncated é um valor booleano que informa o consumidor se houver mais registros não retornados na resposta. Essa condição também pode ser identificada quando a propriedade count é menor que a 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 dynamicnull tipo.

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

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

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

Formatar os resultados

Os resultados de uma consulta do Resource Graph são fornecidos em dois formatos, Table e ObjectArray. O formato é configurado com o parâmetro resultFormat como parte das opções de solicitação. O formato Table é 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 objeto PSResourceGraphResponse, mas podem ser rapidamente convertidos em JSON usando o ConvertTo-Jsoncmdlet na propriedade Data. Para outros SDKs, os resultados da consulta podem ser configurados para gerar o formato ObjectArray .

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 formatação de tabela :

{
    "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 formato ObjectArray 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 formatação ObjectArray :

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

Próximos passos