この記事では、クエリユニット、Azure Digital ツインでの使用方法、Azure Digital ツインでクエリユニットの使用量を確認する方法について説明します。
Azure Digital Twins のクエリ ユニット (QU) は、クエリ API を使用して Azure Digital Twins クエリを実行するために使われるオンデマンド計算の単位です。
Azure Digital Twins でサポートされているクエリ操作を実行するために必要なシステム リソース (CPU、IOPS、メモリなど) を抽象化し、代わりにクエリ ユニットで使用状況を追跡できるようにします。
クエリの実行で消費されるクエリ ユニットの量は以下によって左右されます。
- クエリの複雑性
- 結果セットのサイズ (そのため、10 件の結果を返すクエリでは、1 つの結果のみを返す類似した複雑さのクエリよりも多くの CU が消費されます)
この記事では、クエリ ユニットの概要と、クエリ ユニットの消費を追跡する方法について説明します。
Azure Digital Twins でのクエリ ユニット消費の確認
Azure Digital Twins のクエリ API を使用してクエリを実行するとき、応答ヘッダーを検証して、クエリで消費した QU の数を追跡できます。 Azure Digital Twins から返された応答内の "query-charge" を探します。
Azure Digital Twins の SDK を使用すると、ページング可能な応答から 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 サービスの制限に関する記事をご覧ください。