Referência da linguagem de consulta do Azure Digital Twins: cláusula JOIN
Este documento contém informações de referência sobre a cláusula JOIN para a linguagem de consulta do Azure Digital Twins.
A JOIN
cláusula é utilizada na linguagem de consulta do Azure Digital Twins como parte da cláusula FROM quando pretender consultar para percorrer o grafo do Azure Digital Twins.
Esta cláusula é opcional durante a consulta.
Sintaxe principal: ASSOCIAR... RELACIONADO
Uma vez que as relações no Azure Digital Twins fazem parte de duplos digitais e não de entidades independentes, a RELATED
palavra-chave é utilizada em JOIN
consultas para referenciar o conjunto de relações de um determinado tipo da coleção de duplos (o tipo é especificado com o campo da relação da name
definição DTDL). O conjunto de relações pode ser atribuído um nome de coleção na consulta.
Em seguida, a consulta tem de utilizar a WHERE
cláusula para especificar que duplos ou duplos específicos estão a ser utilizados para suportar a consulta de relação, que é feita ao filtrar o valor do duplo de origem ou de $dtId
destino.
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>'
Exemplo
A seguinte consulta seleciona todos os duplos digitais relacionados com o duplo com um ID de através de ABC
uma contains
relação.
SELECT T, CT
FROM DIGITALTWINS T
JOIN CT RELATED T.contains
WHERE T.$dtId = 'ABC'
Vários JOINs
Até cinco JOIN
s são suportados numa única consulta, o que permite o percurso de múltiplos níveis de relações ao mesmo tempo.
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>
Exemplo
A consulta seguinte baseia-se em Salas que contêm LightPanels e cada LightPanel contém várias Lâmpadas. A consulta obtém todas as Lâmpadas contidas nos LightPanels das salas 1 e 2.
SELECT LightBulb
FROM DIGITALTWINS Room
JOIN LightPanel RELATED Room.contains
JOIN LightBulb RELATED LightPanel.contains
WHERE Room.$dtId IN ['room1', 'room2']
Limitações
Os seguintes limites aplicam-se a consultas com JOIN
.
Para obter mais informações, veja as secções seguintes.
Limite de profundidade de cinco
A profundidade transversal do gráfico está restrita a cinco JOIN
níveis por consulta.
Exemplo
A seguinte consulta ilustra o número máximo de JOIN
cláusulas que são possíveis numa consulta do Azure Digital Twins. Obtém todas as Lâmpadas no Edifício 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'
Sem semântica OUTER JOIN
OUTER JOIN
A semântica não é suportada, o que significa que se a relação tiver uma classificação de zero, toda a "linha" é eliminada do conjunto de resultados de saída.
Exemplo
Considere a seguinte consulta que ilustra um percurso modular.
SELECT Building, Floor
FROM DIGITALTWINS Building
JOIN Floor RELATED Building.contains
WHERE Building.$dtId = 'Building1'
Se o Edifício1 não contiver pisos, esta consulta devolverá um conjunto de resultados vazio (em vez de devolver uma linha com um valor para Edifício e undefined
para Piso).
Duplos necessários
As relações no Azure Digital Twins não podem ser consultadas como entidades independentes; também tem de fornecer informações sobre o duplo de origem de onde provém a relação. Esta funcionalidade está incluída como parte da utilização predefinida JOIN
no Azure Digital Twins através da RELATED
palavra-chave.
As consultas com uma JOIN
cláusula também têm de filtrar pela propriedade de $dtId
qualquer duplo na WHERE
cláusula, para esclarecer quais os duplos que estão a ser utilizados para suportar a consulta de relação.