Referenz zur Azure Digital Twins-Abfragesprache: JOIN-Klausel
Dieses Dokument enthält Referenzinformationen zur JOIN-Klausel für die Azure Digital Twins-Abfragesprache.
Die JOIN
-Klausel wird bei der Azure Digital Twins-Abfragesprache als Teil der FROM-Klausel verwendet, wenn Sie Abfragen durchführen und der Azure Digital Twins-Graph durchlaufen werden soll.
Diese Klausel kann bei Abfragen optional genutzt werden.
Core-Syntax: JOIN ... RELATED
Da Beziehungen in Azure Digital Twins Teil von digitalen Zwillingen und keine unabhängigen Entitäten sind, wird das Schlüsselwort RELATED
in JOIN
-Abfragen genutzt, um aus der Zwillingssammlung auf die Beziehungen eines bestimmten Typs zu verweisen. (Der Typ wird über das Feld name
der Beziehung in der DTDL-Definition angegeben.) Dieser Gruppe von Beziehungen kann ein Sammlungsname in der Abfrage zugewiesen werden.
Die Abfrage muss dann die WHERE
-Klausel verwenden, um anzugeben, welche spezifischen Zwillinge verwendet werden, um die Beziehungsabfrage zu unterstützen. Dies erfolgt durch das Filtern nach dem Wert $dtId
des Quell- oder Zielzwillings.
Syntax
--SELECT ...
FROM DIGITALTWINS <twin-collection-name>
JOIN <target-twin-collection-name> RELATED <twin-collection-name>.<relationship-name> <OPTIONAL: relationship-collection-name>
WHERE <twin-collection-name-OR-target-twin-collection-name>.$dtId = '<twin-id>'
Beispiel
Mit der folgenden Abfrage werden alle digitalen Zwillinge ausgewählt, die zum Zwilling mit der ID ABC
gehören, indem eine contains
-Beziehung verwendet wird.
SELECT T, CT
FROM DIGITALTWINS T
JOIN CT RELATED T.contains
WHERE T.$dtId = 'ABC'
Mehrere JOIN-Klauseln
Es werden bis zu fünf JOIN
-Klauseln pro Abfrage unterstützt. Dies ermöglicht es, dass mehrere Ebenen mit Beziehungen gleichzeitig durchlaufen werden.
Syntax
--SELECT ...
FROM DIGITALTWINS <twin-collection-name>
JOIN <relationship-collection-name-1> RELATED <twin-collection-name>.<relationship-type-1>
JOIN <relationship-collection-name-2> RELATED <twin-or-relationship-collection-name>.<relationship-type-2>
Beispiel
Die folgende Abfrage basiert auf Räumen (Rooms) mit Beleuchtungselementen (LightPanels), die jeweils mehrere Glühlampen (LightBulbs) enthalten. Mit der Abfrage werden alle „LightBulbs“ der „LightPanels“ der Räume 1 und 2 abgerufen.
SELECT LightBulb
FROM DIGITALTWINS Room
JOIN LightPanel RELATED Room.contains
JOIN LightBulb RELATED LightPanel.contains
WHERE Room.$dtId IN ['room1', 'room2']
Einschränkungen
Die folgenden Grenzwerte gelten für Abfragen mit JOIN
.
Weitere Informationen finden Sie in den folgenden Abschnitten.
Tiefenlimit von 5
Die Durchlauftiefe für den Graphen ist auf fünf JOIN
-Ebenen pro Abfrage beschränkt.
Beispiel
Die folgende Abfrage veranschaulicht die maximale Anzahl von JOIN
-Klauseln, die in einer Azure Digital Twins-Abfrage möglich ist. Es werden alle „LightBulbs“ in „Building1“ abgerufen.
SELECT LightBulb
FROM DIGITALTWINS Building
JOIN Floor RELATED Building.contains
JOIN Room RELATED Floor.contains
JOIN LightPanel RELATED Room.contains
JOIN LightBulbRow RELATED LightPanel.contains
JOIN LightBulb RELATED LightBulbRow.contains
WHERE Building.$dtId = 'Building1'
Keine OUTER JOIN-Semantik (äußere Verknüpfung)
Die OUTER JOIN
-Semantik wird nicht unterstützt. Das bedeutet, dass die gesamte „Zeile“ aus dem Ausgaberesultset entfernt wird, wenn die Beziehung den Rang 0 (null) aufweist.
Beispiel
Mit der folgenden Abfrage wird das Durchlaufen eines Gebäudes veranschaulicht.
SELECT Building, Floor
FROM DIGITALTWINS Building
JOIN Floor RELATED Building.contains
WHERE Building.$dtId = 'Building1'
Falls „Building1“ keine Etagen hat, wird bei dieser Abfrage ein leeres Resultset zurückgegeben (anstelle einer Zeile mit einem Wert für „Building“ und mit undefined
für „Floor“ (Etage)).
Zwillinge erforderlich
Beziehungen in Azure Digital Twins können nicht als unabhängige Entitäten abgefragt werden. Sie müssen zudem Informationen über den Quellzwilling angeben, von dem die Beziehung stammt. Diese Funktion ist Teil der Standardnutzung von JOIN
in Azure Digital Twins mit dem Schlüsselwort RELATED
.
Für Abfragen mit einer JOIN
-Klausel muss in der WHERE
-Klausel auch nach der $dtId
-Eigenschaft eines Zwillings gefiltert werden, um zu ermitteln, welche Zwillinge zur Unterstützung der Beziehungsabfrage verwendet werden.