Bagikan melalui


Referensi cepat GQL

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