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

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

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