Condividi tramite


Informazioni di riferimento sul linguaggio di query di Gemelli digitali di Azure: clausola JOIN

Questo documento contiene informazioni di riferimento sulla clausola JOIN per il linguaggio di query di Gemelli digitali di Azure.

La JOIN clausola viene usata nel linguaggio di query di Gemelli digitali di Azure come parte della clausola FROM quando si vuole eseguire una query per attraversare il grafico dei gemelli digitali di Azure.

Questa clausola è facoltativa durante la query.

Poiché le relazioni in Gemelli digitali di Azure fanno parte di gemelli digitali, non entità indipendenti, la RELATED parola chiave viene usata nelle JOIN query per fare riferimento al set di relazioni di un determinato tipo dall'insieme gemello (il tipo viene specificato usando il campo della name relazione dalla definizione DTDL). Il set di relazioni può essere assegnato un nome di raccolta all'interno della query.

La query deve quindi usare la WHERE clausola per specificare quali gemelli o gemelli specifici vengono usati per supportare la query di relazione, che viene eseguita filtrando sul valore del gemello di origine o di $dtId destinazione.

Sintassi

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

Esempio

La query seguente seleziona tutti i gemelli digitali correlati al gemello con un ID di ABC tramite una contains relazione.

SELECT T, CT
FROM DIGITALTWINS T
JOIN CT RELATED T.contains
WHERE T.$dtId = 'ABC'

Più JOINs

Fino a cinque JOINs sono supportati in una singola query, che consente l'attraversamento di più livelli di relazioni contemporaneamente.

Sintassi

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

Esempio

La query seguente si basa su Rooms che contengono LightPanels e ogni LightPanel contiene diversi LightBulbs. La query ottiene tutti i LightBulbs contenuti nei LightPanels delle camere 1 e 2.

SELECT LightBulb
FROM DIGITALTWINS Room
JOIN LightPanel RELATED Room.contains
JOIN LightBulb RELATED LightPanel.contains
WHERE Room.$dtId IN ['room1', 'room2']

Limitazioni

I limiti seguenti si applicano alle query usando JOIN.

Per altre informazioni, vedere le sezioni seguenti.

Limite di profondità di cinque

La profondità di attraversamento del grafico è limitata a cinque JOIN livelli per query.

Esempio

La query seguente illustra il numero massimo di clausole possibili in una query di Gemelli digitali di JOIN Azure. Ottiene tutti i LightBulbs 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'

Nessuna semantica OUTER JOIN

OUTER JOIN la semantica non è supportata, ovvero se la relazione ha un rango pari a zero, l'intera "riga" viene eliminata dal set di risultati di output.

Esempio

Si consideri la query seguente che illustra un attraversamento predefinito.

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

Se Building1 non contiene piani, questa query restituirà un set di risultati vuoto anziché restituire una riga con un valore per Building e undefined for Floor.

Gemelli necessari

Le relazioni in Gemelli digitali di Azure non possono essere sottoposte a query come entità indipendenti. È anche necessario fornire informazioni sul gemello di origine da cui proviene la relazione. Questa funzionalità è inclusa nell'ambito dell'utilizzo predefinito JOIN in Gemelli digitali di Azure tramite la RELATED parola chiave.

Le query con una JOIN clausola devono essere filtrate anche dalla proprietà di $dtId qualsiasi gemello nella WHERE clausola, per chiarire quali gemelli vengono usati per supportare la query di relazione.