Delen via


Naslaginformatie over azure Digital Twins-querytaal: Functions

Dit document bevat naslaginformatie over functies voor de Azure Digital Twins-querytaal.

ARRAY_CONTAINS

Een functie om te bepalen of een matrixeigenschap van een dubbel (ondersteund in DTDL v3) een andere opgegeven waarde bevat.

Syntaxis

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

Argumenten

  • <array-to-check>: Een eigenschap van een matrixtypedubbel die u wilt controleren op de opgegeven waarde
  • <contained-value>: Een tekenreeks, geheel getal, dubbel of booleaanse waarde die de waarde vertegenwoordigt die moet worden gecontroleerd in de matrix

Retouren

Een Booleaanse waarde die aangeeft of de matrix de opgegeven waarde bevat.

voorbeeld

De volgende query retourneert de naam van alle digitale dubbels die een matrixeigenschap floor_numberhebben en de matrix die in deze eigenschap is opgeslagen, bevat een waarde van 2.

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

Beperkingen

De functie ARRAY_CONTAINS() heeft de volgende beperkingen:

  • Matrixindexering wordt niet ondersteund.
    • Bijvoorbeeld: array-name[index] = 'foo_bar'
  • Subquery's binnen de eigenschap ARRAY_CONTAINS() worden niet ondersteund.
    • Bijvoorbeeld: SELECT T.name FROM DIGITALTWINS T WHERE ARRAY_CONTAINS (SELECT S.floor_number FROM DIGITALTWINS S, 4)
  • ARRAY_CONTAINS() wordt niet ondersteund voor eigenschappen van relaties.
    • Stel Floor.Contains dat het een relatie is van Floor to Room en een eigenschap heeft lift met een waarde van ["operating", "under maintenance", "under construction"]. Query's zoals deze worden niet ondersteund: SELECT Room FROM DIGITALTWINS Floor JOIN Room RELATED Floor.Contains WHERE Floor.$dtId = 'Floor-35' AND ARRAY_CONTAINS(Floor.Contains.lift, "operating").
  • ARRAY_CONTAINS() zoekt niet in geneste matrices.
    • Stel dat een tweeling een tags eigenschap heeft met een waarde van [1, [2,3], 3, 4]. Een zoekopdracht naar 2 het gebruik van de query SELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, 2) retourneert False. Een zoekopdracht naar een waarde in de matrix op het hoogste niveau, zoals 1 het gebruik van de query SELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, 1), retourneert True.
  • ARRAY_CONTAINS() wordt niet ondersteund als de matrix objecten bevat.
    • Stel dat een tweeling een tags eigenschap heeft met een waarde van [Room1, Room2] waar Room1 en Room2 objecten zijn. Query's zoals deze worden niet ondersteund: SELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, Room2).

CONTAINS

Een tekenreeksfunctie om te bepalen of een tekenreekseigenschap van een dubbel een andere opgegeven tekenreekswaarde bevat.

Syntaxis

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

Argumenten

  • <string-to-check>: Een tekenreekstypedubbeleigenschap die u wilt controleren op de opgegeven waarde
  • <contained-string>: Een tekenreeks die de waarde vertegenwoordigt die moet worden gecontroleerd op

Retouren

Een Booleaanse waarde die aangeeft of de eerste tekenreeksexpressie de reeks tekens bevat die zijn gedefinieerd in de tweede tekenreeksexpressie.

voorbeeld

De volgende query retourneert alle digitale dubbels waarvan de id's bevatten -route. De tekenreeks die moet worden gecontroleerd, is de $dtId van elke dubbel in de verzameling en de ingesloten tekenreeks is -route.

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

ENDSWITH

Een tekenreeksfunctie om te bepalen of een tekenreekseigenschap van een dubbel eindigt in een bepaalde andere tekenreeks.

Syntaxis

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

Argumenten

  • <string-to-check>: Een tekenreekstypedubbeleigenschap die u wilt controleren op het einde van
  • <ending-string>: Een tekenreeks die het einde aangeeft dat moet worden gecontroleerd op

Retouren

Een Booleaanse waarde die aangeeft of de eerste tekenreeksexpressie eindigt op de tweede.

voorbeeld

De volgende query retourneert alle digitale dubbels waarvan de id's eindigen.-small De tekenreeks die moet worden gecontroleerd, is de $dtId van elke dubbel in de verzameling en de eindtekenreeks is -small.

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

IS_BOOL

Een functie voor het controleren van typen om te bepalen of een eigenschap een Booleaanse waarde heeft.

Deze functie wordt vaak gecombineerd met andere predicaten als het programma voor het verwerken van de queryresultaten een Booleaanse waarde vereist en u wilt uitfilteren in gevallen waarin de eigenschap geen Booleaanse waarde is.

Syntaxis

IS_BOOL(<property>)

Argumenten

<property>, een eigenschap om te controleren of het een Booleaanse waarde is.

Retouren

Een Booleaanse waarde die aangeeft of het type van de opgegeven eigenschap een Booleaanse waarde is.

voorbeeld

De volgende query selecteert de digitale dubbels met een booleaanse HasTemperature eigenschap.

SELECT *
FROM DIGITALTWINS T
WHERE IS_BOOL( HasTemperature )

De volgende query bouwt voort op het bovenstaande voorbeeld om de digitale dubbels te selecteren die een booleaanse HasTemperature eigenschap hebben en de waarde van die eigenschap niet false.

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

IS_DEFINED

Een typecontrolefunctie om te bepalen of een eigenschap is gedefinieerd.

Syntaxis

IS_DEFINED(<property>)

Argumenten

<property>, een eigenschap om te bepalen of deze is gedefinieerd.

Retouren

Een Booleaanse waarde die aangeeft of aan de eigenschap een waarde is toegewezen.

