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.
Alapvető szintaxis: JOIN ... KAPCSOLÓDÓ
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 JOIN
s 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 JOIN
leké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.