Udostępnij za pośrednictwem


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

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

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.