Freigeben über


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.

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.