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_number
hebben 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'
- Bijvoorbeeld:
- 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)
- Bijvoorbeeld:
- ARRAY_CONTAINS() wordt niet ondersteund voor eigenschappen van relaties.
- Stel
Floor.Contains
dat het een relatie is van Floor to Room en een eigenschap heeftlift
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")
.
- Stel
- 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 naar2
het gebruik van de querySELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, 2)
retourneertFalse
. Een zoekopdracht naar een waarde in de matrix op het hoogste niveau, zoals1
het gebruik van de querySELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, 1)
, retourneertTrue
.
- Stel dat een tweeling een
- ARRAY_CONTAINS() wordt niet ondersteund als de matrix objecten bevat.
- Stel dat een tweeling een
tags
eigenschap heeft met een waarde van[Room1, Room2]
waarRoom1
enRoom2
objecten zijn. Query's zoals deze worden niet ondersteund:SELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, Room2)
.
- Stel dat een tweeling een
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 MapObject
en er geen onderliggende eigenschap TemperatureReading
is.
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 eenJOIN
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;1
zijn.
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-')