Query-eenheden in Azure Digital Twins

In dit artikel worden query-eenheden beschreven, hoe ze worden gebruikt door Azure Digital Twins en hoe u het verbruik van de query-eenheid kunt vinden in Azure Digital Twins.

Een Azure Digital Twins Query Unit (QU) is een rekeneenheid op aanvraag die wordt gebruikt om uw Azure Digital Twins-query's uit te voeren met behulp van de Query-API.

Hiermee worden de systeemresources, zoals CPU, IOPS en geheugen, weggenomen die nodig zijn voor het uitvoeren van querybewerkingen die worden ondersteund door Azure Digital Twins, zodat u in plaats daarvan het gebruik in Query-eenheden kunt bijhouden.

De hoeveelheid queryeenheden die worden gebruikt om een query uit te voeren, wordt beïnvloed door:

  • De complexiteit van de query
  • De grootte van de resultatenset (dus een query die 10 resultaten retourneert, verbruikt meer QU's dan een query met vergelijkbare complexiteit die slechts één resultaat retourneert)

In dit artikel wordt uitgelegd hoe u query-eenheden begrijpt en het verbruik van queryeenheden bijhoudt.

Het verbruik van queryeenheden zoeken in Azure Digital Twins

Wanneer u een query uitvoert met behulp van de Azure Digital Twins Query-API, kunt u de antwoordheader onderzoeken om het aantal QUs bij te houden dat door de query is gebruikt. Zoek naar 'query-charge' in het antwoord dat is teruggestuurd van Azure Digital Twins.

Met de Azure Digital Twins-SDK's kunt u de query-charge-header uit het wisselbare antwoord extraheren. In deze sectie wordt beschreven hoe u een query uitvoert op digitale dubbels en hoe u het wisselbare antwoord kunt herhalen om de query-charge-header te extraheren.

Het volgende codefragment laat zien hoe u de querykosten kunt extraheren die worden gemaakt bij het aanroepen van de Query-API. Het itereert eerst over de antwoordpagina's om toegang te krijgen tot de query-charge-header en herhaalt vervolgens de resultaten van de digitale dubbel binnen elke pagina.

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}'");
                }
            }
        }
    }
}

Volgende stappen

Ga voor meer informatie over het uitvoeren van query's op Azure Digital Twins naar:

U vindt Query-gerelateerde limieten voor Azure Digital Twins in Azure Digital Twins-servicelimieten.