Megosztás a következőn keresztül:


Az Azure Digital Twins lekérdezési nyelvének referenciája: JOIN záradék

Ez a dokumentum hivatkozási információkat tartalmaz az Azure Digital Twins lekérdezési nyelv JOIN záradékáról.

A JOIN záradékot az Azure Digital Twins lekérdezési nyelve használja a FROM záradék részeként, amikor le szeretne kérdezni az Azure Digital Twins-gráfon.

Ez a záradék nem kötelező a lekérdezés során.

Mivel az Azure Digital Twinsben a kapcsolatok a digitális ikerpéldányok részét képezik, nem független entitások, a RELATED kulcsszó a lekérdezésekben JOIN egy bizonyos típusú kapcsolatkészletre hivatkozik az ikergyűjteményből (a típus a kapcsolat mezője name alapján van megadva a DTDL-definícióból). A kapcsolatok halmazához gyűjteménynév rendelhető a lekérdezésen belül.

A lekérdezésnek ezt követően a WHERE záradék használatával meg kell adnia, hogy mely ikerpéldányokat vagy ikerpéldányokat használja a kapcsolati lekérdezés támogatásához, ami a forrás vagy a cél ikerpéldány értékének $dtId szűrésével történik.

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élda

Az alábbi lekérdezés kiválasztja az ikerpéldányhoz kapcsolódó összes digitális ikerpéldányt contains egy kapcsolaton keresztüli ABC azonosítóval.

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

Több JOIN

Egyetlen lekérdezés legfeljebb öt JOINs-t támogat, amely egyszerre több kapcsolatszint bejárását teszi lehetővé.

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élda

Az alábbi lekérdezés a LightPaneleket tartalmazó szobákon alapul, és mindegyik LightPanel több LightBulbot tartalmaz. A lekérdezés lekéri az 1. és 2. szoba LightPaneljeiben található összes LightBulbs-et.

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

Korlátozások

A következő korlátozások a következő JOINlekérdezésekre vonatkoznak:

További információt a következő szakaszokban talál.

Öt mélységi korlát

A gráf bejárási mélysége lekérdezésenként öt JOIN szintre korlátozódik.

Példa

Az alábbi lekérdezés az Azure Digital Twins-lekérdezésekben lehetséges záradékok maximális számát JOIN mutatja be. Ez lesz az összes villanykörte az 1. épületben.

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'

Nincs KÜLSŐ ILLESZTés szemantikája

OUTER JOIN a szemantikák nem támogatottak, ami azt jelenti, hogy ha a kapcsolat értéke nulla, akkor a teljes "sor" ki lesz távolítva a kimeneti eredményhalmazból.

Példa

Fontolja meg az alábbi lekérdezést, amely egy épület bejárását szemlélteti.

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

Ha az 1. épület nem tartalmaz emeleteket, akkor ez a lekérdezés üres eredményhalmazt ad vissza (ahelyett, hogy egy sort ad vissza az Épület és undefined a Padló értékével).

Ikerpéldány szükséges

Az Azure Digital Twins kapcsolatai nem kérdezhetők le független entitásokként; a kapcsolat forrás ikerpéldányával kapcsolatos információkat is meg kell adnia. Ez a funkció az Azure Digital Twinsben a kulcsszón keresztüli alapértelmezett JOIN használat részeként jelenik meg RELATED .

A záradékkal rendelkező JOIN lekérdezéseket a záradék bármelyik WHERE ikertulajdonsága $dtId alapján is szűrni kell annak tisztázásához, hogy mely ikerpéldány(ok) használhatók a kapcsolati lekérdezés támogatására.