Единицы запросов в Azure Digital Twins

В этой статье рассматриваются единицы запросов, их использование в Azure Digital Twins и поиск потребления единиц запросов в Azure Digital Twins.

Единица запроса (QU) Azure Digital Twins — это единица вычислений по требованию, которая используется для выполнения запросов к двойников Azure Digital Twins через API запросов.

Он абстрагирует системные ресурсы, такие как ЦП, операции ввода-вывода в секунду и память, необходимые для выполнения операций запросов, поддерживаемых Azure Digital Twins, что позволяет отслеживать использование в единицах запросов.

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

  • сложности запроса;
  • Размер результирующих наборов (поэтому запрос, возвращающий 10 результатов, будет потреблять больше единиц запросов, чем запрос аналогичной сложности, возвращающий только один результат).

В этой статье объясняется, что такое единицы запросов и как отслеживать их потребление.

Поиск сведений о потреблении единиц запросов в Azure Digital Twins

При выполнении запроса с помощью API запросов Azure Digital Twins можно проверить заголовок ответа, чтобы отслеживать количество использованных запросов. В ответе, полученном из Azure Digital Twins, найдите поле query-charge.

Пакеты SDK для Azure Digital Twins позволяют извлекать заголовок query-charge из разбиваемого на страницы ответа. В этом разделе показано, как отправлять запросы к цифровым двойникам и выполнять итерацию по разбиваемым на страницы ответам для извлечения заголовка query-charge.

В следующем фрагменте кода показано, как можно извлечь расходы за запросы, связанные с вызовом API запросов. Сначала в нем перебираются страницы ответа в поиске заголовка query-charge, а затем — результаты цифрового двойника на каждой странице.

using Azure;
using Azure.DigitalTwins.Core;
using System;

namespace DigitalTwins_Samples
{
    public class GetQueryChargesSample
    {
        async public void Run(DigitalTwinsClient client)
        {
            AsyncPageable<BasicDigitalTwin> asyncPageableResponseWithCharge = client.QueryAsync<BasicDigitalTwin>("SELECT * FROM digitaltwins");
            int pageNum = 0;

            // The "await" keyword here is required, as a call is made when fetching a new page.

            await foreach (Page<BasicDigitalTwin> page in asyncPageableResponseWithCharge.AsPages())
            {
                Console.WriteLine($"Page {++pageNum} results:");

                // Extract the query-charge header from the page

                if (QueryChargeHelper.TryGetQueryCharge(page, out float queryCharge))
                {
                    Console.WriteLine($"Query charge was: {queryCharge}");
                }

                // Iterate over the twin instances.

                // The "await" keyword is not required here, as the paged response is local.

                foreach (BasicDigitalTwin twin in page.Values)
                {
                    Console.WriteLine($"Found digital twin '{twin.Id}'");
                }
            }
        }
    }
}

Дальнейшие действия

Дополнительные сведения о запросах к Azure Digital Twins можно найти в следующих статьях:

Ограничения Azure Digital Twins, связанные с запросами, можно найти в статье об ограничениях службы Azure Digital Twins.