Azure Digital Twins 查詢語言參考:JOIN 子句
本檔包含 Azure Digital Twins 查詢語言之 JOIN 子句的參考資訊。
JOIN
當您想要查詢以周遊 Azure Digital Twins 圖表時,子句會用在 Azure Digital Twins 查詢語言中做為 FROM 子句的一部分。
查詢時,這個子句是選擇性的。
核心語法:JOIN ...相關
由於 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>'
範例
下列查詢會選取與具有 ABC
關聯性標識碼之對應項相關的所有數字對應項 contains
。
SELECT T, CT
FROM DIGITALTWINS T
JOIN CT RELATED T.contains
WHERE T.$dtId = 'ABC'
多個 JOIN
單一查詢最多可支援 5 JOIN
秒,允許一次周游多個層級的關聯性。
語法
--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 都包含數個 LightBulb。 查詢會取得包含在會議室 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
的查詢。
如需詳細資訊,請參閱下列幾節。
深度限制為五
圖表周游深度限制為每個查詢五 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
不支援語意,這表示如果關聯性有零的等級,則會從輸出結果集中排除整個「數據列」。
範例
請考慮下列說明建置周游的查詢。
SELECT Building, Floor
FROM DIGITALTWINS Building
JOIN Floor RELATED Building.contains
WHERE Building.$dtId = 'Building1'
如果 Building1 不包含任何樓層,則此查詢會傳回空的結果集(而不是傳回具有 Building 和 undefined
for Floor 值的一個數據列)。
需要對應項
Azure Digital Twins 中的關聯性無法以獨立實體的形式來查詢;您還需要提供關聯性的來源對應項相關資訊。 這項功能會包含在 RELATED
Azure Digital Twins 中透過 關鍵詞的預設JOIN
使用方式。
子句的JOIN
查詢也必須依 子句中的任何WHERE
對應項$dtId
屬性進行篩選,以釐清哪些對應項用來支持關聯性查詢。