Trabalhar com grandes conjuntos de dados de recursos AzureWorking with large Azure resource data sets

O Azure Resource Graph foi concebido para trabalhar e obter informações sobre recursos no seu ambiente Azure.Azure Resource Graph is designed for working with and getting information about resources in your Azure environment. O Gráfico de Recursos torna a obtenção destes dados rapidamente, mesmo quando consulta milhares de registos.Resource Graph makes getting this data fast, even when querying thousands of records. O Gráfico de Recursos tem várias opções para trabalhar com estes grandes conjuntos de dados.Resource Graph has several options for working with these large data sets.

Para obter orientações sobre o trabalho com consultas em alta frequência, consulte orientação para pedidos acelerados.For guidance on working with queries at a high frequency, see Guidance for throttled requests.

Tamanho do resultado do conjunto de dadosData set result size

Por predefinição, o Gráfico de Recursos limita qualquer consulta à devolução de apenas 100 registos.By default, Resource Graph limits any query to returning only 100 records. Este controlo protege tanto o utilizador como o serviço de consultas não intencionais que resultariam em grandes conjuntos de dados.This control protects both the user and the service from unintentional queries that would result in large data sets. Este evento acontece mais frequentemente como um cliente está experimentando consultas para encontrar e filtrar recursos da forma que se adequa às suas necessidades particulares.This event most often happens as a customer is experimenting with queries to find and filter resources in the way that suits their particular needs. Este controlo é diferente de utilizar os operadores de idiomas Azure Data Explorer superiores ou limitam os resultados.This control is different than using the top or limit Azure Data Explorer language operators to limit the results.

Nota

Ao utilizar primeiro, é aconselhável encomendar os resultados por pelo menos uma coluna com asc ou desc .When using First, it's recommended to order the results by at least one column with asc or desc. Sem triagem, os resultados devolvidos são aleatórios e não repetíveis.Without sorting, the results returned are random and not repeatable.

O limite predefinido pode ser ultrapassado através de todos os métodos de interação com o Gráfico de Recursos.The default limit can be overridden through all methods of interacting with Resource Graph. Os exemplos a seguir mostram como alterar o limite de tamanho do conjunto de dados para 200:The following examples show how to change the data set size limit to 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 controlo é $top e faz parte das Opções DeryRequestOptions.In the REST API, the control is $top and is part of QueryRequestOptions.

O controlo mais restritivo vencerá.The control that is most restrictive will win. Por exemplo, se a sua consulta utilizar os operadores superiores ou limitos e resultar em mais registos do que o First, os registos máximos devolvidos seriam iguais ao First.For example, if your query uses the top or limit operators and would result in more records than First, the maximum records returned would be equal to First. Da mesma forma, se o topo ou o limite for menor do que o Primeiro, o recorde devolvido seria o valor mais pequeno configurado por cima ou por limite.Likewise, if top or limit is smaller than First, the record set returned would be the smaller value configured by top or limit.

Primeiro tem atualmente um valor máximo permitido de 5000, o que consegue através da paging resultados de 1000 recordes de cada vez.First currently has a maximum allowed value of 5000, which it achieves by paging results 1000 records at a time.

Importante

Quando a First é configurada para ser superior a 1000 registos, a consulta deve projetar o campo de id para que a paginação funcione.When First is configured to be greater than 1000 records, the query must project the id field in order for pagination to work. Se faltar da consulta, a resposta não será pageed e os resultados estão limitados a 1000 registos.If it's missing from the query, the response won't get paged and the results are limited to 1000 records.

Ignorando registosSkipping records

A próxima opção para trabalhar com grandes conjuntos de dados é o controlo Skip.The next option for working with large data sets is the Skip control. Este controlo permite que a sua consulta salte ou salte o número definido de registos antes de devolver os resultados.This control allows your query to jump over or skip the defined number of records before returning the results. Skip é útil para consultas que tipo resultados de uma forma significativa onde a intenção é obter em registros em algum lugar no meio do conjunto de resultados.Skip is useful for queries that sort results in a meaningful way where the intent is to get at records somewhere in the middle of the result set. Se os resultados necessários estiverem no final do conjunto de dados devolvidos, é mais eficiente utilizar uma configuração de tipo diferente e recuperar os resultados do topo do conjunto de dados.If the results needed are at the end of the returned data set, it's more efficient to use a different sort configuration and retrieve the results from the top of the data set instead.

Nota

Ao utilizar skip, é aconselhável encomendar os resultados por pelo menos uma coluna com asc ou desc .When using Skip, it's recommended to order the results by at least one column with asc or desc. Sem triagem, os resultados devolvidos são aleatórios e não repetíveis.Without sorting, the results returned are random and not repeatable. Se limit ou for utilizado na take consulta, skip é ignorado.If limit or take are used in the query, Skip is ignored.

Os exemplos a seguir mostram como saltar os primeiros 10 registos que uma consulta resultaria, em vez de iniciar o conjunto de resultados devolvidos com o 11º recorde:The following examples show how to skip the first 10 records a query would result in, instead starting the returned result set with the 11th 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

