다음을 통해 공유


Azure Digital Twins 쿼리 언어 참조: JOIN 절

이 문서에는 Azure Digital Twins 쿼리 언어에 대한 JOIN 절대한 참조 정보가 포함되어 있습니다.

JOIN 절은 Azure Digital Twins 그래프를 통과하기 위해 쿼리하려는 경우 FROM 절의 일부로 Azure Digital Twins 쿼리 언어에서 사용됩니다.

이 절은 쿼리하는 동안 선택 사항입니다.

Azure Digital Twins의 관계는 독립 엔터티 RELATED 가 아닌 디지털 트윈의 일부이므로 키워드는 쿼리에서 JOIN 쌍 컬렉션에서 특정 형식의 관계 집합을 참조하는 데 사용됩니다(형식은 DTDL 정의name 관계 필드를 사용하여 지정됨). 관계 집합은 쿼리 내에서 컬렉션 이름을 할당할 수 있습니다.

그런 다음 쿼리는 절을 WHERE 사용하여 관계 쿼리를 지원하는 데 사용되는 특정 트윈 또는 트윈을 지정해야 합니다. 이 쿼리는 원본 또는 대상 쌍의 $dtId 값을 필터링하여 수행됩니다.

구문

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

예시

다음 쿼리는 관계를 통해 ID ABC 가 있는 트윈과 관련된 모든 디지털 트윈을 contains 선택합니다.

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

여러 JOIN

단일 쿼리에서 최대 5 JOIN개의 s가 지원되므로 한 번에 여러 수준의 관계를 순회할 수 있습니다.

구문

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

예시

다음 쿼리는 LightPanels를 포함하는 룸을 기반으로 하며 각 LightPanel에는 여러 LightBulbs가 포함됩니다. 쿼리는 회의실 1과 2의 LightPanels에 포함된 모든 LightBulbs를 가져옵니다.

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

제한 사항

JOIN을 사용하는 쿼리에는 다음과 같은 제한이 적용됩니다.

자세한 내용은 다음 섹션을 참조하세요.

5개의 깊이 제한

그래프 순회 깊이는 쿼리당 5개의 JOIN 수준으로 제한됩니다.

예시

다음 쿼리는 Azure Digital Twins 쿼리에서 가능한 절의 JOIN 최대 수를 보여 줍니다. Building1의 모든 LightBulbs를 가져옵니다.

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'

OUTER JOIN 의미 체계 없음

OUTER JOIN 의미 체계는 지원되지 않습니다. 즉, 관계에 순위가 0이면 출력 결과 집합에서 전체 "행"이 제거됩니다.

예시

건물 순회를 보여 주는 다음 쿼리를 고려합니다.

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

Building1에 바닥이 없는 경우 이 쿼리는 빈 결과 집합을 반환합니다(건물 및 undefined 층 값으로 한 행을 반환하는 대신).

트윈 필요

Azure Digital Twins의 관계는 독립 엔터티로 쿼리할 수 없습니다. 또한 관계의 원본 트윈에 대한 정보를 제공해야 합니다. 이 기능은 키워드를 통해 Azure Digital Twins의 기본 JOIN 사용량의 일부로 포함됩니다 RELATED .

또한 JOIN 절이 있는 쿼리는 WHERE 절에서 트윈의 $dtId 속성으로 필터링하여 관계 쿼리를 지원하는 데 사용되는 트윈을 명확하게 해야 합니다.