Поделиться через


Получение небольших наборов данных о затратах по запросу

Использование API Сведений о затратах для получения необработанных неагрегированных данных о затратах, которые соответствуют вашему счету Azure. Этот API полезен, если вашей организации требуется программное решение для получения данных. Попробуйте использовать API, если вы хотите проанализировать меньшие наборы данных затрат размером 2 ГБ (2 миллиона строк) или меньше. Однако следует использовать операции экспорта для текущих рабочих нагрузок приема данных и для скачивания больших наборов данных.

Если вы хотите регулярно получать большие объемы экспортируемых данных, см. сведения в статье Периодическое извлечение больших наборов данных о затратах с помощью функции экспорта.

Дополнительные сведения о данных в сведениях о затратах (ранее называемых данными о потреблении) см. в разделе Прием данных о затратах.

Отчет Сведений о затратах доступен только для клиентов, заключивших Соглашение Enterprise или Клиентское соглашение Microsoft. Если вы являетесь клиентом MSDN, оплатой по мере использования или Visual Studio, ознакомьтесь с сведениями о затратах для подписки по мере использования.

Разрешения

Чтобы использовать API сведений о затратах, требуются разрешения только для чтения для поддерживаемых функций и областей.

Примечание.

API сведений о затратах не поддерживает группы управления для клиентов EA или MCA.

Дополнительные сведения см. в разделе:

Рекомендации по API сведений о затратах

Корпорация Microsoft рекомендует применять следующие методики при использовании API сведений о затратах.

Расписание запроса

Если вы хотите получить последние данные о затратах, рекомендуется выполнять запрос хотя бы один раз в день. Отчеты обновляются каждые четыре часа. При более частом вызове вы получаете идентичные данные. После скачивания данных о затратах для исторических счетов плата не изменится, если вы явно не уведомляете. Рекомендуется кэшировать данные о затратах в запрашиваемом хранилище со своей стороны, чтобы предотвратить повторные вызовы идентичных данных.

Фрагментируйте запросы

Разбейте вызовы на периоды с небольшим диапазоном дат, чтобы получить больше управляемых файлов, которые можно загрузить по сети. Например, если каждый месяц образуются большой файл данных о затратах Azure, рекомендуется разбивать данные по дням или неделям. Если у вас есть области с большим объемом данных о затратах (например, учетная запись выставления счетов), рассмотрите возможность размещения нескольких вызовов дочерних областей, чтобы получить более управляемые файлы, которые можно загрузить. Дополнительные сведения см. в статье Understand and work with scopes (Основные сведения об областях и работе с ними). После загрузки данных используйте Excel для дальнейшего анализа данных с помощью фильтров и сводных таблиц.

Если набор данных из месяца в месяц превышает 2 ГБ (или примерно 2 миллиона строк), рекомендуется использовать Операции экспорта как более масштабируемое решение.

Задержка и ограничения скорости

Вызовы API по запросу ограничены по скорости. Время, необходимое для создания файла сведений о затратах, напрямую связано с объемом данных в файле. Чтобы узнать предполагаемое количество времени ожидания, прежде чем ваш файл станет доступным для загрузки, можно использовать заголовок retry-after в ответе API.

Поддерживаемые диапазоны времени набора данных

API Сведений о затратах поддерживает максимальный диапазон времени набора данных в один месяц на каждый отчет. Исторические данные можно получить до 13 месяцев до текущей даты. Если вы хотите заполнить 13-месячный исторический набор данных, рекомендуется разместить 13 вызовов за последние 13 месяцев. Чтобы получить исторические данные, которые старше 13 месяцев, используйте REST API экспорта.

Примеры запросов API сведений о затратах

Следующие примеры запросов используются клиентами Microsoft в распространенных сценариях. Данные, возвращаемые запросом, соответствуют дате получения затрат системой выставления счетов. Могут быть включены затраты из нескольких счетов. Это асинхронный интерфейс API. Таким образом, вы отправляете первоначальный вызов для запроса отчета и получаете ссылку опроса в заголовке ответа. Оттуда можно опрашивать предоставленную ссылку, пока отчет не будет доступен.

Используйте заголовок retry-after в ответе API, чтобы определить, когда следует опросить API в следующий раз. Заголовок предоставляет предполагаемое минимальное время создания отчета.

Дополнительные сведения о контракте API см. в разделе API Сведений о затратах.

Сравнение фактической и амортизированной стоимости

Чтобы указать, хотите ли вы просмотреть отчет о фактической или амортизированной стоимости, измените значение, используемое для поля метрики в исходном тексте запроса. Доступные значения метрик: ActualCost или AmortizedCost.

Представление амортизированной стоимости разбивает покупки резервирования на ежедневные блоки и распределяет их на срок резервирования. Например, стоимость покупки в 365 долл. США за 1 января будет отображена в виде 1,00 долл. США ежедневного расхода с 1 января до 31 декабря. Кроме основной амортизации, затраты также можно перераспределить и привязать с помощью конкретных ресурсов, использующих резервирование. Например, если оплата за сутки в 1,00 долл. США была разделена между двумя виртуальными машинами, вы увидите два списания по 0,50 долл. США в день. Если часть резервирования не используется в определенный день, вы увидите списание в 0,50 долл. США, которое будет закреплено за используемой виртуальной машиной и списание остальных 0,50 долл. США с типом UnusedReservation. Неиспользованные средства для резервирования просматриваются только в представлении амортизированных затрат.