Na API REST,o controlo é $skip e faz parte das Opções DeryRequestOptions.In the REST API, the control is $skip and is part of QueryRequestOptions.

Resultados de paginaçãoPaging results

Quando for necessário quebrar um resultado definido em conjuntos menores de registos para processamento ou porque um conjunto de resultados excederia o valor máximo permitido de 1000 registos devolvidos, use a paging.When it's necessary to break a result set into smaller sets of records for processing or because a result set would exceed the maximum allowed value of 1000 returned records, use paging. A PER API QueryResponse fornece valores que indicam que um conjunto de resultados foi quebrado: resultados $skipToken e $skipToken.The REST API QueryResponse provides values to indicate of a results set has been broken up: resultTruncated and $skipToken. resultadoTruncado é um valor booleano que informa o consumidor se há mais registos não devolvidos na resposta.resultTruncated is a boolean value that informs the consumer if there are more records not returned in the response. Esta condição também pode ser identificada quando a propriedade de contagem é inferior à propriedade TotalRecords.This condition can also be identified when the count property is less than the totalRecords property. totalRecords define quantos registos correspondem à consulta.totalRecords defines how many records that match the query.

resultadoSTruncado é verdadeiro quando ou a paging é desativada ou não é possível porque nenhuma id coluna ou quando há menos recursos disponíveis do que uma consulta está solicitando.resultTruncated is true when either paging is disabled or not possible because no id column or when there are less resources available than a query is requesting. Quando o resultado É verdade, a propriedade $skipToken não está definida.When resultTruncated is true, the $skipToken property isn't set.

Os exemplos a seguir mostram como saltar os primeiros 3000 discos e devolver os primeiros 1000 registos depois de esses registos terem saltado com Azure CLI e Azure PowerShell:The following examples show how to skip the first 3000 records and return the first 1000 records after those records skipped with Azure CLI and 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 consulta deve projetar o campo de identificação para que a paginação funcione.The query must project the id field in order for pagination to work. Se faltar da consulta, a resposta não incluirá o $skipToken.If it's missing from the query, the response won't include the $skipToken.

Por exemplo, consulte a consulta de página seguinte nos docs REST API.For an example, see Next page query in the REST API docs.

Resultados de formataçãoFormatting results

Os resultados de uma consulta de gráfico de recurso são fornecidos em dois formatos, Tabela e ObjectArray.Results of a Resource Graph query are provided in two formats, Table and ObjectArray. O formato está configurado com o resultadoForme o parâmetro como parte das opções de pedido.The format is configured with the resultFormat parameter as part of the request options. O formato tabela é o valor predefinido para resultadosForme.The Table format is the default value for resultFormat.

Os resultados do Azure CLI são fornecidos em JSON por padrão.Results from Azure CLI are provided in JSON by default. Os resultados em Azure PowerShell são um PSCustomObject por padrão, mas podem ser rapidamente convertidos para JSON usando o ConvertTo-Json cmdlet.Results in Azure PowerShell are a PSCustomObject by default, but they can quickly be converted to JSON using the ConvertTo-Json cmdlet. Para outros SDKs, os resultados da consulta podem ser configurados para a saída do formato ObjectArray.For other SDKs, the query results can be configured to output the ObjectArray format.

Formato - TabelaFormat - Table

O formato predefinido, Table, retorna resulta num formato JSON projetado para realçar os valores de design da coluna e linha das propriedades devolvidas pela consulta.The default format, Table, returns results in a JSON format designed to highlight the column design and row values of the properties returned by the query. Este formato assemelha-se muito aos dados definidos numa tabela estruturada ou numa folha de cálculo com as colunas identificadas primeiro e, em seguida, cada linha que representa dados alinhados com essas colunas.This format closely resembles data as defined in a structured table or spreadsheet with the columns identified first and then each row representing data aligned to those columns.

Aqui está uma amostra de um resultado de consulta com a formatação da tabela:Here's a sample of a query result with the Table formatting:

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

O formato ObjectArray também retorna os resultados num formato JSON.The ObjectArray format also returns results in a JSON format. No entanto, este design alinha-se com a relação de par chave/valor comum no JSON, onde a coluna e os dados da linha são combinados em grupos de matrizes.However, this design aligns to the key/value pair relationship common in JSON where the column and the row data are matched in array groups.

Aqui está uma amostra de um resultado de consulta com a formatação ObjectArray:Here's a sample of a query result with the ObjectArray formatting:

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

Aqui estão alguns exemplos de definição de resultadosFormat para utilizar o formato ObjectArray:Here are some examples of setting resultFormat to use the ObjectArray format:

var requestOptions = new QueryRequestOptions( resultFormat: ResultFormat.ObjectArray);
var request = new QueryRequest(subscriptions, "Resources | limit 1", options: requestOptions);
request_options = QueryRequestOptions(
    result_format=ResultFormat.object_array
)
request = QueryRequest(query="Resources | limit 1", subscriptions=subs_list, options=request_options)
response = client.resources(request)

Passos seguintesNext steps