Dela via


Frågespråksreferens för Azure Digital Twins: Functions

Det här dokumentet innehåller referensinformation om funktioner för Azure Digital Twins-frågespråket.

ARRAY_CONTAINS

En funktion för att avgöra om en matrisegenskap för en tvilling (stöds i DTDL v3) innehåller ett annat angivet värde.

Syntax

ARRAY_CONTAINS(<array-to-check>,<contained-value>)

Argument

  • <array-to-check>: En tvillingegenskap av matristyp som du vill söka efter det angivna värdet
  • <contained-value>: En sträng, heltal, dubbel eller boolesk som representerar det värde som ska sökas efter inuti matrisen

Returer

Ett booleskt värde som anger om matrisen innehåller det angivna värdet.

Exempel

Följande fråga returnerar namnet på alla digitala tvillingar som har en matrisegenskap floor_numberoch matrisen som lagras i den här egenskapen innehåller värdet 2.

SELECT T.name 
FROM DIGITALTWINS T 
WHERE ARRAY_CONTAINS (T.floor_number, 2)

Begränsningar

Funktionen ARRAY_CONTAINS() har följande begränsningar:

  • Matrisindexering stöds inte.
    • Till exempel array-name[index] = 'foo_bar'
  • Underfrågor i egenskapen ARRAY_CONTAINS() stöds inte.
    • Till exempel SELECT T.name FROM DIGITALTWINS T WHERE ARRAY_CONTAINS (SELECT S.floor_number FROM DIGITALTWINS S, 4)
  • ARRAY_CONTAINS() stöds inte för egenskaper för relationer.
    • Anta till exempel Floor.Contains är en relation från Golv till Rum och den har en lift egenskap med värdet ["operating", "under maintenance", "under construction"]. Frågor som denna stöds inte: SELECT Room FROM DIGITALTWINS Floor JOIN Room RELATED Floor.Contains WHERE Floor.$dtId = 'Floor-35' AND ARRAY_CONTAINS(Floor.Contains.lift, "operating").
  • ARRAY_CONTAINS() söker inte i kapslade matriser.
    • Anta till exempel att en tvilling har en tags egenskap med värdet [1, [2,3], 3, 4]. En sökning efter 2 med hjälp av frågan SELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, 2) returnerar False. En sökning efter ett värde i matrisen på den översta nivån, som 1 att använda frågan SELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, 1), returnerar True.
  • ARRAY_CONTAINS() stöds inte om matrisen innehåller objekt.
    • Anta till exempel att en tvilling har en tags egenskap med värdet [Room1, Room2] var Room1 och Room2 är objekt. Frågor som denna stöds inte: SELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, Room2).

CONTAINS

En strängfunktion för att avgöra om en strängegenskap för en tvilling innehåller ett annat angivet strängvärde.

Syntax

CONTAINS(<string-to-check>,<contained-string>)

Argument

  • <string-to-check>: En tvillingegenskap av strängtyp som du vill söka efter det angivna värdet
  • <contained-string>: En sträng som representerar det värde som ska sökas efter

Returer

Ett booleskt värde som anger om det första stränguttrycket innehåller sekvensen med tecken som definierats i det andra stränguttrycket.

Exempel

Följande fråga returnerar alla digitala tvillingar vars ID:er innehåller -route. Strängen som ska kontrolleras är för $dtId varje tvilling i samlingen och den inneslutna strängen är -route.

SELECT *
FROM DIGITALTWINS T
WHERE CONTAINS(T.$dtId, '-route')

ENDSWITH

En strängfunktion för att avgöra om en strängegenskap för en tvilling slutar i en viss annan sträng.

Syntax

ENDSWITH(<string-to-check>,<ending-string>)

Argument

  • <string-to-check>: En tvillingegenskap av strängtyp som du vill kontrollera slutet på
  • <ending-string>: En sträng som representerar slutet att söka efter

Returer

