Share via


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 de Azure Digital Twins-grafiek te doorlopen.

Deze component is optioneel tijdens het uitvoeren van query's.

Omdat relaties in Azure Digital Twins deel uitmaken van digitale dubbels, 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 om de relatiequery te ondersteunen. Dit wordt gedaan door te filteren op de waarde van $dtId de bron- of doeldubbel.

Syntaxis

--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>'

Opmerking

De volgende query selecteert alle digitale dubbels die zijn gerelateerd aan de tweeling 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 JOI's

Maximaal vijf JOINs worden ondersteund in één query, waardoor het doorkruisen van meerdere niveaus van relaties tegelijk mogelijk is.

Syntaxis

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

Opmerking

De volgende query is gebaseerd op ruimten die LightPanels bevatten en elke LightPanel bevat verschillende gloeilampen. De query haalt alle gloeilampen op die zijn opgenomen in de LightPanels van kamers 1 en 2.

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 met behulp van JOIN.

Zie de volgende secties voor meer informatie.

Dieptelimiet van vijf

De doorkruisingsdiepte van grafieken is beperkt tot vijf JOIN niveaus per query.

Opmerking

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.

Opmerking

Bekijk de volgende query ter illustratie van een gebouwkruising.

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

Als Building1 geen verdiepingen bevat, retourneert deze query een lege resultatenset (in plaats van één rij te retourneren met een waarde voor Gebouw en undefined voor Verdieping).

Tweelingen 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 wordt opgenomen als onderdeel van het standaardgebruik JOIN in Azure Digital Twins via het RELATED trefwoord.

Query's met een JOIN component moeten ook worden gefilterd op de eigenschap van $dtId een tweeling in de WHERE component om te verduidelijken welke tweeling(en) worden gebruikt om de relatiequery te ondersteunen.