Azure Digital Twins のクエリ ユニット

この記事では、クエリユニット、Azure Digital ツインでの使用方法、Azure Digital ツインでクエリユニットの使用量を確認する方法について説明します。

Azure Digital Twins のクエリ ユニット (QU) は、クエリ API を使用して Azure Digital Twins クエリを実行するために使われるオンデマンド計算の単位です。

Azure Digital Twins でサポートされているクエリ操作を実行するために必要なシステム リソース (CPU、IOPS、メモリなど) を抽象化し、代わりにクエリ ユニットで使用状況を追跡できるようにします。

クエリの実行で消費されるクエリ ユニットの量は以下によって左右されます。

  • クエリの複雑性
  • 結果セットのサイズ (つまり、結果を 10 個返すクエリは、複雑性が同じながら結果を 1 個だけ返すクエリよりたくさんの QU を消費します)

この記事では、クエリ ユニットの概要と、クエリ ユニットの消費を追跡する方法について説明します。

Azure Digital Twins でのクエリ ユニット消費の確認

Azure Digital Twins クエリ API を使用してクエリを実行する場合は、応答ヘッダーを調べて、クエリが使用した QU の数を追跡できます。 Azure Digital Twins から返された応答内の "query-charge" を探します。

Azure Digital Twins の SDK を使用すると、ページング可能な応答から query-charge ヘッダーを抽出できます。 このセクションでは、デジタル ツインをクエリする方法と、ページング可能な応答を反復処理して query-charge ヘッダーを抽出する方法を示します。

次のコード スニペットは、Query 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 サービスの制限に関する記事をご覧ください。