Referenční informace k dotazovacímu jazyku Azure Digital Twins: Functions
Tento dokument obsahuje referenční informace o funkcích pro dotazovací jazyk Azure Digital Twins.
ARRAY_CONTAINS
Funkce, která určuje, jestli vlastnost pole dvojčete (podporovaná v DTDL v3) obsahuje jinou zadanou hodnotu.
Syntaxe
ARRAY_CONTAINS(<array-to-check>,<contained-value>)
Argumenty
<array-to-check>
: Vlastnost dvojčete typu pole, kterou chcete zkontrolovat pro zadanou hodnotu.<contained-value>
: Řetězec, celé číslo, double nebo logická hodnota představující hodnotu, kterou chcete zkontrolovat uvnitř pole.
Vrácení
Logická hodnota označující, zda pole obsahuje zadanou hodnotu.
Příklad
Následující dotaz vrátí název všech digitálních dvojčat, kteří mají vlastnost floor_number
pole a pole uložené v této vlastnosti obsahuje hodnotu 2
.
SELECT T.name
FROM DIGITALTWINS T
WHERE ARRAY_CONTAINS (T.floor_number, 2)
Omezení
Funkce ARRAY_CONTAINS() má následující omezení:
- Indexování polí se nepodporuje.
- Například
array-name[index] = 'foo_bar'
- Například
- Poddotazy ve vlastnosti ARRAY_CONTAINS() nejsou podporované.
- Například
SELECT T.name FROM DIGITALTWINS T WHERE ARRAY_CONTAINS (SELECT S.floor_number FROM DIGITALTWINS S, 4)
- Například
- ARRAY_CONTAINS() se u vlastností relací nepodporuje.
- Řekněme
Floor.Contains
například, že je relace z Floor to Room a málift
vlastnost s hodnotou["operating", "under maintenance", "under construction"]
. Dotazy, jako je tato, se nepodporují:SELECT Room FROM DIGITALTWINS Floor JOIN Room RELATED Floor.Contains WHERE Floor.$dtId = 'Floor-35' AND ARRAY_CONTAINS(Floor.Contains.lift, "operating")
.
- Řekněme
- ARRAY_CONTAINS() nehledává uvnitř vnořených polí.
- Řekněme například, že dvojče má
tags
vlastnost s hodnotou[1, [2,3], 3, 4]
. Hledání2
pomocí dotazuSELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, 2)
vrátíFalse
hodnotu . Hledání hodnoty v poli nejvyšší úrovně, jako je1
použití dotazuSELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, 1)
, vrátíTrue
.
- Řekněme například, že dvojče má
- ARRAY_CONTAINS() se nepodporuje, pokud pole obsahuje objekty.
- Řekněme například, že dvojče má
tags
vlastnost s hodnotou[Room1, Room2]
whereRoom1
aRoom2
jsou objekty. Dotazy, jako je tato, se nepodporují:SELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, Room2)
.
- Řekněme například, že dvojče má
CONTAINS
Řetězcová funkce k určení, zda řetězcová vlastnost dvojčete obsahuje jinou zadanou řetězcovou hodnotu.
Syntaxe
CONTAINS(<string-to-check>,<contained-string>)
Argumenty
<string-to-check>
: Vlastnost dvojčete typu string, kterou chcete zkontrolovat zadanou hodnotu.<contained-string>
: Řetězec představující hodnotu, kterou chcete zkontrolovat.
Vrácení
Logická hodnota označující, zda první řetězcový výraz obsahuje posloupnost znaků definovaných ve druhém řetězcovém výrazu.
Příklad
Následující dotaz vrátí všechna digitální dvojčata, jejichž ID obsahují -route
. Řetězec, který chcete zkontrolovat, je $dtId
každé dvojče v kolekci a obsažený řetězec je -route
.
SELECT *
FROM DIGITALTWINS T
WHERE CONTAINS(T.$dtId, '-route')
ENDSWITH
Řetězcová funkce, která určuje, jestli řetězcová vlastnost dvojčete končí určitým jiným řetězcem.
Syntaxe
ENDSWITH(<string-to-check>,<ending-string>)
Argumenty
<string-to-check>
: Vlastnost dvojčete typu string, kterou chcete zkontrolovat na konci<ending-string>
: Řetězec představující konec kontroly
Vrácení
Logická hodnota označující, jestli první řetězcový výraz končí druhým.
Příklad
Následující dotaz vrátí všechna digitální dvojčata, jejichž ID končí -small
. Řetězec, který chcete zkontrolovat, je $dtId
každé dvojče v kolekci a koncový řetězec je -small
.
SELECT *
FROM DIGITALTWINS T
WHERE ENDSWITH(T.$dtId, '-small')
IS_BOOL
Funkce kontroly typů pro určení, zda vlastnost má logickou hodnotu.
Tato funkce se často kombinuje s jinými predikáty, pokud program zpracovávající výsledky dotazu vyžaduje logickou hodnotu a chcete vyfiltrovat případy, kdy vlastnost není logická hodnota.
Syntaxe
IS_BOOL(<property>)
Argumenty
<property>
, vlastnost, která zkontroluje, jestli se jedná o logickou hodnotu.
Vrácení
Logická hodnota označující, zda typ zadané vlastnosti je logická hodnota.
Příklad
Následující dotaz vybere digitální dvojčata, která mají logickou HasTemperature
vlastnost.
SELECT *
FROM DIGITALTWINS T
WHERE IS_BOOL( HasTemperature )
Následující dotaz vychází z výše uvedeného příkladu a vybere digitální dvojčata, která mají logickou HasTemperature
vlastnost, a hodnota této vlastnosti není false
.
SELECT *
FROM DIGITALTWINS T
WHERE IS_BOOL( HasTemperature ) AND HasTemperature != false
IS_DEFINED
Funkce kontroly typu k určení, zda je definována vlastnost.
Syntaxe
IS_DEFINED(<property>)
Argumenty
<property>
, vlastnost k určení, zda je definována.
Vrácení
Logická hodnota označující, zda byla vlastnost přiřazena hodnota.
Příklad
Následující dotaz vrátí všechna digitální dvojčata, která mají definovanou Location
vlastnost.
SELECT *
FROM DIGITALTWINS
WHERE IS_DEFINED(Location)
IS_NULL
Funkce kontroly typů pro určení, zda je null
hodnota vlastnosti .
Syntaxe
IS_NULL(<property>)
Argumenty
<property>
, vlastnost, která zkontroluje, jestli má hodnotu null.
Vrácení
Logická hodnota označující, zda je null
typ zadané vlastnosti .
Příklad
Následující dotaz vrátí dvojčata, která nemají hodnotu null pro temperature. Další informace o operátoru použitém NOT
v tomto dotazu najdete v referenčních informacích k dotazovacímu jazyku Azure Digital Twins: Operátory.
SELECT *
FROM DIGITALTWINS T
WHERE NOT IS_NULL(T.Temperature)
IS_NUMBER
Funkce kontroly typu pro určení, zda má vlastnost číselnou hodnotu.
Tato funkce se často kombinuje s jinými predikáty, pokud program zpracovávající výsledky dotazu vyžaduje číselnou hodnotu a chcete vyfiltrovat případy, kdy vlastnost není číslo.
Syntaxe
IS_NUMBER(<property>)
Argumenty
<property>
– vlastnost, která zkontroluje, jestli se jedná o číslo.
Vrácení
Logická hodnota označující, zda je typ zadané vlastnosti číslo.
Příklad
Následující dotaz vybere digitální dvojčata, která mají číselnou Capacity
vlastnost a její hodnota se nerovná 0.
SELECT *
FROM DIGITALTWINS
WHERE IS_NUMBER( Capacity ) AND Capacity != 0
IS_OBJECT
Funkce kontroly typu pro určení, jestli je hodnota vlastnosti typu objektu JSON.
Tato funkce se často kombinuje s jinými predikáty, pokud program zpracovávající výsledky dotazu vyžaduje objekt JSON a chcete vyfiltrovat případy, kdy hodnota není objekt JSON.
Syntaxe
IS_OBJECT<property>)
Argumenty
<property>
, vlastnost, která kontroluje, zda se jedná o typ objektu.
Vrácení
Logická hodnota označující, jestli je typem zadané vlastnosti objekt JSON.
Příklad
Následující dotaz vybere všechna digitální dvojčata, ve kterých se tento objekt nazývá MapObject
, a nemá podřízenou vlastnost TemperatureReading
.
SELECT *
FROM DIGITALTWINS
WHERE IS_OBJECT( MapObject ) AND NOT IS_DEFINED ( MapObject.TemperatureReading )
IS_OF_MODEL
Kontrola typů a funkce k určení, zda je dvojče konkrétního typu modelu. Zahrnuje modely, které dědí ze zadaného modelu.
Syntaxe
IS_OF_MODEL(<twin-collection>,'<model-ID>', exact)
Argumenty
Požaduje se:
<model-ID>
: ID modelu, které chcete zkontrolovat.
Nepovinné:
<twin-collection>
: Zadejte kolekci dvojčat, která se má prohledávat, pokud existuje více než jedna kolekce (například přiJOIN
použití).exact
: Vyžaduje přesnou shodu. Pokud tento parametr není nastavený, sada výsledků obsahuje dvojčata s modely, které dědí ze zadaného modelu.
Vrácení
Logická hodnota označující, jestli zadané dvojče odpovídá zadanému typu modelu.
Příklad
Následující dotaz vrátí dvojčata z kolekce DT, která jsou přesně typu modelu dtmi:example:room;1
.
SELECT ROOM FROM DIGITALTWINS DT WHERE IS_OF_MODEL(DT, 'dtmi:example:room;1', exact)
IS_PRIMITIVE
Funkce kontroly typů pro určení, zda je hodnota vlastnosti primitivního typu (řetězec, logická hodnota, číslice nebo null
).
Tato funkce se často kombinuje s jinými predikáty, pokud program zpracovávající výsledky dotazu vyžaduje primitivní hodnotu typu a chcete vyfiltrovat případy, kdy vlastnost není primitivní.
Syntaxe
IS_PRIMITIVE(<property>)
Argumenty
<property>
– vlastnost, která kontroluje, jestli se jedná o primitivní typ.
Vrácení
Logická hodnota označující, zda typ zadané vlastnosti je jedním z primitivních typů (řetězec, logická hodnota, číselná hodnota nebo null
).
Příklad
Následující dotaz vrátí area
vlastnost Factory s ID "ABC", pouze pokud area
je vlastnost primitivním typem. Další informace o promítání určitých sloupců ve výsledku dotazu (podobně jako u tohoto dotazu area
) najdete v referenčních informacích k dotazovacímu jazyku Azure Digital Twins: klauzule SELECT.
SELECT Factory.area
FROM DIGITALTWINS Factory
WHERE Factory.$dtId = 'ABC'
AND IS_PRIMITIVE(Factory.area)
IS_STRING
Funkce kontroly typů pro určení, zda má vlastnost řetězcovou hodnotu.
Tato funkce se často kombinuje s jinými predikáty, pokud program zpracovávající výsledky dotazu vyžaduje řetězcovou hodnotu a chcete vyfiltrovat případy, kdy vlastnost není řetězec.
Syntaxe
IS_STRING(<property>)
Argumenty
<property>
– vlastnost, která kontroluje, jestli se jedná o řetězec.
Vrácení
Logická hodnota označující, jestli je typ zadaného výrazu řetězec.
Příklad
Následující dotaz vybere digitální dvojčata, která mají vlastnost řetězcové vlastnosti Status
a její hodnota se nerovná Completed
.
SELECT *
FROM DIGITIALTWINS
WHERE IS_STRING( Status ) AND Status != 'Completed'
STARTSWITH
Řetězcová funkce, která určuje, jestli řetězcová vlastnost dvojčete začíná určitým jiným řetězcem.
Syntaxe
STARTSWITH(<string-to-check>,<beginning-string>)
Argumenty
<string-to-check>
: Vlastnost dvojčete typu string, kterou chcete zkontrolovat na začátku<beginning-string>
: Řetězec představující začátek kontroly
Vrácení
Logická hodnota označující, jestli první řetězcový výraz začíná druhým.
Příklad
Následující dotaz vrátí všechna digitální dvojčata, jejichž ID začínají area1-
. Řetězec, který chcete zkontrolovat, je $dtId
každé dvojče v kolekci a počáteční řetězec je area1-
.
SELECT *
FROM DIGITALTWINS T
WHERE STARTSWITH(T.$dtId, 'area1-')