Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Ce document contient des informations de référence sur la clause JOIN du langage de requête Azure Digital Twins.
La clause JOIN est utilisée dans le langage de requête Azure Digital Twins dans le cadre de la clause FROM lorsque vous souhaitez interroger le graphique Azure Digital Twins.
Cette clause est facultative lors de l’interrogation.
Syntaxe principale : JOIN ... RELATED
Dans Azure Digital Twins, les relations faisant partie de jumeaux numériques, et non d’entités indépendantes, le mot clé RELATED est utilisé dans les requêtes JOIN pour référencer l’ensemble de relations d’un certain type à partir de la collection de jumeaux (le type est spécifié à l’aide du champ name de la relation dans sa définition DTDL). Un nom de collection peut être attribué à l’ensemble de relations dans la requête.
La requête doit ensuite utiliser la clause WHERE pour spécifier le ou les jumeaux spécifiques utilisés pour prendre en charge la requête de relation, ce qui est effectué en filtrant sur la valeur $dtId du jumeau source ou cible.
Syntaxe
--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>'
Exemple
La requête suivante sélectionne tous les jumeaux numériques liés au jumeau avec un ID de ABC relation contains .
SELECT T, CT
FROM DIGITALTWINS T
JOIN CT RELATED T.contains
WHERE T.$dtId = 'ABC'
Plusieurs clauses JOIN
Jusqu’à cinq clauses JOIN sont prises en charge dans une même requête, ce qui permet la traversée de plusieurs niveaux de relations à la fois.
Syntaxe
--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>
Exemple
La requête suivante est basée sur les salles contenant plusieurs panneaux lumineux, chacun contenant plusieurs ampoules. La requête obtient toutes les ampoules contenues dans les panneaux lumineux des salles 1 et 2.
SELECT LightBulb
FROM DIGITALTWINS Room
JOIN LightPanel RELATED Room.contains
JOIN LightBulb RELATED LightPanel.contains
WHERE Room.$dtId IN ['room1', 'room2']
Limites
Les limites suivantes s’appliquent aux requêtes utilisant JOIN.
Pour plus d’informations, consultez les sections suivantes.
Limite de profondeur de cinq
La profondeur de la traversée du graphe est restreinte à cinq niveaux JOIN autorisés par requête.
Exemple
La requête suivante illustre le nombre maximal de clauses JOIN possibles dans une requête Azure Digital Twins. Elle obtient toutes les ampoules du bâtiment 1.
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'
Aucune sémantique OUTER JOIN
Les sémantiques OUTER JOIN ne sont pas prises en charge, ce qui signifie que si la relation a un rang égal à zéro, la « ligne » entière sera éliminée du jeu de résultats de sortie.
Exemple
Considérez la requête suivante illustrant la traversée d’un bâtiment.
SELECT Building, Floor
FROM DIGITALTWINS Building
JOIN Floor RELATED Building.contains
WHERE Building.$dtId = 'Building1'
Si Building1 ne contient aucun étage, cette requête renvoie un jeu de résultats vide (plutôt qu’une ligne avec une valeur pour Bâtiment et undefined pour Étage).
Jumeaux requis
Les relations dans Azure Digital Twins ne peuvent pas être interrogées en tant qu’entités indépendantes. Vous devez également fournir des informations sur le jumeau source à partir duquel provient la relation. Cette fonction est incluse dans le cadre de l'utilisation JOIN par défaut dans Azure Digital Twins via le mot clé RELATED.
Les requêtes dotées d’une clause JOIN doivent également filtrer par propriété $dtId de jumeau dans la clause WHERE afin de clarifier le ou les jumeaux utilisés pour prendre en charge la requête de relation.