共用方式為


Azure Digital Twins 查詢語言參考:JOIN 子句

本檔包含 Azure Digital Twins 查詢語言之 JOIN 子句參考資訊

JOIN當您想要查詢以周遊 Azure Digital Twins 圖表時,子句會用在 Azure Digital Twins 查詢語言中做為 FROM 子句的一部分

查詢時,這個子句是選擇性的。

由於 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屬性進行篩選,以釐清哪些對應項用來支持關聯性查詢。