Dokumentacja języka zapytań usługi Azure Digital Twins: klauzula JOIN
Ten dokument zawiera informacje referencyjne dotyczące klauzuli JOIN dla języka zapytań usługi Azure Digital Twins.
Klauzula JOIN
jest używana w języku zapytań usługi Azure Digital Twins w ramach klauzuli FROM, gdy chcesz wykonać zapytanie dotyczące przechodzenia przez graf usługi Azure Digital Twins.
Ta klauzula jest opcjonalna podczas wykonywania zapytań.
Podstawowa składnia: JOIN ... POWIĄZANE
Ponieważ relacje w usłudze Azure Digital Twins są częścią cyfrowych reprezentacji bliźniaczych, a nie niezależnych jednostek, RELATED
słowo kluczowe jest używane w JOIN
zapytaniach do odwołowania się do zestawu relacji określonego typu z kolekcji bliźniaczej (typ jest określany przy użyciu pola relacji name
z definicji dtDL). Zestaw relacji można przypisać nazwę kolekcji w zapytaniu.
Zapytanie musi następnie użyć WHERE
klauzuli , aby określić, która konkretna reprezentacja bliźniacze lub bliźniacze są używane do obsługi zapytania dotyczącego relacji, co jest wykonywane przez filtrowanie wartości źródłowej lub docelowej reprezentacji bliźniaczej $dtId
.
Składnia
--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>'
Przykład
Poniższe zapytanie wybiera wszystkie cyfrowe reprezentacje bliźniacze powiązane z bliźniaczą reprezentacją z identyfikatorem ABC
contains
za pośrednictwem relacji.
SELECT T, CT
FROM DIGITALTWINS T
JOIN CT RELATED T.contains
WHERE T.$dtId = 'ABC'
Wiele numerów JOIN
W jednym zapytaniu jest obsługiwanych maksymalnie pięć JOIN
s, co umożliwia przechodzenie wielu poziomów relacji jednocześnie.
Składnia
--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>
Przykład
Poniższe zapytanie jest oparte na pokojach, które zawierają kontrolki LightPanel, a każdy element LightPanel zawiera kilka elementów LightBulbs. Zapytanie pobiera wszystkie żarówki zawarte w lightPanelach pomieszczeń 1 i 2.
SELECT LightBulb
FROM DIGITALTWINS Room
JOIN LightPanel RELATED Room.contains
JOIN LightBulb RELATED LightPanel.contains
WHERE Room.$dtId IN ['room1', 'room2']
Ograniczenia
Następujące limity dotyczą zapytań przy użyciu polecenia JOIN
.
- Limit głębokości pięciu
- Brak semantyki SPRZĘŻENIA ZEWNĘTRZNEgo
- Wymagana reprezentacja bliźniacza źródłowa
Aby uzyskać więcej informacji, zobacz następujące sekcje.
Limit głębokości pięciu
Głębokość przechodzenia grafu jest ograniczona do pięciu JOIN
poziomów na zapytanie.
Przykład
Poniższe zapytanie ilustruje maksymalną liczbę JOIN
klauzul, które są możliwe w zapytaniu usługi Azure Digital Twins. Dostaje wszystkie Żarówki w Budynku1.
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'
Brak semantyki SPRZĘŻENIA ZEWNĘTRZNEgo
OUTER JOIN
Semantyka nie jest obsługiwana, co oznacza, że jeśli relacja ma rangę zero, cała "wiersz" zostanie wyeliminowana z wyjściowego zestawu wyników.
Przykład
Rozważmy następujące zapytanie ilustrujące przechodzenie budynku.
SELECT Building, Floor
FROM DIGITALTWINS Building
JOIN Floor RELATED Building.contains
WHERE Building.$dtId = 'Building1'
Jeśli budynek1 nie zawiera żadnych podłóg, zapytanie zwróci pusty zestaw wyników (zamiast zwracać jeden wiersz z wartością Building i undefined
for Floor).
Wymagane reprezentacje bliźniacze
Nie można wykonywać zapytań o relacje w usłudze Azure Digital Twins jako jednostki niezależne; Musisz również podać informacje o bliźniaczej reprezentacji źródłowej, z której pochodzi relacja. Ta funkcja jest uwzględniana jako część domyślnego JOIN
użycia w usłudze Azure Digital Twins za pomocą słowa kluczowego RELATED
.
Zapytania z klauzulą JOIN
muszą również filtrować według właściwości dowolnej reprezentacji bliźniaczej $dtId
w WHERE
klauzuli, aby wyjaśnić, które bliźniacze reprezentacje są używane do obsługi zapytania relacji.