Dokumentacja języka zapytań usługi Azure Digital Twins: klauzula JOIN
Ten dokument zawiera informacje referencyjne dotyczące klauzuli JOINdla 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 w celu przejścia przez graf usługi Azure Digital Twins.
Ta klauzula jest opcjonalna podczas wykonywania zapytań.
Składnia podstawowa: JOIN ... POWIĄZANE
Ponieważ relacje w usłudze Azure Digital Twins są częścią cyfrowych reprezentacji bliźniaczych, a nie jednostki niezależne, RELATED
słowo kluczowe jest używane w JOIN
zapytaniach do odwoływanie się do zestawu relacji określonego typu z kolekcji bliźniaczych reprezentacji (typ jest określany przy użyciu pola relacji name
z definicji języka DTDL). Zestaw relacji można przypisać nazwę kolekcji w zapytaniu.
Zapytanie musi następnie użyć klauzuli , WHERE
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 reprezentacją bliźniaczą 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ą LightPanels, a każdy LightPanel zawiera kilka żarówki. Zapytanie pobiera wszystkie żarówki zawarte w LightPanels 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
.
Aby uzyskać więcej informacji, zobacz następujące sekcje.
Granica głębokości 5
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" jest usuwana z zestawu wyników wyjściowych.
Przykład
Rozważ następujące zapytanie ilustrujące przechodzenie do budynku.
SELECT Building, Floor
FROM DIGITALTWINS Building
JOIN Floor RELATED Building.contains
WHERE Building.$dtId = 'Building1'
Jeśli budynek1 nie zawiera żadnych podłóg, to zapytanie zwróci pusty zestaw wyników (zamiast zwracać jeden wiersz z wartością Building i undefined
dla floor).
Wymagane reprezentacje bliźniacze
Nie można wykonywać zapytań o relacje w usłudze Azure Digital Twins jako jednostki niezależne; Należy 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.