Share via


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

Ez a dokumentum az Azure Digital Twins lekérdezési nyelvJOIN záradékával kapcsolatos referenciaadatokat tartalmazza.

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

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ót a lekérdezések JOIN egy adott típusú kapcsolatkészletre való hivatkozásra használják 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 halmaza a lekérdezésen belül gyűjteménynevet rendelhet hozzá.

A lekérdezésnek ezt követően a WHERE záradék használatával meg kell adnia, hogy melyik ikerpéldányt vagy ikerpéldányt használja a kapcsolati lekérdezés támogatására, amely 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

A következő lekérdezés kiválasztja az ikerpéldányhoz kapcsolódó összes digitális ikerpéldánytcontains, és egy kapcsolaton keresztüli ABC azonosítóval rendelkezik.

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

Több JOIN

Legfeljebb öt JOINs támogatott egyetlen lekérdezésben, amely lehetővé teszi több kapcsolatszint egyidejű bejárását.

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 minden LightPanel több LightBulbot tartalmaz. A lekérdezés lekéri az 1. és 2. szoba LightPaneljeiben található összes LightBulbot.

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

Korlátozások

Az alábbi korlátozások a használatával végzett JOINlekérdezésekre vonatkoznak.

További információt az alábbi szakaszokban talál.

Öt mélységi korlát

A gráfok 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. Az összes villanykörte az 1. épületben van.

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 szemantika

OUTER JOIN a szemantika nem támogatott, vagyis 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 épületbejárást szemléltető alábbi lekérdezést.

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

Ha az 1. épület nem tartalmaz padlót, 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 Twinsben lévő kapcsolatok nem kérdezhetők le független entitásokként; meg kell adnia a forrás ikerpéldányra vonatkozó információkat is, amelyekből a kapcsolat származik. Ez a funkció az Azure Digital Twinsben a kulcsszón keresztüli RELATED alapértelmezett JOIN használat része.

A záradékkal rendelkező JOIN lekérdezéseket a záradék bármelyik WHERE ikertulajdonságára $dtId is szűrni kell, hogy egyértelművé tegyük, hogy mely ikerpéldány(ok) használhatók a kapcsolati lekérdezés támogatására.