Condividi tramite


Informazioni di riferimento sul linguaggio di query di Gemelli digitali di Azure: Funzioni

Questo documento contiene informazioni di riferimento sulle funzioni per il linguaggio di query di Gemelli digitali di Azure.

ARRAY_CONTAINS

Funzione per determinare se una proprietà di matrice di un gemello (supportata in DTDL v3) contiene un altro valore specificato.

Sintassi

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

Argomenti

  • <array-to-check>: proprietà gemella di tipo matrice che si vuole verificare per il valore specificato
  • <contained-value>: stringa, integer, double o booleano che rappresenta il valore da controllare all'interno della matrice

Resi

Valore booleano che indica se la matrice contiene il valore specificato.

Esempio

La query seguente restituisce il nome di tutti i gemelli digitali che hanno una proprietà floor_numberdi matrice e la matrice archiviata in questa proprietà contiene il valore .2

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

Limiti

La funzione ARRAY_CONTAINS() presenta le limitazioni seguenti:

  • L'indicizzazione di matrici non è supportata.
    • Ad esempio, usare array-name[index] = 'foo_bar'
  • Le sottoquery all'interno della proprietà ARRAY_CONTAINS() non sono supportate.
    • Ad esempio, usare SELECT T.name FROM DIGITALTWINS T WHERE ARRAY_CONTAINS (SELECT S.floor_number FROM DIGITALTWINS S, 4)
  • ARRAY_CONTAINS() non è supportato nelle proprietà delle relazioni.
    • Si suppongaFloor.Contains, ad esempio, che sia una relazione da Floor a Room e che abbia una lift proprietà con un valore .["operating", "under maintenance", "under construction"] Le query come questa non sono supportate: SELECT Room FROM DIGITALTWINS Floor JOIN Room RELATED Floor.Contains WHERE Floor.$dtId = 'Floor-35' AND ARRAY_CONTAINS(Floor.Contains.lift, "operating").
  • ARRAY_CONTAINS() non esegue la ricerca all'interno di matrici annidate.
    • Si supponga, ad esempio, che un gemello abbia una tags proprietà con un valore .[1, [2,3], 3, 4] Una ricerca per 2 l'uso della query SELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, 2) restituisce False. Una ricerca di un valore nella matrice di livello superiore, ad esempio 1 usando la query SELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, 1), restituisce True.
  • ARRAY_CONTAINS() non è supportato se la matrice contiene oggetti.
    • Si supponga, ad esempio, che un gemello abbia una tags proprietà con un valore dove [Room1, Room2] Room1 e Room2 sono oggetti . Le query come questa non sono supportate: SELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, Room2).

CONTAINS

Funzione stringa per determinare se una proprietà stringa di un gemello contiene un altro valore stringa specificato.

Sintassi

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

Argomenti

  • <string-to-check>: proprietà gemella di tipo stringa che si vuole verificare per il valore specificato
  • <contained-string>: stringa che rappresenta il valore da verificare

Resi

Valore booleano che indica se la prima espressione stringa contiene la sequenza di caratteri definita nella seconda espressione stringa.

Esempio

La query seguente restituisce tutti i gemelli digitali i cui ID contengono -route. La stringa da controllare è l'oggetto $dtId di ogni gemello nell'insieme e la stringa contenuta è -route.

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

ENDSWITH

Funzione stringa per determinare se una proprietà stringa di un gemello termina in una determinata stringa.

Sintassi

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

Argomenti

  • <string-to-check>: proprietà del gemello di tipo stringa che si desidera controllare la fine di
  • <ending-string>: stringa che rappresenta l'estremità finale da verificare

Resi

Valore booleano che indica se la prima espressione stringa termina con la seconda.

Esempio

La query seguente restituisce tutti i gemelli digitali i cui ID terminano in -small. La stringa da controllare è l'oggetto $dtId di ogni gemello nella raccolta e la stringa finale è -small.

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

IS_BOOL

Funzione di controllo dei tipi per determinare se una proprietà ha un valore booleano.

Questa funzione viene spesso combinata con altri predicati se il programma che elabora i risultati della query richiede un valore booleano e si vogliono filtrare i casi in cui la proprietà non è un valore booleano.

Sintassi

IS_BOOL(<property>)

Argomenti

<property>, una proprietà per verificare se si tratta di un valore booleano.

Resi

Valore booleano che indica se il tipo della proprietà specificata è un valore booleano.

Esempio

Nella query seguente vengono selezionati i gemelli digitali con una proprietà booleana HasTemperature .

SELECT *
FROM DIGITALTWINS T
WHERE IS_BOOL( HasTemperature )

La query seguente si basa sull'esempio precedente per selezionare i gemelli digitali con una proprietà booleana HasTemperature e il valore di tale proprietà non falseè .

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

IS_DEFINED

Funzione di controllo dei tipi per determinare se è definita una proprietà.

Sintassi

IS_DEFINED(<property>)

Argomenti

<property>, una proprietà per determinare se è definita.

Resi

Valore booleano che indica se alla proprietà è stato assegnato un valore.

Esempio

