Sdílet prostřednictvím


Referenční informace k dotazovacímu jazyku služby Azure Digital Twins: Klauzule JOIN

Tento dokument obsahuje referenční informace o klauzuli JOIN pro dotazovací jazyk Azure Digital Twins.

Klauzule se JOIN používá v dotazovacím jazyce Azure Digital Twins jako součást klauzule FROM , když chcete dotazovat pro procházení grafu Služby Azure Digital Twins.

Tato klauzule je při dotazování volitelná.

Vzhledem k tomu, že relace ve službě Azure Digital Twins jsou součástí digitálních dvojčat, nikoli nezávislých entit, RELATED používá se klíčové slovo v JOIN dotazech k odkazování na sadu relací určitého typu z kolekce dvojčat (typ se zadává pomocí pole relace name z definice DTDL). Sadě relací je možné v rámci dotazu přiřadit název kolekce.

Dotaz pak musí použít klauzuli WHERE k určení konkrétního dvojčete nebo dvojčat, která se používají k podpoře dotazu relace, což se provádí filtrováním hodnoty zdrojového nebo cílového $dtId dvojčete.

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

Příklad

Následující dotaz vybere všechna digitální dvojčata, která se vztahují k dvojčeti s ID ABC prostřednictvím contains relace.

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

Více názvů JOIN

V jednom dotazu se podporuje až pět JOINs, což umožňuje procházení více úrovní relací najednou.

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>

Příklad

Následující dotaz je založený na místnostech, které obsahují objekty LightPanel a každý objekt LightPanel obsahuje několik žárovky. Dotaz načte všechny žárovky obsažené v lightpanelech místností 1 a 2.

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

Omezení

Následující omezení platí pro dotazy používající JOIN.

Další informace najdete v následujících částech.

Limit hloubky pěti

Hloubka procházení grafu je omezená na pět JOIN úrovní na dotaz.

Příklad

Následující dotaz ukazuje maximální počet JOIN klauzulí, které jsou možné v dotazu Azure Digital Twins. Dostane všechny žárovky v budově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'

Žádná sémantika VNĚJŠÍHO SPOJENÍ

OUTER JOIN Sémantika se nepodporuje, což znamená, že pokud má relace pořadí nula, z výstupní sady výsledků se eliminuje celý "řádek".

Příklad

Zvažte následující dotaz ilustrující procházení budovy.

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

Pokud budova Building1 neobsahuje žádná podlaží, vrátí tento dotaz prázdnou sadu výsledků dotazu (místo toho, aby vrátil jeden řádek s hodnotou Pro budovu a undefined pro podlahu).

Požadována dvojčata

Relace ve službě Azure Digital Twins nelze dotazovat jako nezávislé entity. Musíte také zadat informace o zdrojovém dvojčeti, ze kterého relace pochází. Tato funkce je součástí výchozího JOIN použití ve službě Azure Digital Twins prostřednictvím klíčového RELATED slova .

Dotazy s klauzulí JOIN musí také filtrovat podle vlastnosti libovolného $dtId dvojčete v WHERE klauzuli, aby bylo jasné, která dvojčata se používají k podpoře dotazu na relaci.