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.
Nota
Fitur ini saat ini dalam pratinjau publik. Pratinjau ini disediakan tanpa perjanjian tingkat layanan, dan tidak disarankan untuk beban kerja produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas. Untuk informasi lebih lanjut, lihat Supplemental Terms of Use for Microsoft Azure Previews.
Artikel ini adalah referensi cepat untuk sintaks GQL (Bahasa Kueri Grafik) untuk grafik di Microsoft Fabric. Untuk penjelasan terperinci, lihat panduan bahasa GQL.
Nota
Artikel ini terutama menggunakan contoh himpunan data grafik jejaring sosial. Ini juga menyediakan beberapa contoh yang menggunakan himpunan data Adventure Works dari tutorial Graph.
Struktur kueri
Kueri GQL menggunakan urutan pernyataan yang menentukan data apa yang akan didapat dari grafik, cara memprosesnya, dan cara menampilkan hasilnya. Setiap pernyataan memiliki tujuan tertentu, dan bersama-sama mereka membuat alur linier yang cocok dengan data dari grafik dan mengubahnya langkah demi langkah.
Alur kueri umum:
Kueri GQL biasanya dimulai dengan menentukan pola grafik yang cocok. Kemudian, ia menggunakan pernyataan opsional untuk pembuatan variabel, pemfilteran, pengurutan, penomoran halaman, dan output hasil.
Example:
MATCH (n:Person)-[:knows]->(m:Person)
LET fullName = n.firstName || ' ' || n.lastName
FILTER m.gender = 'female'
ORDER BY fullName ASC
OFFSET 10
LIMIT 5
RETURN fullName, m.firstName
Urutan pernyataan:
Penting
Grafik di Microsoft Fabric belum mendukung komposisi pernyataan arbitrer. Lihat artikel tentang batasan saat ini.
Pernyataan umumnya dapat muncul dalam urutan apa pun dalam kueri:
-
MATCH– Tentukan pola grafik yang akan ditemukan. -
LET– Tentukan variabel dari ekspresi. -
FILTER– Pertahankan kondisi pencocokan baris. -
ORDER BY– Urutkan hasil. -
OFFSET– Lewati banyak baris. -
LIMIT– Batasi jumlah baris. -
RETURN– Keluarkan hasil akhir.
Setiap pernyataan dibangun pada yang sebelumnya, sehingga Anda secara bertahap menyempurnakan dan membentuk output kueri. Untuk informasi selengkapnya tentang setiap pernyataan, lihat bagian berikut ini.
Pernyataan pencarian
MATCH
Temukan pola grafik di data Anda.
Sintaks:
MATCH <graph pattern> [ WHERE <predicate> ]
...
Example:
MATCH (n:Person)-[:knows]-(m:Person) WHERE n.birthday > 2000
RETURN *
Untuk informasi selengkapnya tentang pernyataan tersebut MATCH , lihat pola Grafik.
BIAR
Buat variabel dengan menggunakan ekspresi.
Sintaks:
LET <variable> = <expression>, <variable> = <expression>, ...
...
Example:
MATCH (n:Person)
LET fullName = n.firstName || ' ' || n.lastName
RETURN fullName
Untuk informasi selengkapnya tentang pernyataan tersebut LET , lihat panduan bahasa GQL.
SARINGAN
Menyimpan baris yang cocok dengan kondisi.
Sintaks:
FILTER [ WHERE ] <predicate>
...
Example:
MATCH (n:Person)-[:knows]->(m:Person)
FILTER WHERE n.birthday > m.birthday
RETURN *
Untuk informasi selengkapnya tentang pernyataan tersebut FILTER , lihat panduan bahasa GQL.
URUTKAN BERDASARKAN
Mengurutkan hasil.
Sintaks:
ORDER BY <expression> [ ASC | DESC ], ...
...
Example:
MATCH (n:Person)
RETURN *
ORDER BY n.lastName ASC, n.firstName ASC
Penting
Urutan baris yang diminta hanya dijamin akan disimpan segera setelah pernyataan sebelumnya ORDER BY .
Setiap pernyataan berikut (jika ada) tidak dijamin untuk mempertahankan pesanan tersebut.
Untuk informasi selengkapnya tentang pernyataan tersebut ORDER BY , lihat panduan bahasa GQL.
OFFSET/LIMIT
Lewati baris dan batasi jumlah hasil.
Sintaks:
OFFSET <offset> [ LIMIT <limit> ]
LIMIT <limit>
...
Example:
MATCH (n:Person)
ORDER BY n.birthday
OFFSET 10 LIMIT 20
RETURN n.firstName || ' ' || n.lastName AS name, n.birthday
Untuk informasi selengkapnya tentang OFFSET pernyataan dan LIMIT , lihat panduan bahasa GQL.
RETURN
Keluarkan hasil akhir.
Sintaks:
RETURN [ DISTINCT ] <expression> [ AS <alias> ], ...
Example:
MATCH (n:Person)
RETURN n.firstName, n.lastName
Untuk informasi selengkapnya tentang pernyataan tersebut RETURN , lihat panduan bahasa GQL.
Pola grafik
Pola grafik menjelaskan struktur grafik yang cocok.
Pola node
Dalam database grafik, simpul biasanya digunakan untuk mewakili entitas, seperti orang, produk, atau tempat.
Pola node menjelaskan cara mencocokkan simpul dalam grafik. Anda dapat memfilter menurut label atau mengikat variabel.
(n) -- Any node
(n:Person) -- Node with Person label
(n:City&Place) -- Node with City AND Place label
(:Person) -- Person node, don't bind variable
Untuk informasi selengkapnya tentang pola simpul, lihat pola Grafik.
Pola tepi
Pola tepi menentukan hubungan antara simpul, termasuk arah dan jenis tepi. Dalam database grafik, tepi mewakili koneksi atau hubungan antara dua simpul.
<-[e]- -- Incoming edge
-[e]-> -- Outgoing edge
-[e]- -- Any edge
-[e:knows]-> -- Edge with label ("relationship type")
-[e:knows|likes]-> -- Edges with different labels
-[:knows]-> -- :knows edge, don't bind variable
Untuk informasi selengkapnya tentang pola tepi, lihat pola Grafik.
Ekspresi label
Ekspresi label memungkinkan Anda mencocokkan simpul dengan kombinasi label tertentu dengan menggunakan operator logis.
:Person&Company -- Both Person AND Company labels
:Person|Company -- Person OR Company labels
:!Company -- NOT Company label
:(Person|!Company)&Active -- Complex expressions with parentheses
Untuk informasi selengkapnya tentang ekspresi label, lihat pola Grafik.
Pola jalur
Pola jalur menjelaskan traversal melalui grafik, termasuk jumlah hop dan pengikatan variabel.
(a)-[:knows|likes]->{1,3}(b) -- 1-3 hops via knows/likes
p=()-[:knows]->() -- Binding a path variable
Untuk informasi selengkapnya tentang pola jalur, lihat pola Grafik.
Beberapa pola
Anda dapat menggunakan beberapa pola untuk mencocokkan struktur grafik nonlinear yang kompleks dalam satu kueri.
(a)->(b), (a)->(c) -- Multiple edges from same node
(a)->(b)<-(c), (b)->(d) -- Nonlinear structures
Untuk informasi selengkapnya tentang beberapa pola, lihat pola Grafik.
Nilai dan jenis nilai
Jenis dasar
Jenis dasar adalah nilai data primitif seperti string, angka, boolean, dan tanggalwaktu.
STRING -- 'hello', "world"
INT64 -- 42, -17
FLOAT64 -- 3.14, -2.5e10
BOOL -- TRUE, FALSE, UNKNOWN
ZONED DATETIME -- ZONED_DATETIME('2023-01-15T10:30:00Z')
Untuk informasi selengkapnya tentang jenis dasar, lihat Nilai GQL dan jenis nilai.
Jenis nilai referensi
Jenis nilai referensi adalah simpul dan tepi yang Anda gunakan sebagai nilai dalam kueri.
NODE -- Node reference values
EDGE -- Edge reference values
Untuk informasi selengkapnya tentang jenis nilai referensi, lihat Nilai GQL dan jenis nilai.
Tipe koleksi
Jenis koleksi mengelompokkan beberapa nilai, seperti daftar dan jalur.
LIST<INT64> -- [1, 2, 3]
LIST<STRING> -- ['a', 'b', 'c']
PATH -- Path values
Untuk informasi selengkapnya tentang jenis koleksi, lihat Nilai GQL dan jenis nilai.
Jenis material dan nullable
Setiap jenis nilai dapat diubah ke null (termasuk nilai null) atau material (tidak termasuk).
Secara default, jenis dapat diubah ke null kecuali Anda secara eksplisit menentukan NOT NULL.
STRING NOT NULL -- Material (Non-nullable) string type
INT64 -- Nullable (default) integer type
Ekspresi & operator
Comparison
Operator perbandingan membandingkan nilai dan memeriksa kesetaraan, pemesanan, atau null.
=, <>, <, <=, >, >= -- Standard comparison
IS NULL, IS NOT NULL -- Null checks
Untuk informasi selengkapnya tentang predikat perbandingan, lihat ekspresi dan fungsi GQL.
Logika
Operator logis menggabungkan atau meniadakan kondisi boolean dalam kueri.
AND, OR, NOT -- Boolean logic
Untuk informasi selengkapnya tentang ekspresi logis, lihat ekspresi dan fungsi GQL.
Arithmetic
Operator aritmatika melakukan penghitungan pada angka.
+, -, *, / -- Basic arithmetic operations
Untuk informasi selengkapnya tentang ekspresi aritmatika, lihat ekspresi dan fungsi GQL.
Pola string
Predikat pola string cocok dengan substring, awalan, atau akhiran dalam string.
n.firstName CONTAINS 'John' -- Has substring
n.browserUsed STARTS WITH 'Chrome' -- Starts with prefix
n.locationIP ENDS WITH '.1' -- Ends with suffix
Untuk informasi selengkapnya tentang predikat pola string, lihat ekspresi dan fungsi GQL.
Operasi pada daftar
Mencantumkan operasi menguji keanggotaan, mengakses elemen, dan mengukur panjang daftar.
n.gender IN ['male', 'female'] -- Membership test
n.tags[0] -- First element
size(n.tags) -- List length
Untuk informasi selengkapnya tentang daftar predikat keanggotaan, lihat ekspresi dan fungsi GQL.
Akses properti
Akses properti mendapatkan nilai properti dari simpul atau tepi.
n.firstName -- Property access
Untuk informasi selengkapnya tentang akses properti, lihat ekspresi dan fungsi GQL.
Functions
Fungsi agregat
Fungsi agregat menghitung nilai ringkasan untuk grup baris (agregasi vertikal) atau di atas elemen daftar grup (agregasi horizontal).
count(*) -- Count all rows
count(expr) -- Count non-null values
sum(p.birthday) -- Sum values
avg(p.birthday) -- Average
min(p.birthday), max(p.birthday) -- Minimum and maximum values
collect_list(p.firstName) -- Collect values into a list
Pelajari selengkapnya tentang fungsi agregat dalam ekspresi dan fungsi GQL.
Fungsi String
Fungsi string memungkinkan Anda bekerja dengan dan menganalisis nilai string.
char_length(s) -- String length
upper(s), lower(s) -- Change case (US ASCII only)
trim(s) -- Remove leading and trailing whitespace
string_join(list, separator) -- Join list elements with a separator
Pelajari selengkapnya tentang fungsi string dalam ekspresi dan fungsi GQL.
Mencantumkan fungsi
Fungsi daftar memungkinkan Anda bekerja dengan daftar, seperti memeriksa panjang atau ukuran pemangkasan.
size(list) -- List length
trim(list, n) -- Trim a list to be at most size `n`
Untuk informasi selengkapnya tentang fungsi daftar, lihat Ekspresi dan fungsi GQL.
Fungsi grafik
Fungsi grafik memungkinkan Anda mendapatkan informasi dari simpul, jalur, dan tepi.
labels(node) -- Get node labels
nodes(path) -- Get path nodes
edges(path) -- Get path edges
Untuk informasi selengkapnya tentang fungsi grafik, lihat ekspresi dan fungsi GQL.
Fungsi temporal
Fungsi temporal memungkinkan Anda bekerja dengan nilai tanggal dan waktu.
zoned_datetime() -- Get the current timestamp
Untuk informasi selengkapnya tentang fungsi temporal, lihat ekspresi dan fungsi GQL.
Fungsi generik
Fungsi generik memungkinkan Anda bekerja dengan data dengan cara umum.
coalesce(expr1, expr2, ...) -- Get the first non-null value
Untuk informasi selengkapnya tentang fungsi generik, lihat ekspresi dan fungsi GQL.
Pola umum
Bagian ini memperlihatkan beberapa pola kueri GQL umum yang bisa Anda gunakan.
Contoh jejaring sosial
Contoh-contoh ini menggunakan contoh himpunan data grafik jejaring sosial.
Menemukan semua simpul jenis
-- Get all nodes with a specific label
MATCH (p:Person) RETURN p
Menemukan simpul dengan properti tertentu
-- Filter nodes by property value
MATCH (p:Person) FILTER p.firstName = 'Annemarie' RETURN p
Menemukan koneksi
-- Friends of friends
MATCH (me:Person {firstName: 'Annemarie'})-[:knows]->{2}(fof:Person)
WHERE fof <> me
RETURN DISTINCT fof.firstName
Melintasi hubungan
-- Multi-hop traversal through different edge types
MATCH (p:Person)-[:knows]->(f:Person)-[:isLocatedIn]->(c:City)
RETURN p.firstName, f.firstName, c.name
Aggregation
-- Count by group
MATCH (p:Person)-[:isLocatedIn]->(c:City)
RETURN c.name AS name, count(*) AS population
GROUP BY name
ORDER BY population DESC
K Atas
-- Top 10
MATCH (p:Person)-[:hasCreator]-(m:Post)
RETURN p.firstName AS name, count(m) AS posts
GROUP BY name
ORDER BY posts DESC
LIMIT 10
Pemfilteran dan kondisi
-- Complex conditions
MATCH (p:Person)-[:isLocatedIn]->(c:City)
WHERE p.birthday >= 19800101 AND p.birthday <= 20000101
AND c.name IN ['Seattle', 'Portland']
AND p.firstName IS NOT NULL
RETURN p.firstName, p.birthday
Traversal jalur
-- Variable length paths
MATCH p = TRAIL (src:Person {firstName: 'Annemarie'})-[:knows]->{1,3}(dst:Person)
WHERE dst.firstName = 'Alexander'
RETURN p
Contoh Adventure Works
Contoh-contoh ini menggunakan himpunan data Adventure Works dari tutorial Graph.
Temukan semua pelanggan
-- Get all customer nodes
MATCH (c:Customer) RETURN c
Menemukan produk berdasarkan nama
-- Filter products by name
MATCH (p:Product) FILTER p.productName = 'Mountain Bike' RETURN p
Melintasi pesanan pelanggan
-- Multi-hop traversal: customers to orders to products
MATCH (c:Customer)-[:purchases]->(o:Order)-[:contains]->(p:Product)
RETURN c, o, p
Menghitung pesanan menurut karyawan
-- Count orders by employee
MATCH (e:Employee)-[:sells]->(o:Order)
RETURN e.employeeName, count(o) AS total_orders
GROUP BY e.employeeName
ORDER BY total_orders DESC