Referensi bahasa kueri Azure Digital Twins: klausa JOIN

Dokumen ini berisi informasi referensi tentang klausul JOIN untuk bahasa kueri Azure Digital Twins.

Klausa JOIN digunakan dalam bahasa kueri Azure Digital Twins sebagai bagian dari klausa FROM saat Anda ingin kueri melintasi grafik Azure Digital Twins.

Klausa ini opsional saat membuat kueri.

Karena hubungan di Azure Digital Twins adalah bagian dari kembar digital, bukan entitas independen, RELATED kata kunci digunakan dalam JOIN kueri untuk mereferensikan serangkaian hubungan jenis tertentu dari koleksi kembar (jenis ditentukan menggunakan bidang hubungan name dari definisi DTDL-nya). Serangkaian hubungan ini dapat diberi nama koleksi dalam kueri.

Kueri kemudian harus menggunakan klausul WHERE untuk menentukan kembaran tertentu atau beberapa kembaran yang digunakan untuk mendukung kueri hubungan, yang dilakukan dengan memfilter nilai $dtId kembaran sumber atau target.

Sintaks

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

Contoh

Kueri berikut memilih semua kembar digital yang terkait dengan kembar dengan ID ABC melalui contains hubungan.

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

Beberapa JOIN

Hingga lima JOIN didukung dalam satu kueri, yang memungkinkan penjelajahan beberapa tingkat hubungan sekaligus.

Sintaks

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

Contoh

Kueri berikut ini didasarkan pada Ruangan yang berisi LightPanels, dan setiap LightPanel berisi beberapa LightBulbs. Kueri mendapatkan semua LightBulbs yang terdapat di LightPanels kamar 1 dan 2.

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

Batasan

Batas berikut berlaku untuk kueri yang menggunakan JOIN.

Untuk informasi selengkapnya, lihat artikel berikut ini.

Batas kedalaman lima

Kedalaman traversal grafik dibatasi hingga lima JOIN level per kueri.

Contoh

Kueri berikut mengilustrasikan jumlah maksimum klausul JOIN yang kemungkinan ada dalam kueri Azure Digital Twins. Ini mendapatkan semua LightBulbs di 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'

Tidak ada semantik OUTER JOIN

Semantik OUTER JOIN tidak didukung, yang berarti jika hubungan memiliki peringkat nol, seluruh "baris" akan dihilangkan dari hasil output.

Contoh

Pertimbangkan kueri berikut yang mengilustrasikan traversal gedung.

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

Jika Gedung1 tidak berisi lantai, kueri ini akan mengembalikan tataan hasil kosong (bukan mengembalikan satu baris dengan nilai untuk Gedung dan undefined untuk Lantai).

Kembar diperlukan

Hubungan di Azure Digital Twins tidak dapat ditanyakan sebagai entitas independen; Anda juga perlu memberikan informasi tentang kembar sumber dari mana hubungan itu berasal. Fungsi ini disertakan sebagai bagian dari penggunaan JOIN default di Azure Digital Twins melalui kata kunci RELATED.

Kueri dengan klausa JOIN juga harus difilter menurut properti $dtId kembar mana pun di klausa WHERE, untuk memperjelas kembar mana yang digunakan untuk mendukung kueri hubungan.