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.
Sintassi principale: JOIN ... CORRELATI
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 JOIN
s 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.