Share via


Referens för Azure Digital Twins-frågespråk: JOIN-sats

Det här dokumentet innehåller referensinformation om JOIN-satsen för Azure Digital Twins-frågespråket.

Satsen JOIN används i Azure Digital Twins-frågespråket som en del av FROM-satsen när du vill fråga för att bläddra i Azure Digital Twins-grafen.

Den här satsen är valfri vid frågor.

Eftersom relationer i Azure Digital Twins är en del av digitala tvillingar, inte oberoende entiteter, används nyckelordet RELATED i JOIN frågor för att referera till uppsättningen relationer av en viss typ från tvillingsamlingen (typen anges med hjälp av relationens name fält från dess DTDL-definition). Uppsättningen relationer kan tilldelas ett samlingsnamn i frågan.

Frågan måste sedan använda WHERE -satsen för att ange vilken specifik tvilling eller tvillingar som används för att stödja relationsfrågan, vilket görs genom filtrering på antingen käll- eller måltvillingens $dtId värde.

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>'

Exempel

Följande fråga väljer alla digitala tvillingar som är relaterade till tvillingen med ID ABC :t via en contains relation.

SELECT T, CT
FROM DIGITALTWINS T
JOIN CT RELATED T.contains
WHERE T.$dtId = 'ABC'

Flera JOIN

Upp till fem JOINs stöds i en enda fråga, vilket möjliggör bläddering av flera nivåer av relationer samtidigt.

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>

Exempel

Följande fråga baseras på Rum som innehåller LightPanels och varje LightPanel innehåller flera lightbulbs. Frågan hämtar alla glödlampor som finns i LightPanels i rum 1 och 2.

SELECT LightBulb
FROM DIGITALTWINS Room
JOIN LightPanel RELATED Room.contains
JOIN LightBulb RELATED LightPanel.contains
WHERE Room.$dtId IN ['room1', 'room2']

Begränsningar

Följande begränsningar gäller för frågor som använder JOIN.

Mer information finns i följande avsnitt.

Djupgräns på fem

Grafblädderingsdjupet är begränsat till fem JOIN nivåer per fråga.

Exempel

Följande fråga illustrerar det maximala antalet JOIN satser som är möjliga i en Azure Digital Twins-fråga. Den får alla glödlampor i byggnad 1.

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'

Ingen yttre kopplingssemantik

OUTER JOIN semantik stöds inte, vilket innebär att om relationen har en rangordning på noll tas hela "raden" bort från resultatuppsättningen.

Exempel

Tänk på följande fråga som illustrerar en byggnadsbläddring.

SELECT Building, Floor
FROM DIGITALTWINS Building
JOIN Floor RELATED Building.contains
WHERE Building.$dtId = 'Building1'

Om Building1 inte innehåller några våningar returnerar den här frågan en tom resultatuppsättning (i stället för att returnera en rad med värdet Byggnad och undefined för Golv).

Tvillingar krävs

Relationer i Azure Digital Twins kan inte efterfrågas som oberoende entiteter. du måste också ange information om källtvillingen som relationen kommer från. Den här funktionen ingår som en del av standardanvändningen JOIN i Azure Digital Twins via nyckelordet RELATED .

Frågor med en JOIN -sats måste också filtreras efter en tvillings $dtId -egenskap i WHERE -satsen för att klargöra vilka tvillingar som används för att stödja relationsfrågan.