Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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.
Sintaksis inti: JOIN ... RELATED
Karena hubungan di Azure Digital Twins adalah bagian dari kembar digital, bukan entitas independen, RELATED kata kunci digunakan dalam JOIN kueri untuk mereferensikan kumpulan 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.