La query seguente restituisce tutti i gemelli digitali che dispongono di una proprietà definita Location .

SELECT *
FROM DIGITALTWINS
WHERE IS_DEFINED(Location)

IS_NULL

Funzione di controllo dei tipi per determinare se il valore di una proprietà è null.

Sintassi

IS_NULL(<property>)

Argomenti

<property>, una proprietà per verificare se è Null.

Resi

Valore booleano che indica se il tipo della proprietà specificata è null.

Esempio

La query seguente restituisce gemelli che non hanno un valore Null per Temperature. Per altre informazioni sull'operatore NOT usato in questa query, vedere Informazioni di riferimento sul linguaggio di query di Gemelli digitali di Azure: Operatori.

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

IS_NUMBER

Funzione di controllo dei tipi per determinare se una proprietà ha un valore numerico.

Questa funzione viene spesso combinata con altri predicati se il programma che elabora i risultati della query richiede un valore numerico e si desidera filtrare i case in cui la proprietà non è un numero.

Sintassi

IS_NUMBER(<property>)

Argomenti

<property>, una proprietà per verificare se si tratta di un numero.

Resi

Valore booleano che indica se il tipo della proprietà specificata è un numero.

Esempio

La query seguente seleziona i gemelli digitali con una proprietà numerica Capacity e il relativo valore non è uguale a 0.

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

IS_OBJECT

Funzione di controllo dei tipi per determinare se il valore di una proprietà è di un tipo di oggetto JSON.

Questa funzione viene spesso combinata con altri predicati se il programma che elabora i risultati della query richiede un oggetto JSON e si vogliono filtrare i casi in cui il valore non è un oggetto JSON.

Sintassi

IS_OBJECT<property>)

Argomenti

<property>, una proprietà per verificare se è di un tipo di oggetto.

Resi

Valore booleano che indica se il tipo della proprietà specificata è un oggetto JSON.

Esempio

La query seguente seleziona tutti i gemelli digitali in cui si tratta di un oggetto denominato MapObjecte non ha una proprietà TemperatureReadingfiglio .

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

IS_OF_MODEL

Controllo dei tipi e funzione per determinare se un gemello è di un particolare tipo di modello. Include modelli che ereditano dal modello specificato.

Sintassi

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

Argomenti

Obbligatorio:

  • <model-ID>: ID modello da verificare.

Facoltativi:

  • <twin-collection>: specificare una raccolta di dispositivi gemelli da cercare quando sono presenti più di una raccolta , ad esempio quando viene usato un oggetto JOIN .
  • exact: richiede una corrispondenza esatta. Se questo parametro non è impostato, il set di risultati include gemelli con modelli che ereditano dal modello specificato.

Resi

Valore booleano che indica se il gemello specificato corrisponde al tipo di modello specificato.

Esempio

La query seguente restituisce gemelli dalla raccolta DT che sono esattamente del tipo di dtmi:example:room;1modello .

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

IS_PRIMITIVE

Funzione di controllo dei tipi per determinare se il valore di una proprietà è di un tipo primitivo (string, Boolean, numeric o null).

Questa funzione viene spesso combinata con altri predicati se il programma che elabora i risultati della query richiede un valore tipizzato primitivo e si vogliono filtrare i casi in cui la proprietà non è primitiva.

Sintassi

IS_PRIMITIVE(<property>)

Argomenti

<property>, una proprietà per verificare se è di un tipo primitivo.

Resi

Valore booleano che indica se il tipo della proprietà specificata è uno dei tipi primitivi (string, Boolean, numeric o null).

Esempio

La query seguente restituisce la area proprietà della factory con l'ID "ABC", solo se la area proprietà è un tipo primitivo. Per altre informazioni sulla proiezione di determinate colonne nel risultato della query area,vedere Informazioni di riferimento sul linguaggio di query di Gemelli digitali di Azure: clausola edizione Standard LECT.

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

IS_STRING

Funzione di controllo dei tipi per determinare se una proprietà ha un valore stringa.

Questa funzione viene spesso combinata con altri predicati se il programma che elabora i risultati della query richiede un valore stringa e si vogliono filtrare i casi in cui la proprietà non è una stringa.

Sintassi

IS_STRING(<property>)

Argomenti

<property>, una proprietà per verificare se si tratta di una stringa.

Resi

Valore booleano che indica se il tipo dell'espressione specificata è una stringa.

Esempio

La query seguente seleziona i gemelli digitali con una proprietà della proprietà Status stringa e il relativo valore non è uguale a Completed.

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

STARTSWITH

Funzione stringa per determinare se una proprietà stringa di un gemello inizia con una determinata stringa.

Sintassi

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

Argomenti

  • <string-to-check>: una proprietà gemella di tipo stringa che si desidera controllare l'inizio di
  • <beginning-string>: stringa che rappresenta l'inizio da verificare

Resi

Valore booleano che indica se la prima espressione stringa inizia con la seconda.

Esempio

La query seguente restituisce tutti i gemelli digitali i cui ID iniziano con area1-. La stringa da controllare è l'oggetto $dtId di ogni gemello nell'insieme e la stringa iniziale è area1-.

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