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'
  • 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)
  • 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 Eigenschaft lift 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").
  • 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 nach 2 der Verwendung der Abfrage SELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, 2) gibt zurück False. Eine Suche nach einem Wert im Array der obersten Ebene, z 1 . B. mithilfe der Abfrage SELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, 1), wird zurückgegeben True.
  • 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], wobei Room1 und Room2 Objekte darstellen. Abfragen wie dies werden nicht unterstützt: SELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, Room2).

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 eine JOIN 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-')