Ett booleskt värde som anger om det första stränguttrycket slutar med det andra.

Exempel

Följande fråga returnerar alla digitala tvillingar vars ID slutar i -small. Strängen som ska kontrolleras är för $dtId varje tvilling i samlingen och slutsträngen är -small.

SELECT *
FROM DIGITALTWINS T
WHERE ENDSWITH(T.$dtId, '-small')

IS_BOOL

En typkontrollfunktion för att avgöra om en egenskap har ett booleskt värde.

Den här funktionen kombineras ofta med andra predikat om programmet som bearbetar frågeresultatet kräver ett booleskt värde och du vill filtrera bort fall där egenskapen inte är ett booleskt värde.

Syntax

IS_BOOL(<property>)

Argument

<property>, en egenskap för att kontrollera om den är boolesk.

Returer

Ett booleskt värde som anger om den angivna egenskapens typ är boolesk.

Exempel

Följande fråga väljer de digitala tvillingar som har en boolesk HasTemperature egenskap.

SELECT *
FROM DIGITALTWINS T
WHERE IS_BOOL( HasTemperature )

Följande fråga bygger på exemplet ovan för att välja de digitala tvillingar som har en boolesk HasTemperature egenskap och värdet för den egenskapen är inte false.

SELECT *
FROM DIGITALTWINS T
WHERE IS_BOOL( HasTemperature ) AND HasTemperature != false

IS_DEFINED

En typkontrollfunktion för att avgöra om en egenskap har definierats.

Syntax

IS_DEFINED(<property>)

Argument

<property>, en egenskap för att avgöra om den har definierats.

Returer

Ett booleskt värde som anger om egenskapen har tilldelats ett värde.

Exempel

Följande fråga returnerar alla digitala tvillingar som har en definierad Location egenskap.

SELECT *
FROM DIGITALTWINS
WHERE IS_DEFINED(Location)

IS_NULL

En typkontrollfunktion för att avgöra om en egenskaps värde är null.

Syntax

IS_NULL(<property>)

Argument

<property>, en egenskap för att kontrollera om den är null.

Returer

Ett booleskt värde som anger om den angivna egenskapens typ är null.

Exempel

Följande fråga returnerar tvillingar som inte har ett null-värde för Temperatur. Mer information om operatorn som används i den NOT här frågan finns i Referens för Azure Digital Twins-frågespråk: Operatorer.

SELECT *
FROM DIGITALTWINS T
WHERE NOT IS_NULL(T.Temperature)

IS_NUMBER

En typkontrollfunktion för att avgöra om en egenskap har ett talvärde.

Den här funktionen kombineras ofta med andra predikat om programmet som bearbetar frågeresultatet kräver ett talvärde och du vill filtrera bort fall där egenskapen inte är ett tal.

Syntax

IS_NUMBER(<property>)

Argument

<property>, en egenskap för att kontrollera om det är ett tal.

Returer

Ett booleskt värde som anger om typen av den angivna egenskapen är ett tal.

Exempel

Följande fråga väljer de digitala tvillingar som har en numerisk Capacity egenskap och dess värde är inte lika med 0.

SELECT * 
FROM DIGITALTWINS 
WHERE IS_NUMBER( Capacity ) AND Capacity != 0

IS_OBJECT

En typkontrollfunktion för att avgöra om en egenskaps värde är av en JSON-objekttyp.

Den här funktionen kombineras ofta med andra predikat om programmet som bearbetar frågeresultatet kräver ett JSON-objekt och du vill filtrera bort fall där värdet inte är ett JSON-objekt.

Syntax

IS_OBJECT<property>)

Argument

<property>, en egenskap för att kontrollera om den är av en objekttyp.

Returer

Ett booleskt värde som anger om den angivna egenskapens typ är ett JSON-objekt.

Exempel

Följande fråga väljer alla digitala tvillingar där det här är ett objekt med namnet MapObject, och den har ingen underordnad egenskap TemperatureReading.

