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á.
Základní syntaxe: JOIN ... SOUVISEJÍCÍ
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 JOIN
s, 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.