Бөлісу құралы:


Работа с большими наборами данных ресурса 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, максимальные возвращаемые записи будут равныfirstlimit. Аналогичным образом, если 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части.

Следующие шаги