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_numberpole 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'
  • 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)
  • 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").
  • 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í dotazu SELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, 2) vrátí Falsehodnotu . Hledání hodnoty v poli nejvyšší úrovně, jako je 1 použití dotazu SELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, 1), vrátí True.
  • ARRAY_CONTAINS() se nepodporuje, pokud pole obsahuje objekty.
    • Řekněme například, že dvojče má tags vlastnost s hodnotou [Room1, Room2] where Room1 a Room2 jsou objekty. Dotazy, jako je tato, se nepodporují: SELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, Room2).

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 nullhodnota vlastnosti .

Syntaxe

IS_NULL(<property>)

Argumenty

<property>, vlastnost, která zkontroluje, jestli má hodnotu null.

Vrácení

Logická hodnota označující, zda je nulltyp 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ři JOIN 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-')