SELECT * 
FROM DIGITALTWINS 
WHERE IS_OBJECT( MapObject ) AND NOT IS_DEFINED ( MapObject.TemperatureReading )

IS_OF_MODEL

En typkontroll och funktion för att avgöra om en tvilling är av en viss modelltyp. Innehåller modeller som ärver från den angivna modellen.

Syntax

IS_OF_MODEL(<twin-collection>,'<model-ID>', exact)

Argument

Krav:

  • <model-ID>: Modell-ID:t att söka efter.

Valfritt:

  • <twin-collection>: Ange en tvillingsamling som ska sökas när det finns fler än en (till exempel när en JOIN används).
  • exact: Kräv en exakt matchning. Om den här parametern inte har angetts innehåller resultatuppsättningen tvillingar med modeller som ärver från den angivna modellen.

Returer

Ett booleskt värde som anger om den angivna tvillingen matchar den angivna modelltypen.

Exempel

Följande fråga returnerar tvillingar från DT-samlingen som är exakt av modelltypen dtmi:example:room;1.

SELECT ROOM FROM DIGITALTWINS DT WHERE IS_OF_MODEL(DT, 'dtmi:example:room;1', exact)

IS_PRIMITIVE

En typkontrollfunktion för att avgöra om en egenskaps värde är av en primitiv typ (sträng, boolesk, numerisk eller null).

Den här funktionen kombineras ofta med andra predikat om programmet som bearbetar frågeresultatet kräver ett primitivt skrivet värde och du vill filtrera bort fall där egenskapen inte är primitiv.

Syntax

IS_PRIMITIVE(<property>)

Argument

<property>, en egenskap för att kontrollera om den är av en primitiv typ.

Returer

Ett booleskt värde som anger om den angivna egenskapens typ är en av de primitiva typerna (sträng, boolesk, numerisk eller null).

Exempel

Följande fråga returnerar area egenskapen för Factory med ID:t "ABC", endast om area egenskapen är en primitiv typ. Mer information om hur du projicerar vissa kolumner i frågeresultatet (som den här frågan gör med area) finns i Azure Digital Twins-frågespråkreferens: SELECT-sats.

SELECT Factory.area
FROM DIGITALTWINS Factory
WHERE Factory.$dtId = 'ABC'
AND IS_PRIMITIVE(Factory.area)

IS_STRING

En typkontrollfunktion för att avgöra om en egenskap har ett strängvärde.

Den här funktionen kombineras ofta med andra predikat om programmet som bearbetar frågeresultatet kräver ett strängvärde och du vill filtrera bort fall där egenskapen inte är en sträng.

Syntax

IS_STRING(<property>)

Argument

<property>, en egenskap för att kontrollera om det är en sträng.

Returer

Ett booleskt värde som anger om typen av det angivna uttrycket är en sträng.

Exempel

Följande fråga väljer de digitala tvillingar som har en strängegenskapsegenskap Status och dess värde är inte lika med Completed.

SELECT * 
FROM DIGITIALTWINS 
WHERE IS_STRING( Status ) AND Status != 'Completed'

STARTSWITH

En strängfunktion för att avgöra om en strängegenskap för en tvilling börjar med en viss annan sträng.

Syntax

STARTSWITH(<string-to-check>,<beginning-string>)

Argument

  • <string-to-check>: En tvillingegenskap av strängtyp som du vill kontrollera början av
  • <beginning-string>: En sträng som representerar början att söka efter

Returer

Ett booleskt värde som anger om det första stränguttrycket börjar med det andra.

Exempel

Följande fråga returnerar alla digitala tvillingar vars ID börjar med area1-. Strängen som ska kontrolleras är för $dtId varje tvilling i samlingen och startsträngen är area1-.

SELECT *
FROM DIGITALTWINS T
WHERE STARTSWITH(T.$dtId, 'area1-')