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ń.

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 ABCcontains 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ęć JOINs, 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.