Из-за изменения представления затрат важно отметить, что фактические затраты и амортизированные представления затрат показывают разные общие числа. Как правило, при просмотре амортизированной стоимости общие затраты по месяцам для покупки резервирования будут снижаться с течением времени. Стоимость месяцев после увеличения покупки резервирования. Амортизация стоимости доступна только для покупок резервирования и не имеет отношения к покупкам в Azure Marketplace в данный период времени.

Первоначальный запрос на создание отчета

POST https://management.azure.com/{scope}/providers/Microsoft.CostManagement/generateCostDetailsReport?api-version=2022-05-01

Текст запроса:

Ниже приведен пример запроса на набор данных ActualCost для указанного диапазона дат.

{
  "metric": "ActualCost",
  "timePeriod": {
    "start": "2020-03-01",
    "end": "2020-03-15"
  }
}

Доступные параметры {область} для создания правильного URI описаны в разделе "Определение идентификатора ресурса для область".

Ниже приведены доступные поля, которые можно указать в тексте запроса отчета.

  • метрика — тип запрошенного отчета. Это может быть ActualCost или AmortizedCost. Необязательно. Если поле не указано, API по умолчанию использует отчет ActualCost.
  • timePeriod — запрошенный диапазон дат для данных. Необязательно. Этот параметр нельзя использовать вместе с параметрами invoiceId или billingPeriod. Если параметр timePeriod, invoiceId или billingPeriod не указан в тексте запроса, API возвращает стоимость текущего месяца.
  • invoiceId — запрошенный счет для ваших данных. Этот параметр используется только клиентами Клиентское соглашение Майкрософт. Кроме того, его можно использовать только в профиле выставления счетов или в области Клиента. Этот параметр нельзя использовать вместе с параметрами billingPeriod или timePeriod. Если параметр timePeriod, invoiceId или billingPeriod не указан в тексте запроса, API возвращает стоимость текущего месяца.
  • billingPeriod — запрошенный период выставления счетов для данных. Этот параметр используется только клиентами Соглашение Enterprise. Используйте формат YearMonth. Пример: 202008. Этот параметр нельзя использовать вместе с параметрами invoiceId или timePeriod. Если параметр timePeriod, invoiceId или billingPeriod не указан в тексте запроса, API возвращает стоимость текущего месяца.

Ответ API:

Response Status: 202 – Accepted : указывает, что запрос был принят. Используйте заголовок Location для проверки состояния.

Заголовки ответов:

Имя. Тип Формат Description
Расположение Строка URL-адрес для проверки результата асинхронной операции.
Retry-After Целое Int32 Ожидаемое время создания отчета. Подождите до повторного опроса.

Опрос и загрузка отчетов

Опрос отчета с помощью конечной точки, предоставленной в location заголовке ответа API после создания отчета сведений о затратах. Ниже приведен пример запроса опроса.

Опрашивающий запрос по отчету:

GET https://management.azure.com/{scope}/providers/Microsoft.CostManagement/costDetailsOperationStatus/{operationId}?api-version=2022-05-01

Response Status 200 – Succeeded: указывает, что запрос выполнен успешно.

{
  "id": "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CostManagement/operationResults/00000000-0000-0000-0000-000000000000",
  "name": "00000000-0000-0000-0000-000000000000",
  "status": "Completed",
  "manifest": {
    "manifestVersion": "2022-05-01",
    "dataFormat": "Csv",
    "blobCount": 1,
    "byteCount": 160769,
    "compressData": false,
    "requestContext": {
      "requestScope": "subscriptions/00000000-0000-0000-0000-000000000000",
      "requestBody": {
        "metric": "ActualCost",
        "timePeriod": {
          "start": "2020-03-01",
          "end": "2020-03-15"
        }
      }
    },
    "blobs": [
      {
        "blobLink": "{downloadLink}",
        "byteCount": 32741
      }
    ]
  },
  "validTill": "2022-05-10T08:08:46.1973252Z"
}

Ниже приведена сводка по ключевым полям в ответе API:

  • manifestVersion — версия контракта манифеста, которая используется в ответе. В настоящее время версия манифеста остается одинаковой для данной версии API.
  • dataFormat — CSV является единственным поддерживаемым форматом файлов, предоставляемым API в настоящее время.
  • blobCount — представляет количество отдельных BLOB-объектов данных, присутствующих в наборе данных отчета. Важно отметить, что этот API может предоставить секционированные набор данных из нескольких файлов в ответе. Разработайте конвейеры данных, чтобы иметь возможность соответствующим образом обрабатывать секционированные файлы. Секционирование позволяет быстрее перемещать большие наборы данных.
  • byteCount — общее число байтов набора данных отчета по всем секциям.
  • compressData — сжатие всегда имеет значение false для первого выпуска. Однако API будет поддерживать сжатие в будущем.
  • requestContext — начальная конфигурация, запрошенная для отчета.
  • blobs — список из n файлов больших двоичных объектов, которые вместе составляют полный отчет.
    • blobLink — URL-адрес скачивания отдельной секции BLOB-объектов.
    • byteCount — число байтов отдельной секции BLOB-объектов.
  • validTill — дата, когда отчет больше недоступен.