Dokumen ini menjelaskan cara membuat kueri grafik properti di Spanner Graph. Contoh di bagian ini menggunakan skema grafik yang Anda buat di Menyiapkan dan membuat kueri Grafik Spanner, yang diilustrasikan dalam diagram berikut:
Menjalankan kueri Spanner Graph
Anda dapat menjalankan kueri Spanner Graph dengan cara berikut:
Konsol Google Cloud
Kirimkan kueri di halaman Spanner Studio. Untuk mengakses halaman Spanner Studio, klik Spanner Studio dari halaman Ringkasan database atau halaman Ringkasan tabel. Untuk mengetahui informasi selengkapnya tentang cara mengakses Spanner Studio, lihat Mengelola data menggunakan konsol Google Cloud.
Alat command line
gcloud spanner
Kirim perintah menggunakan perintah
gcloud spanner databases execute-sql
.REST API
executeSql
danexecuteStreamingSql
RPC API
ExecuteSql
danExecuteStreamingSql
Struktur kueri Spanner Graph
Bagian ini menjelaskan setiap komponen kueri secara mendetail.
Contoh berikut mengilustrasikan struktur dasar kueri Grafik Spanner.
Spanner Graph memungkinkan Anda membuat beberapa grafik di dalam database.
Kueri dimulai dengan menentukan grafik target, FinGraph
, menggunakan
klausa GRAPH
.
Pencocokan pola grafik
Pencocokan pola grafik menemukan pola tertentu dalam grafik Anda. Pola paling dasar adalah Pola elemen (pola node dan pola tepi), yang cocok dengan elemen grafik (node dan tepi). Pola elemen dapat disusun menjadi pola jalur dan pola yang lebih kompleks.
Pola node
Pola node adalah pola yang cocok dengan node dari grafik Anda. Pola ini terdiri dari sepasang tanda kurung yang cocok, yang secara opsional dapat berisi variabel pola grafik, ekspresi label, dan filter properti.
Menemukan semua node
Kueri berikut menampilkan semua node dalam grafik. Variabel n
, yang disebut
variabel pola grafik, terikat ke node yang cocok. Dalam hal ini, pola node
cocok dengan semua node dalam grafik.
GRAPH FinGraph
MATCH (n)
RETURN LABELS(n) AS label, n.id;
Hasil
Kueri menampilkan label
dan id
sebagai berikut:
label | id |
---|---|
Akun | 7 |
Akun | 16 |
Akun | 20 |
Orang | 1 |
Orang | 2 |
Orang | 3 |
Menemukan semua node dengan label tertentu
Kueri berikut cocok dengan semua node dalam grafik yang memiliki label Person
.
Kueri menampilkan properti label
dan id
, name
dari node yang cocok.
GRAPH FinGraph
MATCH (p:Person)
RETURN LABELS(p) AS label, p.id, p.name;
Hasil
label | id | nama |
---|---|---|
Orang | 1 | Alex |
Orang | 2 | Dana |
Orang | 3 | Lee |
Menemukan semua node yang cocok dengan ekspresi label
Anda dapat membuat ekspresi label dengan satu atau beberapa operator logis.
Kueri berikut cocok dengan semua node dalam grafik yang memiliki label
Person
atau Account
. Kumpulan properti yang ditampilkan oleh variabel pola grafik n
adalah superset dari properti yang ditampilkan oleh node yang memiliki label Person
atau Account
.
GRAPH FinGraph
MATCH (n:Person|Account)
RETURN LABELS(n) AS label, n.id, n.birthday, n.create_time;
- Dalam hasil, semua node memiliki properti
id
. - Node yang cocok dengan label
Account
memiliki properticreate_time
, tetapi tidak memiliki propertibirthday
.NULL
ditampilkan untuk propertibirthday
untuk node tersebut. - Node yang cocok dengan label
Person
memiliki propertibirthday
, tetapi tidak memiliki properticreate_time
.NULL
ditampilkan untuk properticreate_time
untuk node tersebut.
Hasil
label | id | ulang tahun | create_time |
---|---|---|---|
Akun | 7 | NULL | 2020-01-10T14:22:20.222Z |
Akun | 16 | NULL | 2020-01-28T01:55:09.206Z |
Akun | 20 | NULL | 2020-02-18T13:44:20.655Z |
Orang | 1 | 1991-12-21T08:00:00Z | NULL |
Orang | 2 | 1980-10-31T08:00:00Z | NULL |
Orang | 3 | 1986-12-07T08:00:00Z | NULL |
Untuk informasi selengkapnya tentang aturan ekspresi label, lihat Ekspresi label.
Menemukan semua node yang cocok dengan ekspresi label dan filter properti
Kueri berikut cocok dengan semua node dalam grafik yang memiliki label Person
,
dan properti id
sama dengan 1
.
GRAPH FinGraph
MATCH (p:Person {id: 1})
RETURN LABELS(p) AS label, p.id, p.name, p.birthday;
Hasil
label | id | nama | ulang tahun |
---|---|---|---|
Orang | 1 | Alex | 1991-12-21T08:00:00Z |
Anda dapat menggunakan klausa WHERE
untuk membentuk kondisi pemfilteran yang lebih kompleks pada label dan properti.
Kueri berikut cocok dengan semua node dalam grafik yang memiliki label Person
, dan properti birthday
berada sebelum 1990-01-10
.
GRAPH FinGraph
MATCH (p:Person WHERE p.birthday < '1990-01-10')
RETURN LABELS(p) AS label, p.name, p.birthday;
Hasil
label | nama | ulang tahun |
---|---|---|
Orang | Dana | 1980-10-31T08:00:00Z |
Orang | Lee | 1986-12-07T08:00:00Z |
Pola tepi
Pola tepi cocok dengan tepi atau hubungan antar-node. Pola tepi
disertai dengan tanda kurung siku []
dengan simbol -
, ->
, atau <-
untuk menunjukkan
arah.
Serupa dengan pola node, variabel pola grafik digunakan untuk mengikat ke elemen tepi yang cocok.
Menemukan semua tepi dengan label yang cocok
Kueri berikut menampilkan semua tepi dalam grafik yang memiliki label Owns
.
Variabel pola grafik e
terikat dengan tepi yang cocok.
GRAPH FinGraph
MATCH -[e:Owns]->
RETURN e.id AS owner_id, e.account_id;
Hasil
owner_id | id_akun |
---|---|
1 | 7 |
3 | 16 |
2 | 20 |
Menemukan semua tepi yang cocok dengan ekspresi label dan filter properti
Serupa dengan pola node, pola tepi dapat menggunakan
ekspresi label, spesifikasi properti, dan klausa WHERE
, seperti yang ditunjukkan dalam
kueri berikut. Kueri menemukan semua tepi yang diberi label Owns
dan memiliki properti create_time
dalam periode yang ditentukan.
GRAPH FinGraph
MATCH -[e:Owns WHERE e.create_time > '2020-01-14'
AND e.create_time < '2020-05-14']->
RETURN e.id AS owner_id, e.create_time, e.account_id;
Hasil
owner_id | create_time | id_akun |
---|---|---|
2 | 2020-01-28T01:55:09.206Z | 20 |
3 | 2020-02-18T13:44:20.655Z | 16 |
Menemukan semua tepi menggunakan pola tepi arah apa pun
Meskipun semua tepi di Spanner Graph diarahkan, Anda dapat menggunakan
any direction
pola tepi -[]-
dalam kueri untuk mencocokkan tepi di kedua arah.
Kueri berikut menemukan semua transfer yang melibatkan akun yang diblokir.
GRAPH FinGraph
MATCH (account:Account)-[transfer:Transfers]-(:Account)
WHERE account.is_blocked
RETURN transfer.order_number, transfer.amount;
Hasil
order_number | jumlah |
---|---|
304330008004315 | 300 |
304120005529714 | 100 |
103650009791820 | 300 |
302290001255747 | 200 |
Pola jalur
Pola jalur dibuat dari pola node dan tepi yang bergantian.
Menemukan semua jalur dari node dengan filter label dan properti yang ditentukan, menggunakan pola jalur
Kueri berikut menemukan semua transfer ke akun yang dimulai dari akun
yang dimiliki oleh Person
dengan id
sama dengan 2
.
Setiap hasil yang cocok mewakili jalur dari Person
{id: 2}
melalui
Account
yang terhubung menggunakan tepi Owns
, ke Account
lain menggunakan
tepi Transfers
.
GRAPH FinGraph
MATCH
(p:Person {id: 2})-[:Owns]->(account:Account)-[t:Transfers]->
(to_account:Account)
RETURN
p.id AS sender_id, account.id AS from_id, to_account.id AS to_id;
Hasil
sender_id | from_id | to_id |
---|---|---|
2 | 20 | 7 |
2 | 20 | 16 |
Pola jalur yang dikuantifikasi
Pola yang dikuantifikasi memungkinkan pola diulang dalam rentang yang ditentukan.
Mencocokkan pola tepi yang dikuantifikasi
Kueri berikut menemukan semua akun tujuan yang melakukan satu hingga tiga
transfer dari Account
sumber dengan id
sama dengan 7
, selain
akun itu sendiri.
Pola tepi yang diakhiri dengan kuantifiser {1, 3}
.
GRAPH FinGraph
MATCH (src:Account {id: 7})-[e:Transfers]->{1, 3}(dst:Account)
WHERE src != dst
RETURN src.id AS src_account_id, ARRAY_LENGTH(e) AS path_length, dst.id AS dst_account_id;
Hasil
src_account_id | path_length | dst_account_id |
---|---|---|
7 | 1 | 16 |
7 | 1 | 16 |
7 | 1 | 16 |
7 | 3 | 16 |
7 | 3 | 16 |
7 | 2 | 20 |
7 | 2 | 20 |
Contoh sebelumnya menggunakan fungsi ARRAY_LENGTH
untuk mengakses
e
group variable
. Untuk mengetahui informasi selengkapnya, lihat variabel grup akses.
Beberapa baris dalam contoh hasil diulang karena mungkin ada beberapa
jalur antara pasangan akun src
dan dst
yang sama yang cocok dengan pola.
Mencocokkan pola jalur yang dikuantifikasi
Kueri berikut menemukan jalur antara node Account
dengan satu hingga dua
sisi Transfers
melalui akun perantara yang diblokir.
Pola jalur dalam tanda kurung dikuantifikasi dan klausa WHERE
digunakan dalam
tanda kurung untuk menentukan kondisi pola berulang.
GRAPH FinGraph
MATCH
(src:Account)
((:Account)-[:Transfers]->(interm:Account) WHERE interm.is_blocked){1,2}
-[:Transfers]->(dst:Account)
RETURN src.id AS src_account_id, dst.id AS dst_account_id;
Hasil
src_account_id | dst_account_id |
---|---|
7 | 20 |
7 | 20 |
20 | 20 |
Variabel grup
Variabel pola grafik yang dideklarasikan dalam pola kuantitatif dianggap sebagai variabel grup saat diakses di luar pola kuantitatif, dan terikat ke array elemen grafik yang cocok.
Anda dapat mengakses variabel grup sebagai array tempat elemen grafik dipertahankan dalam urutan kemunculan di sepanjang jalur yang cocok. Anda dapat menggabungkan variabel grup menggunakan agregasi horizontal.
Mengakses variabel grup
Pada contoh berikut, variabel e
diakses sebagai berikut:
- Variabel pola grafik yang terikat ke satu tepi dalam klausa
WHERE
e.amount > 100
(dalam pola yang dikuantifikasi). - Variabel grup yang terikat ke array elemen tepi di
ARRAY_LENGTH(e)
dalam pernyataanRETURN
(di luar pola yang dikuantifikasi). - Variabel grup yang terikat ke array elemen tepi, yang digabungkan
oleh
SUM(e.amount)
di luar pola yang diukur. Ini adalah contoh agregasi horizontal.
GRAPH FinGraph
MATCH
(src:Account {id: 7})-[e:Transfers WHERE e.amount > 100]->{0,2}
(dst:Account)
WHERE src.id != dst.id
LET total_amount = SUM(e.amount)
RETURN
src.id AS src_account_id, ARRAY_LENGTH(e) AS path_length,
total_amount, dst.id AS dst_account_id;
Hasil
src_account_id | path_length | total_amount | dst_account_id |
---|---|---|---|
7 | 1 | 300 | 16 |
7 | 2 | 600 | 20 |
Jalur Mana Pun dan Jalur Terpendek Mana Pun
Untuk membatasi jalur yang cocok di setiap grup jalur yang memiliki node sumber dan
tujuan yang sama, Anda dapat menggunakan awalan penelusuran jalur ANY
atau ANY SHORTEST
.
Anda hanya dapat menerapkan awalan ini sebelum seluruh pola jalur,
dan Anda tidak dapat menerapkannya di dalam tanda kurung.
Mencocokkan menggunakan ANY
Kueri berikut menemukan semua akun unik yang dapat dijangkau yang berjarak satu atau dua
Transfers
dari node Account
tertentu.
Awalan penelusuran jalur ANY
memastikan bahwa hanya satu jalur antara pasangan node Account
src
dan dst
yang unik yang ditampilkan. Dalam contoh berikut,
meskipun Anda dapat menjangkau node Account
dengan {id: 16}
di dua jalur
yang berbeda dari node Account
sumber, hasilnya hanya menyertakan satu jalur.
GRAPH FinGraph
MATCH ANY (src:Account {id: 7})-[e:Transfers]->{1,2}(dst:Account)
LET ids_in_path = ARRAY(SELECT e.to_id FROM UNNEST(e) AS e)
RETURN src.id AS src_account_id, dst.id AS dst_account_id, ids_in_path;
Hasil
src_account_id | dst_account_id | ids_in_path |
---|---|---|
7 | 16 | 16 |
7 | 20 | 16,20 |
Pola grafik
Pola grafik terdiri dari satu atau beberapa pola jalur, yang dipisahkan oleh koma ,
.
Pola grafik dapat berisi klausa WHERE
, yang memungkinkan Anda mengakses semua
variabel pola grafik dalam pola jalur untuk membentuk kondisi pemfilteran. Setiap pola
jalur menghasilkan kumpulan jalur.
Mencocokkan menggunakan pola grafik
Kueri berikut mengidentifikasi akun perantara dan pemiliknya yang terlibat dalam jumlah transaksi yang melebihi 200, yang melaluinya dana ditransfer dari akun sumber ke akun yang diblokir.
Pola jalur berikut membentuk pola grafik:
- Pola pertama menemukan jalur tempat transfer terjadi dari satu akun ke akun yang diblokir menggunakan akun perantara.
- Pola kedua menemukan jalur dari akun ke pemiliknya.
Variabel interm
berfungsi sebagai link umum antara dua pola jalur, yang
memerlukan interm
untuk mereferensikan node elemen yang sama di kedua pola jalur. Tindakan ini
akan membuat operasi equi-join berdasarkan variabel interm
.
GRAPH FinGraph
MATCH
(src:Account)-[t1:Transfers]->(interm:Account)-[t2:Transfers]->(dst:Account),
(interm)<-[:Owns]-(p:Person)
WHERE dst.is_blocked = TRUE AND t1.amount > 200 AND t2.amount > 200
RETURN
src.id AS src_account_id, dst.id AS dst_account_id,
interm.id AS interm_account_id, p.id AS owner_id;
Hasil
src_account_id | dst_account_id | interm_account_id | owner_id |
---|---|---|---|
20 | 16 | 7 | 1 |
Pernyataan kueri linear
Anda dapat mengaitkan beberapa pernyataan grafik secara bersamaan untuk membentuk pernyataan kueri linear. Pernyataan dijalankan dalam urutan yang sama seperti yang muncul dalam kueri.
- Setiap pernyataan menggunakan output dari pernyataan sebelumnya sebagai input. Input kosong untuk pernyataan pertama.
- Output pernyataan terakhir adalah hasil akhir.
Menemukan transfer maksimum ke akun yang diblokir
Kueri berikut menemukan akun dan pemiliknya dengan transfer keluar terbesar ke akun yang diblokir.
GRAPH FinGraph
MATCH (src_account:Account)-[transfer:Transfers]->(dst_account:Account)
WHERE dst_account.is_blocked
ORDER BY transfer.amount DESC
LIMIT 1
MATCH (src_account:Account)<-[owns:Owns]-(owner:Person)
RETURN src_account.id AS account_id, owner.name AS owner_name;
Tabel berikut mengilustrasikan cara hasil perantara diteruskan bersama pernyataan. Hanya beberapa properti hasil perantara yang ditampilkan, untuk singkat.
Pernyataan | Hasil Menengah (disingkat) | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
MATCH (src_account:Account) -[transfer:Transfers]-> (dst_account:Account) WHERE dst_account.is_blocked |
|
||||||||||||
ORDER BY transfer.amount DESC |
|
||||||||||||
LIMIT 1 |
|
||||||||||||
MATCH (src_account:Account) <-[owns:Owns]- (owner:Person) |
|
||||||||||||
RETURN src_account.id AS account_id, owner.name AS owner_name |
|
Hasil
id_akun | owner_name |
---|---|
7 | Alex |
Pernyataan return
Pernyataan return menentukan apa yang akan ditampilkan dari pola yang cocok. Fungsi ini dapat mengakses
variabel pola grafik, berisi ekspresi dan klausa lainnya seperti ORDER_BY,
GROUP_BY. Lihat pernyataan RETURN
.
Perhatikan bahwa Spanner Graph tidak mendukung elemen grafik yang ditampilkan sebagai hasil
kueri. Untuk menampilkan seluruh elemen grafik, gunakan fungsi TO_JSON
.
Menampilkan elemen grafik sebagai JSON
GRAPH FinGraph
MATCH (n:Account {id: 7})
-- Returning a graph element in the final results is NOT allowed. Instead, use
-- the TO_JSON function or explicitly return the graph element's properties.
RETURN TO_JSON(n) AS n;
Hasil
n |
---|
{"identifier":"mUZpbkdyYXBoLkFjY291bnQAeJEO","kind":"node","labels":["Account"],"properties":{"create_time":"2020-01-10T14:22:20.222Z","id":7,"is_blocked":false,"nick_name":"Vacation Fund"}} |
Membuat kueri yang lebih besar dengan kata kunci NEXT
Anda dapat merantai beberapa pernyataan kueri linear grafik menggunakan kata kunci NEXT
. Input ke pernyataan kueri linear pertama kosong. Output dari setiap
pernyataan kueri linear menjadi input untuk pernyataan kueri linear berikutnya.
Contoh berikut menemukan pemilik akun dengan transfer masuk
terbanyak dengan mengaitkan beberapa pernyataan linear grafik secara bersamaan. Perhatikan bahwa Anda
dapat menggunakan variabel yang sama, account
dalam contoh ini, untuk merujuk ke elemen grafik
yang sama di beberapa pernyataan linear.
GRAPH FinGraph
MATCH (:Account)-[:Transfers]->(account:Account)
RETURN account, COUNT(*) AS num_incoming_transfers
GROUP BY account
ORDER BY num_incoming_transfers DESC
LIMIT 1
NEXT
MATCH (account:Account)<-[:Owns]-(owner:Person)
RETURN account.id AS account_id, owner.name AS owner_name, num_incoming_transfers;
Hasil
id_akun | owner_name | num_incoming_transfers |
---|---|---|
16 | Lee | 3 |
Fungsi dan ekspresi
Anda dapat menggunakan semua fungsi GoogleSQL (fungsi agregat dan skalar), operator, dan ekspresi kondisional dalam kueri Grafik Spanner. Spanner Graph juga mendukung fungsi dan operator khusus grafik.
Fungsi dan operator bawaan
Fungsi dan operator berikut biasa digunakan di GQL:
PROPERTY_EXISTS(n, birthday)
: Menampilkan apakahn
mengekspos propertibirthday
.LABELS(n)
: Menampilkan labeln
seperti yang ditentukan dalam skema grafik.PROPERTY_NAMES(n)
: Menampilkan nama propertin
.TO_JSON(n)
: Menampilkann
dalam format JSON. Untuk mengetahui informasi selengkapnya, lihat fungsiTO_JSON
.
Kueri berikut mengilustrasikan predikat PROPERTY_EXISTS
,fungsi LABELS
, dan fungsi TO_JSON
, serta fungsi bawaan lainnya seperti ARRAY_AGG
dan CONCAT
.
GRAPH FinGraph
MATCH (person:Person)-[:Owns]->(account:Account)
RETURN person, ARRAY_AGG(account.nick_name) AS accounts
GROUP BY person
NEXT
RETURN
LABELS(person) AS labels,
TO_JSON(person) AS person,
accounts,
CONCAT(person.city, ", ", person.country) AS location,
PROPERTY_EXISTS(person, is_blocked) AS is_blocked_property_exists,
PROPERTY_EXISTS(person, name) AS name_property_exists
LIMIT 1;
Hasil
is_blocked_property_exists | name_property_exists | label | akun | location | pengguna |
---|---|---|---|---|---|
false | benar | Orang | ["Vacation Fund"] | Adelaide, Australia | {"identifier":"mUZpbkdyYXBoLlBlcnNvbgB4kQI=","kind":"node","labels":["Person"],"properties":{"birthday":"1991-12-21T08:00:00Z","city":"Adelaide","country":"Australia","id":1,"name":"Alex"}} |
Subkueri
Subkueri adalah kueri yang disusun bertingkat dalam kueri lain. Daftar berikut mencantumkan aturan subkueri Spanner Graph:
- Subkueri diapit dalam sepasang kurung kurawal
{}
. - Subkueri dapat dimulai dengan klausa
GRAPH
utama untuk menentukan grafik dalam cakupan. Grafik yang ditentukan tidak harus sama dengan yang digunakan dalam kueri luar. - Jika klausa
GRAPH
dihilangkan dalam subkueri, hal berikut akan terjadi:- Grafik dalam cakupan disimpulkan dari konteks kueri luar terdekat.
- Subkueri harus dimulai dari pernyataan pencocokan pola grafik
dengan
MATCH.
- Variabel pola grafik yang dideklarasikan di luar cakupan subkueri tidak dapat dideklarasikan lagi di dalam subkueri, tetapi dapat dirujuk dalam ekspresi atau fungsi di dalam subkueri.
Menggunakan subkueri untuk menemukan jumlah total transfer dari setiap akun
Kueri berikut mengilustrasikan penggunaan subkueri VALUE
. Subkueri
disertakan dalam kurung kurawal {}
yang diawali dengan kata kunci VALUE
. Kueri menampilkan jumlah
total transfer yang dimulai dari akun.
GRAPH FinGraph
MATCH (p:Person)-[:Owns]->(account:Account)
RETURN p.name, account.id AS account_id, VALUE {
MATCH (a:Account)-[transfer:Transfers]->(:Account)
WHERE a = account
RETURN SUM(transfer.amount) AS total_transfer
} AS total_transfer;
Hasil
nama | id_akun | total_transfer |
---|---|---|
Alex | 7 | 400 |
Dana | 20 | 700 |
Lee | 16 | 300 |
Untuk mengetahui daftar ekspresi subkueri yang didukung, lihat Subkueri Grafik Spanner.
Parameter kueri
Anda dapat membuat kueri Spanner Graph dengan parameter. Untuk mengetahui informasi selengkapnya, lihat sintaksis dan pelajari cara mengkueri data dengan parameter di library klien Spanner.
Kueri berikut mengilustrasikan penggunaan parameter kueri.
GRAPH FinGraph
MATCH (person:Person {id: @id})
RETURN person.name;
Membuat kueri grafik dan tabel secara bersamaan
Anda dapat menggunakan kueri Grafik bersama dengan SQL untuk mengakses informasi dari Grafik dan Tabel secara bersamaan dalam satu pernyataan.
GRAPH_TABLE
Operator GRAPH_TABLE
mengambil kueri grafik linear dan menampilkan hasilnya dalam
format tabel yang dapat diintegrasikan dengan lancar ke dalam kueri SQL. Interoperabilitas
ini memungkinkan Anda memperkaya hasil kueri grafik dengan konten non-grafik dan
sebaliknya.
Misalnya, Anda dapat membuat tabel CreditReports
dan menyisipkan beberapa laporan
kredit, seperti yang ditunjukkan pada contoh berikut:
CREATE TABLE CreditReports (
person_id INT64 NOT NULL,
create_time TIMESTAMP NOT NULL,
score INT64 NOT NULL,
) PRIMARY KEY (person_id, create_time);
INSERT INTO CreditReports (person_id, create_time, score)
VALUES
(1,"2020-01-10 06:22:20.222", 700),
(2,"2020-02-10 06:22:20.222", 800),
(3,"2020-03-10 06:22:20.222", 750);
Kemudian, identifikasi orang yang diminati melalui pencocokan pola grafik di GRAPH_TABLE
dan gabungkan hasil kueri grafik dengan tabel CreditReports
untuk mengakses skor
kredit.
SELECT
gt.person.id,
credit.score AS latest_credit_score
FROM GRAPH_TABLE(
FinGraph
MATCH (person:Person)-[:Owns]->(:Account)-[:Transfers]->(account:Account)
WHERE account.is_blocked
RETURN DISTINCT person
) AS gt
JOIN CreditReports AS credit
ON gt.person.id = credit.person_id
ORDER BY credit.create_time;
Hasil:
person_id | latest_credit_score |
---|---|
1 | 700 |
2 | 800 |
Langkah selanjutnya
Pelajari praktik terbaik untuk menyesuaikan kueri.