Frågeenheter i Azure Digital Twins

Den här artikeln beskriver frågeenheter, hur de används av Azure Digital Twins och hur du hittar förbrukningen av frågeenheter i Azure Digital Twins.

En Azure Digital Twins-frågeenhet (QU) är en beräkningsenhet på begäran som används för att köra dina Azure Digital Twins-frågor med fråge-API:et.

Den abstraherar bort systemresurser som CPU, IOPS och minne som krävs för att utföra frågeåtgärder som stöds av Azure Digital Twins, så att du kan spåra användningen i frågeenheter i stället.

Mängden frågeenheter som används för att köra en fråga påverkas av:

  • Frågans komplexitet
  • Storleken på resultatuppsättningen (så en fråga som returnerar 10 resultat förbrukar fler QUs än en fråga med liknande komplexitet som bara returnerar ett resultat)

Den här artikeln beskriver hur du förstår frågeenheter och spårar förbrukning av frågeenheter.

Hitta förbrukningen av frågeenheter i Azure Digital Twins

När du kör en fråga med azure digital twins-fråge-API:et kan du granska svarshuvudet för att spåra antalet QU:er som frågan förbrukade. Leta efter "query-charge" i svaret som skickas tillbaka från Azure Digital Twins.

Med Azure Digital Twins-SDK:erna kan du extrahera frågedebiteringshuvudet från det växlingsbara svaret. Det här avsnittet visar hur du frågar efter digitala tvillingar och hur du itererar över det växlingsbara svaret för att extrahera frågedebiteringshuvudet.

Följande kodfragment visar hur du kan extrahera de frågeavgifter som uppstår när du anropar fråge-API:et. Den itererar först över svarssidorna för att få åtkomst till frågedebiteringshuvudet och itererar sedan över digital tvilling-resultaten på varje sida.

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

Nästa steg

Mer information om hur du kör frågor mot Azure Digital Twins finns i:

Du hittar Azure Digital Twins-frågerelaterade gränser i Azure Digital Twins-tjänstbegränsningar.