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_number
och 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'
- Till exempel
- 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)
- Till exempel
- 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 enlift
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")
.
- Anta till exempel
- 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 efter2
med hjälp av fråganSELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, 2)
returnerarFalse
. En sökning efter ett värde i matrisen på den översta nivån, som1
att använda fråganSELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, 1)
, returnerarTrue
.
- Anta till exempel att en tvilling har en
- 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]
varRoom1
ochRoom2
är objekt. Frågor som denna stöds inte:SELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, Room2)
.
- Anta till exempel att en tvilling har en
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 enJOIN
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-')