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.
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ó 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 JOIN
s-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ő JOIN
leké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.