Работа с большими наборами данных ресурса Azure
Azure Resource Graph предназначен для работы и получения сведений о ресурсах в вашей среде Azure. Resource Graph дает возможность получать эти данные быстро, даже при запросе тысяч записей. Resource Graph имеет несколько параметров для работы с этими большими наборами данных.
Рекомендации по работе с запросами с высокой частотой см. в руководстве по регулированию запросов.
Размер результата набора данных
По умолчанию Resource Graph ограничивает любой запрос, возвращая только 1000 записей. Этот элемент управления защищает как пользователя, так и службу от непреднамеренных запросов, которые могут привести к большим наборам данных. Это событие чаще всего происходит, когда клиент экспериментирует с запросами, чтобы найти и отфильтровать ресурсы в соответствии с их конкретными потребностями. Этот элемент управления отличается от использования операторов языка Azure Data Explorer top или limit для ограничения результатов.
Примечание.
При использовании first
рекомендуется упорядочить результаты по крайней мере по одному столбцу или asc
desc
. Без сортировки возвращаемые результаты будут случайными и не повторяемыми.
Ограничение по умолчанию может быть отменено всеми методами взаимодействия с Resource Graph. Следующие примеры демонстрируют изменение ограничения размера набора данных на 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
В REST API элемент управления входит $top
в состав QueryRequestOptions
.
Контроль, который является самым строгим выигрышем. Например, если запрос использует top
или операторы и приведет к большему объему записей, чемfirst
, максимальные возвращаемые записи будут равныfirst
limit
. Аналогичным образом, если top
или limit
меньше first
, возвращаемый набор записей будет меньшим значением, настроенным top
или limit
.
Параметр first
имеет максимально допустимое значение 1000.
Ограничение размера результата экспорта CSV
При использовании функции экспорта с разделителями-запятыми (CSV) результирующий набор ограничен 55 000 записями. Это ограничение является ограничением платформы, которое нельзя переопределить путем подачи поддержка Azure билета.
Чтобы скачать результаты CSV из портал Azure, перейдите в обозреватель Azure Resource Graph и запустите запрос. На панели инструментов выберите "Скачать как CSV".
Пропуск записей
Следующим вариантом skip
работы с большими наборами данных является элемент управления. Этот элемент управления позволяет пропустить или перейти определенное число записей перед возвратом результатов. Skip
полезно для запросов, которые сортируют результаты в понятном порядке, когда намерение — получить записи где-то в середине результирующий набор. Если необходимые результаты находятся в конце возвращенного набора данных, более эффективно использовать другую конфигурацию сортировки и извлекать результаты из верхней части набора данных.
Примечание.
При использовании skip
рекомендуется упорядочить результаты по крайней мере по одному столбцу или asc
desc
. Без сортировки возвращаемые результаты будут случайными и не повторяемыми. take
Если limit
или используется в запросе, skip
игнорируется.
В следующих примерах показано, как пропустить первые 10 записей, в результате которых будет получен запрос, вместо этого начиная возвращаемый набор результатов с 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
В REST API элемент управления входит $skip
в состав QueryRequestOptions
.
Разбиение результатов по страницам
Если необходимо разбить результирующий набор на меньшие наборы записей для обработки или если он превышает максимально допустимое значение возвращаемых записей (1000), используйте разбиение на страницы. REST API QueryResponse
предоставляет значения, указывающие, что набор результатов был разбит: resultTruncated
и $skipToken
. resultTruncated
— логическое значение, которое оповещает потребителя о наличии других записей, которые не были возвращены в ответе. Это условие также можно определить, когда свойство count
меньше, чем свойство totalRecords
. totalRecords
определяет количество записей, соответствующих запросу.
resultTruncated
Значение , true
если есть меньше ресурсов, чем запрос запрашивает, или если разбиение по страницам отключено или когда разбиение на страницы невозможно, так как:
- Запрос содержит
limit
или операторsample
/take
. - Все выходные столбцы имеют тип или
null
типdynamic
.
В противном случае resultTruncated
true
$skipToken
свойство не задано.
В следующих примерах показано, как пропустить первые 3000 записей и вернуть first
1000 записей после пропуска этих записей с помощью Azure CLI и 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
Внимание
Ответ не будет включать следующее $skipToken
:
- Запрос содержит
limit
или операторsample
/take
. - Все выходные столбцы имеют тип или
null
типdynamic
.
Например, перейдите к запросу на следующую страницу в документации ПО REST API.
Результаты форматирования
Результаты запроса Resource Graph предоставляются в двух форматах и Table
ObjectArray
. Формат настраивается с параметром resultFormat
в составе параметров запроса. Формат Table
— это значение по умолчанию для resultFormat
.
Результаты из Azure CLI предоставляются по умолчанию в формате JSON. Результаты в Azure PowerShell — это PSResourceGraphResponse
объект, но их можно быстро преобразовать в JSON с помощью командлета ConvertTo-Json
в свойстве data
. Для других пакетов SDK результаты запроса можно настроить для вывода ObjectArray
формата.
Формат Table
Формат по умолчанию Table
возвращает результаты в формате JSON, предназначенном для выделения значений структуры столбцов и строк свойств, возвращаемых запросом. Этот формат очень похож на то, как данные определяются в структурированной или электронной таблице: сначала определяются столбцы, а затем каждая строка с данными для этих столбцов.
Ниже приведен пример результата запроса с 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"
}
Формат ObjectArray
Формат ObjectArray
также возвращает результаты в формате JSON. Однако он соответствует отношению "ключ-значение", часто используемому в JSON и предполагающему сопоставление данных столбцов и строк в группах массива.
Ниже приведен пример результата запроса с ObjectArray
форматированием:
{
"totalRecords": 47,
"count": 1,
"data": [
{
"name": "veryscaryvm2-nsg",
"type": "microsoft.network/networksecuritygroups",
"location": "eastus",
"subscriptionId": "11111111-1111-1111-1111-111111111111"
}
],
"facets": [],
"resultTruncated": "true"
}
Время ожидания запроса
Azure Resource Graph применяет время ожидания запроса в 30 секунд, которое соответствует Azure Resource Manager.
Возможные решения:
- Повторите запрос с помощью меньшей области. Например, запрашивать меньше подписок.
- Запросы, которые используются
join
, должны иметь меньшие результирующие наборы в левойjoin
части.
Следующие шаги
- Узнайте больше о языке запросов Azure Resource Graph.
- Узнайте больше о том, как изучать ресурсы.