voorbeeld

De volgende query retourneert alle digitale dubbels die een gedefinieerde Location eigenschap hebben.

SELECT *
FROM DIGITALTWINS
WHERE IS_DEFINED(Location)

IS_NULL

Een typecontrolefunctie om te bepalen of de waarde van een eigenschap is null.

Syntaxis

IS_NULL(<property>)

Argumenten

<property>, een eigenschap om te controleren of deze null is.

Retouren

Een Booleaanse waarde die aangeeft of het type van de opgegeven eigenschap is null.

voorbeeld

De volgende query retourneert tweelingen die geen null-waarde hebben voor Temperatuur. Zie de naslaginformatie over azure Digital Twins-querytaal voor meer informatie over de NOT operator die in deze query wordt gebruikt: Operators.

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

IS_NUMBER

Een functie voor het controleren van typen om te bepalen of een eigenschap een getalwaarde heeft.

Deze functie wordt vaak gecombineerd met andere predicaten als het programma voor het verwerken van de queryresultaten een getalwaarde vereist en u wilt uitfilteren in gevallen waarin de eigenschap geen getal is.

Syntaxis

IS_NUMBER(<property>)

Argumenten

<property>, een eigenschap om te controleren of het een getal is.

Retouren

Een Booleaanse waarde die aangeeft of het type van de opgegeven eigenschap een getal is.

voorbeeld

De volgende query selecteert de digitale dubbels met een numerieke Capacity eigenschap en de waarde is niet gelijk aan 0.

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

IS_OBJECT

Een functie voor het controleren van typen om te bepalen of de waarde van een eigenschap van een JSON-objecttype is.

Deze functie wordt vaak gecombineerd met andere predicaten als het programma voor het verwerken van de queryresultaten een JSON-object vereist en u wilt uitfilteren in gevallen waarin de waarde geen JSON-object is.

Syntaxis

IS_OBJECT<property>)

Argumenten

<property>, een eigenschap om te controleren of deze van een objecttype is.

Retouren

Een Booleaanse waarde die aangeeft of het type van de opgegeven eigenschap een JSON-object is.

voorbeeld

Met de volgende query worden alle digitale dubbels geselecteerd waarin dit een object is aangeroepen MapObjecten er geen onderliggende eigenschap TemperatureReadingis.

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

IS_OF_MODEL

Een typecontrole en functie om te bepalen of een dubbel van een bepaald modeltype is. Bevat modellen die overnemen van het opgegeven model.

Syntaxis

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

Argumenten

Vereist:

  • <model-ID>: de model-id die moet worden gecontroleerd.

Optioneel:

  • <twin-collection>: Geef een tweelingverzameling op om te zoeken wanneer er meer dan één is (zoals wanneer een JOIN wordt gebruikt).
  • exact: Een exacte overeenkomst vereisen. Als deze parameter niet is ingesteld, bevat de resultatenset dubbels met modellen die overnemen van het opgegeven model.

Retouren

Een Booleaanse waarde die aangeeft of de opgegeven dubbel overeenkomt met het opgegeven modeltype.

voorbeeld

De volgende query retourneert tweelingen uit de DT-verzameling die precies van het modeltype dtmi:example:room;1zijn.

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

IS_PRIMITIVE

Een typecontrolefunctie om te bepalen of de waarde van een eigenschap van een primitief type is (tekenreeks, Booleaanse waarde, numeriek of null).

Deze functie wordt vaak gecombineerd met andere predicaten als het programma voor het verwerken van de queryresultaten een primitieve waarde vereist en u wilt uitfilteren gevallen waarin de eigenschap niet primitief is.

Syntaxis

IS_PRIMITIVE(<property>)

Argumenten

<property>, een eigenschap om te controleren of deze van een primitief type is.

Retouren

Een Booleaanse waarde die aangeeft of het type van de opgegeven eigenschap een van de primitieve typen is (tekenreeks, Booleaanse waarde, numeriek of null).

voorbeeld

De volgende query retourneert de area eigenschap van de factory met de id 'ABC', alleen als de area eigenschap een primitief type is. Zie voor meer informatie over het projecteren van bepaalde kolommen in het queryresultaat (zoals deze query doet met area), azure Digital Twins-querytaalverwijzing: SELECT-component.

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

IS_STRING

Een functie voor het controleren van typen om te bepalen of een eigenschap een tekenreekswaarde heeft.

Deze functie wordt vaak gecombineerd met andere predicaten als het programma voor het verwerken van de queryresultaten een tekenreekswaarde vereist en u wilt uitfilteren in gevallen waarin de eigenschap geen tekenreeks is.

Syntaxis

IS_STRING(<property>)

Argumenten

<property>, een eigenschap om te controleren of het een tekenreeks is.

Retouren

Een Booleaanse waarde die aangeeft of het type van de opgegeven expressie een tekenreeks is.

voorbeeld

De volgende query selecteert de digitale dubbels met een eigenschap Status tekenreeks en de waarde ervan is niet gelijk aan Completed.

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

STARTSWITH

Een tekenreeksfunctie om te bepalen of een tekenreekseigenschap van een dubbel begint met een bepaalde andere tekenreeks.

Syntaxis

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

Argumenten

  • <string-to-check>: Een tekenreekstypedubbeleigenschap die u wilt controleren aan het begin van
  • <beginning-string>: Een tekenreeks die het begin aangeeft om te controleren op

Retouren

Een Booleaanse waarde die aangeeft of de eerste tekenreeksexpressie begint met de tweede.

voorbeeld

De volgende query retourneert alle digitale dubbels waarvan de id's beginnen.area1- De tekenreeks die moet worden gecontroleerd, is de $dtId van elke dubbel in de verzameling en de begintekenreeks is area1-.

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