Referenz zur Azure Digital Twins-Abfragesprache: Funktionen
Dieses Dokument enthält Referenzinformationen zu Funktionen für die Azure Digital Twins-Abfragesprache.
ARRAY_CONTAINS
Eine Funktion, die bestimmt, ob eine Arrayeigenschaft eines Zwillings (unterstützt in DTDL v3) einen anderen angegebenen Wert enthält.
Syntax
ARRAY_CONTAINS(<array-to-check>,<contained-value>)
Argumente
<array-to-check>
: Eine Zwillingseigenschaft vom Typ „Array“, die Sie auf den angegebenen Wert überprüfen möchten<contained-value>
: Ein Wert vom Typ „String“, „Integer“, „Double“ oder „Boolean“, der den Wert darstellt, nach dem innerhalb des Arrays gesucht werden soll
Gibt zurück
Wert vom Typ „Boolean“, der angibt, ob das Array den angegebenen Wert enthält.
Beispiel
Die folgende Abfrage gibt den Namen aller digitalen Zwillinge zurück, die über die Arrayeigenschaft floor_number
verfügen, und das in dieser Eigenschaft gespeicherte Array enthält den Wert 2
.
SELECT T.name
FROM DIGITALTWINS T
WHERE ARRAY_CONTAINS (T.floor_number, 2)
Begrenzungen
Die Funktion ARRAY_CONTAINS() weist die folgenden Einschränkungen auf:
- Arrayindizierung wird nicht unterstützt.
- Beispiel:
array-name[index] = 'foo_bar'
- Beispiel:
- Unterabfragen innerhalb der eigenschaft ARRAY_CONTAINS() werden nicht unterstützt.
- Beispiel:
SELECT T.name FROM DIGITALTWINS T WHERE ARRAY_CONTAINS (SELECT S.floor_number FROM DIGITALTWINS S, 4)
- Beispiel:
- ARRAY_CONTAINS() wird für Die Eigenschaften von Beziehungen nicht unterstützt.
- Beispiel:
Floor.Contains
ist eine Beziehung zwischen „Floor“ und „Room“ und verfügt über die Eigenschaftlift
mit dem Wert["operating", "under maintenance", "under construction"]
. Abfragen wie dies werden nicht unterstützt:SELECT Room FROM DIGITALTWINS Floor JOIN Room RELATED Floor.Contains WHERE Floor.$dtId = 'Floor-35' AND ARRAY_CONTAINS(Floor.Contains.lift, "operating")
.
- Beispiel:
- ARRAY_CONTAINS() sucht nicht in geschachtelten Arrays.
- Angenommen, ein Zwilling verfügt über die Eigenschaft
tags
mit dem Wert[1, [2,3], 3, 4]
. Eine Suche nach2
der Verwendung der AbfrageSELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, 2)
gibt zurückFalse
. Eine Suche nach einem Wert im Array der obersten Ebene, z1
. B. mithilfe der AbfrageSELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, 1)
, wird zurückgegebenTrue
.
- Angenommen, ein Zwilling verfügt über die Eigenschaft
- ARRAY_CONTAINS() wird nicht unterstützt, wenn das Array Objekte enthält.
- Angenommen, ein Zwilling verfügt über die Eigenschaft
tags
mit dem Wert[Room1, Room2]
, wobeiRoom1
undRoom2
Objekte darstellen. Abfragen wie dies werden nicht unterstützt:SELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, Room2)
.
- Angenommen, ein Zwilling verfügt über die Eigenschaft
CONTAINS
Eine Zeichenfolgenfunktion, mit der bestimmt wird, ob eine Zeichenfolgeneigenschaft eines Zwillings einen anderen angegebenen Zeichenfolgenwert enthält.
Syntax
CONTAINS(<string-to-check>,<contained-string>)
Argumente
<string-to-check>
: Eine Zwillingseigenschaft vom Zeichenfolgentyp (string), die Sie auf den angegebenen Wert überprüfen möchten.<contained-string>
: Eine Zeichenfolge, die den Wert darstellt, auf den geprüft werden soll.
Gibt zurück
Ein boolescher Wert, der angibt, ob der erste Zeichenfolgenausdruck die im zweiten Zeichenfolgenausdruck definierte Zeichenfolgensequenz enthält.
Beispiel
Die folgende Abfrage gibt alle digitalen Zwillinge zurück, deren IDs -route
enthalten. Die zu überprüfende Zeichenfolge ist der $dtId
jedes Zwillings in der Sammlung, und die enthaltene Zeichenfolge lautet -route
.
SELECT *
FROM DIGITALTWINS T
WHERE CONTAINS(T.$dtId, '-route')
ENDSWITH
Eine Zeichenfolgenfunktion, mit der bestimmt wird, ob eine Zeichenfolgeneigenschaft eines Zwillings auf eine bestimmte andere Zeichenfolge endet.
Syntax
ENDSWITH(<string-to-check>,<ending-string>)
Argumente
<string-to-check>
: Eine Zwillingseigenschaft vom Zeichenfolgentyp (string), deren Ende Sie überprüfen möchten.<ending-string>
: Eine Zeichenfolge, die die Endung darstellt, auf die geprüft werden soll.
Gibt zurück
Ein boolescher Wert, um anzugeben, ob der erste Zeichenfolgenausdruck mit dem zweiten beginnt.
Beispiel
Die folgende Abfrage gibt alle digitalen Zwillinge zurück, deren IDs auf -small
enden. Die zu überprüfende Zeichenfolge ist der $dtId
jedes Zwillings in der Sammlung, und die Endzeichenfolge lautet -small
.
SELECT *
FROM DIGITALTWINS T
WHERE ENDSWITH(T.$dtId, '-small')
IS_BOOL
Eine Typüberprüfungsfunktion zum Bestimmen, ob eine Eigenschaft einen booleschen Wert aufweist.
Diese Funktion wird häufig mit anderen Prädikaten kombiniert, wenn das Programm, das die Abfrageergebnisse verarbeitet, einen booleschen Wert erfordert, und Sie Fälle herausfiltern möchten, in denen die Eigenschaft kein boolescher Wert ist.
Syntax
IS_BOOL(<property>)
Argumente
<property>
, eine Eigenschaft, um zu überprüfen, ob es sich um einen booleschen Wert handelt.
Gibt zurück
Ein boolescher Wert, der angibt, ob der Typ der angegebenen Eigenschaft ein boolescher Wert ist.
Beispiel
Die folgende Abfrage wählt die digitalen Zwillinge aus, die über eine boolesche HasTemperature
-Eigenschaft verfügen.
SELECT *
FROM DIGITALTWINS T
WHERE IS_BOOL( HasTemperature )
Die folgende Abfrage baut auf dem obigen Beispiel auf, um die digitalen Zwillinge mit einer booleschen HasTemperature
Eigenschaft auszuwählen, und der Wert dieser Eigenschaft ist nicht false
.
SELECT *
FROM DIGITALTWINS T
WHERE IS_BOOL( HasTemperature ) AND HasTemperature != false
IS_DEFINED
Eine Typprüfungsfunktion, um festzustellen, ob eine Eigenschaft definiert ist.
Syntax
IS_DEFINED(<property>)
Argumente
<property>
, eine Eigenschaft, um zu bestimmen, ob sie definiert ist.
Gibt zurück
Ein boolescher Wert, um anzugeben, ob der Eigenschaft ein Wert zugewiesen wurde.
Beispiel
Die folgende Abfrage gibt alle digitalen Zwillinge zurück, die eine definierte Location
Eigenschaft haben.
SELECT *
FROM DIGITALTWINS
WHERE IS_DEFINED(Location)
IS_NULL
Eine Typüberprüfungsfunktion zum Bestimmen, ob der Wert einer Eigenschaft ist null
.
Syntax
IS_NULL(<property>)
Argumente
<property>
, eine Eigenschaft, um zu überprüfen, ob es null ist.
Gibt zurück
Ein boolescher Wert, der angibt, ob der Typ der angegebenen Eigenschaft null
.
Beispiel
Die folgende Abfrage gibt Zwillinge zurück, die keinen NULL-Wert für Temperatur haben. Weitere Informationen zum in dieser Abfrage verwendeten NOT
-Operator finden Sie unter Azure Digital Twins – Referenz zur Abfragesprache: Operatoren.
SELECT *
FROM DIGITALTWINS T
WHERE NOT IS_NULL(T.Temperature)
IS_NUMBER
Eine Typprüfungsfunktion zum Bestimmen, ob eine Eigenschaft einen Zahlenwert hat.
Diese Funktion wird häufig mit anderen Prädikaten kombiniert, wenn das Programm, das die Abfrageergebnisse verarbeitet, einen Zahlenwert erfordert, und Sie Fälle herausfiltern möchten, in denen die Eigenschaft keine Zahl ist.
Syntax
IS_NUMBER(<property>)
Argumente
<property>
, eine Eigenschaft, um zu überprüfen, ob es sich um eine Zahl handelt.
Gibt zurück
Ein boolescher Wert, der angibt, ob der Typ der angegebenen Eigenschaft eine Zahl ist.
Beispiel
Die folgende Abfrage wählt die digitalen Zwillinge mit einer numerischen Capacity
Eigenschaft aus, und der Wert ist nicht gleich 0.
SELECT *
FROM DIGITALTWINS
WHERE IS_NUMBER( Capacity ) AND Capacity != 0
IS_OBJECT
Eine Typprüfungsfunktion zum Bestimmen, ob der Wert einer Eigenschaft ein JSON-Objekttyp ist.
Diese Funktion wird häufig mit anderen Prädikaten kombiniert, wenn das Programm, das die Abfrageergebnisse verarbeitet, ein JSON-Objekt erfordert, und Sie Fälle herausfiltern möchten, in denen der Wert kein JSON-Objekt ist.
Syntax
IS_OBJECT<property>)
Argumente
<property>
, eine Eigenschaft, um zu überprüfen, ob es sich um einen Objekttyp handelt.
Gibt zurück
Ein boolescher Wert, der angibt, ob der Typ der angegebenen Eigenschaft ein JSON-Objekt ist.
Beispiel
Die folgende Abfrage wählt alle digitalen Zwillinge aus, bei denen es sich um ein Objekt handelt, das aufgerufen wird MapObject
, und es verfügt nicht über eine untergeordnete Eigenschaft TemperatureReading
.
SELECT *
FROM DIGITALTWINS
WHERE IS_OBJECT( MapObject ) AND NOT IS_DEFINED ( MapObject.TemperatureReading )
IS_OF_MODEL
Eine Typprüfung und Funktion zur Bestimmung, ob ein Zwilling einem bestimmten Modelltyp angehört. Schließt Modelle ein, die vom angegebenen Modell erben.
Syntax
IS_OF_MODEL(<twin-collection>,'<model-ID>', exact)
Argumente
Erforderlich:
<model-ID>
: Die Modell-ID, nach der gesucht werden soll.
Optional:
<twin-collection>
: Geben Sie eine Zwillingssammlung an, die durchsucht werden soll, wenn mehrere vorhanden sind (z. B. wenn eineJOIN
Verwendet wird).exact
: Erfordert eine genaue Übereinstimmung. Wenn dieser Parameter nicht festgelegt ist, enthält das Resultset Zwillinge mit Modellen, die vom angegebenen Modell erben.
Gibt zurück
Ein boolescher Wert, der angibt, ob der angegebene Zwilling dem angegebenen Modelltyp entspricht.
Beispiel
Die folgende Abfrage gibt Zwillinge aus der DT-Sammlung zurück, die genau vom Modelltyp dtmi:example:room;1
sind.
SELECT ROOM FROM DIGITALTWINS DT WHERE IS_OF_MODEL(DT, 'dtmi:example:room;1', exact)
IS_PRIMITIVE
Eine Typprüfungsfunktion zum Bestimmen, ob der Wert einer Eigenschaft von einem primitiven Typ ist (String, Boolean, Numerisch oder null
).
Diese Funktion wird häufig mit anderen Prädikaten kombiniert, wenn das Programm, das die Abfrageergebnisse verarbeitet, einen primitiven Typwert erfordert, und Sie fälle herausfiltern möchten, in denen die Eigenschaft nicht grundtypisch ist.
Syntax
IS_PRIMITIVE(<property>)
Argumente
<property>
, eine Eigenschaft, um zu überprüfen, ob es sich um einen primitiven Typ handelt.
Gibt zurück
Ein boolescher Wert, der angibt, ob der Typ der angegebenen Eigenschaft einer der primitiven Typen ist (String, Boolean, Numeric oder null
).
Beispiel
Die folgende Abfrage gibt nur dann die area
-Eigenschaft der Factory mit der ID „ABC“ zurück, wenn die area
-Eigenschaft ein primitiver Typ ist. Weitere Informationen zum Projizieren bestimmter Spalten im Abfrageergebnis (wie in dieser Abfrage mit area
) finden Sie unter Azure Digital Twins – Abfragesprachenreferenz: SELECT-Klausel.
SELECT Factory.area
FROM DIGITALTWINS Factory
WHERE Factory.$dtId = 'ABC'
AND IS_PRIMITIVE(Factory.area)
IS_STRING
Eine Typprüfungsfunktion zum Bestimmen, ob eine Eigenschaft einen Zeichenfolgenwert hat.
Diese Funktion wird häufig mit anderen Prädikaten kombiniert, wenn das Programm, das die Abfrageergebnisse verarbeitet, einen Zeichenfolgenwert erfordert, und Sie Fälle herausfiltern möchten, in denen die Eigenschaft keine Zeichenfolge ist.
Syntax
IS_STRING(<property>)
Argumente
<property>
, eine Eigenschaft, um zu überprüfen, ob es sich um eine Zeichenfolge handelt.
Gibt zurück
Ein boolescher Wert, der angibt, ob der angegebene Ausdruck eine Zeichenfolge ist.
Beispiel
Die folgende Abfrage wählt die digitalen Zwillinge aus, die eine Zeichenfolgeneigenschaft Status
aufweisen, und der Wert ist nicht gleich Completed
.
SELECT *
FROM DIGITIALTWINS
WHERE IS_STRING( Status ) AND Status != 'Completed'
STARTSWITH
Eine Zeichenfolgenfunktion, mit der bestimmt wird, ob eine Zeichenfolgeneigenschaft eines Zwillings mit einer bestimmten anderen Zeichenfolge beginnt.
Syntax
STARTSWITH(<string-to-check>,<beginning-string>)
Argumente
<string-to-check>
: Eine Zwillingseigenschaft vom Zeichenfolgentyp (string), deren Anfang Sie überprüfen möchten.<beginning-string>
: Eine Zeichenfolge, die den Anfang darstellt, auf den geprüft werden soll.
Gibt zurück
Ein boolescher Wert, der angibt, ob der erste Zeichenfolgenausdruck mit dem zweiten beginnt.
Beispiel
Die folgende Abfrage gibt alle digitalen Zwillinge zurück, deren IDs mit area1-
beginnen. Die zu überprüfende Zeichenfolge ist der $dtId
jedes Zwillings in der Sammlung, und die Anfangszeichenfolge lautet area1-
.
SELECT *
FROM DIGITALTWINS T
WHERE STARTSWITH(T.$dtId, 'area1-')