Compartilhar via


Referência da linguagem de consulta de Gêmeos Digitais do Azure: cláusula JOIN

Este documento contém informações de referência sobre a cláusula JOIN para a linguagem de consulta de Gêmeos Digitais do Azure.

A cláusula JOIN é usada na linguagem de consulta de Gêmeos Digitais do Azure como parte da cláusula FROM quando você deseja consultar para percorrer o grafo dos Gêmeos Digitais do Azure.

Essa cláusula é opcional durante a consulta.

Como as relações nos Gêmeos Digitais do Azure fazem parte dos gêmeos digitais, não de entidades independentes, a palavra-chave RELATED é usada em consultas JOIN para referenciar o conjunto de relações de um determinado tipo da coleção de gêmeos (o tipo é especificado usando o campo name do relacionamento da respectiva definição de DTDL). O conjunto de relações pode ser atribuído a um nome de coleção dentro da consulta.

Depois, a consulta precisa usar a cláusula WHERE para especificar quais gêmeos específicos estão sendo usados para dar suporte à consulta de relação, que é feita filtrando o valor $dtId do gêmeo de origem ou de destino.

Sintaxe

--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 consulta abaixo seleciona todos os gêmeos digitais que estão relacionados ao gêmeo com uma ID de ABC por meio de uma relação contains.

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

JOINs múltiplos

Há suporte para até cinco JOINs em uma única consulta, o que permite a passagem de vários níveis de relações de uma só vez.

Sintaxe

--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 a seguir é baseada em Salas que contêm LightPanels, e cada LightPanel contém várias LightBulbs. A consulta obtém todas as LightBulbs contidas no 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 limites a seguir se aplicam a consultas que usam JOIN.

Para obter mais informações, consulte as próximas seções.

Limite de profundidade de cinco

A profundidade de percurso do grafo é restrita a cinco níveis de JOIN por consulta.

Exemplo

A consulta abaixo ilustra o número máximo de cláusulas JOIN possíveis em uma consulta de Gêmeos Digitais do Azure. Ela obtém todas as LightBulbs no 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'

Sem semântica OUTER JOIN

Não há suporte para a semântica OUTER JOIN, o que significa que, se a relação tiver a classificação zero, a "linha" inteira será eliminada do conjunto de resultados de saída.

Exemplo

Considere a consulta a seguir ilustrando um percurso do prédio.

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

Se Building1 não possuir andares, essa consulta retornará um conjunto de resultados vazio (em vez de retornar uma linha com um valor para Prédio e undefined para Andar).

Os gêmeos são necessários

Não é possível consultar as relações dos Gêmeos Digitais do Azure como entidades independentes. Você também precisa incluir informações sobre o gêmeo de origem da relação. Essa funcionalidade é incluída como parte do uso padrão de JOIN nos Gêmeos Digitais do Azure por meio da palavra-chave RELATED.

As consultas com uma cláusula JOIN também devem filtrar pela propriedade $dtId de qualquer gêmeo na cláusula WHERE, para esclarecer quais gêmeos estão sendo usados para dar suporte à consulta de relação.