Naslaginformatie over azure Digital Twins-querytaal: JOIN-component
Dit document bevat naslaginformatie over de JOIN-component voor de Azure Digital Twins-querytaal.
De JOIN
component wordt gebruikt in de Azure Digital Twins-querytaal als onderdeel van de FROM-component wanneer u een query wilt uitvoeren om door de Azure Digital Twins-grafiek te gaan.
Deze component is optioneel tijdens het uitvoeren van query's.
Kernsyntaxis: JOIN ... GERELATEERDE
Omdat relaties in Azure Digital Twins deel uitmaken van digitale dubbels en geen onafhankelijke entiteiten, wordt het RELATED
trefwoord gebruikt in JOIN
query's om te verwijzen naar de set relaties van een bepaald type uit de tweelingverzameling (het type wordt opgegeven met behulp van het veld van name
de relatie uit de DTDL-definitie). Aan de set relaties kan een verzamelingsnaam in de query worden toegewezen.
De query moet vervolgens de WHERE
-component gebruiken om op te geven welke specifieke tweeling of tweelingen worden gebruikt ter ondersteuning van de relatiequery. Dit wordt gedaan door te filteren op de waarde van $dtId
de bron- of doeldubbel.
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>'
Voorbeeld
Met de volgende query worden alle digitale dubbels geselecteerd die zijn gerelateerd aan de dubbel met een id van ABC
via een contains
relatie.
SELECT T, CT
FROM DIGITALTWINS T
JOIN CT RELATED T.contains
WHERE T.$dtId = 'ABC'
Meerdere JOIN's
Maximaal vijf JOIN
s worden ondersteund in één query, waardoor meerdere niveaus van relaties tegelijk kunnen worden doorkruist.
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>
Voorbeeld
De volgende query is gebaseerd op ruimten die LightPanels bevatten en elke LightPanel bevat verschillende gloeilampen. De query haalt alle gloeilampen op die zich in de LightPanels van ruimten 1 en 2 bevinden.
SELECT LightBulb
FROM DIGITALTWINS Room
JOIN LightPanel RELATED Room.contains
JOIN LightBulb RELATED LightPanel.contains
WHERE Room.$dtId IN ['room1', 'room2']
Beperkingen
De volgende limieten zijn van toepassing op query's die gebruikmaken van JOIN
.
Zie de volgende secties voor meer informatie.
Dieptelimiet van vijf
De doorkruisingsdiepte van de grafiek is beperkt tot vijf JOIN
niveaus per query.
Voorbeeld
De volgende query illustreert het maximum aantal JOIN
componenten dat mogelijk is in een Azure Digital Twins-query. Het krijgt alle gloeilampen in Building1.
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'
Geen OUTER JOIN-semantiek
OUTER JOIN
semantiek wordt niet ondersteund, wat betekent dat als de relatie een rang van nul heeft, de hele 'rij' wordt verwijderd uit de uitvoerresultatenset.
Voorbeeld
Bekijk de volgende query die een doorkruising van een gebouw illustreert.
SELECT Building, Floor
FROM DIGITALTWINS Building
JOIN Floor RELATED Building.contains
WHERE Building.$dtId = 'Building1'
Als Gebouw1 geen verdiepingen bevat, retourneert deze query een lege resultatenset (in plaats van één rij met een waarde voor Gebouw en undefined
voor Verdieping).
Dubbels vereist
Relaties in Azure Digital Twins kunnen niet worden opgevraagd als onafhankelijke entiteiten; u moet ook informatie opgeven over de brondubbel waaruit de relatie afkomstig is. Deze functionaliteit is opgenomen als onderdeel van het standaardgebruik JOIN
in Azure Digital Twins via het RELATED
trefwoord.
Query's met een component moeten ook worden gefilterd op de eigenschap van $dtId
een JOIN
tweeling in de WHERE
component, om te verduidelijken welke tweeling(en) worden gebruikt ter ondersteuning van de relatiequery.