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