Membuat dan mengkueri grafik
Dokumen ini menunjukkan cara menggunakan BigQuery Graph untuk membuat grafik dengan informasi keuangan dan menjalankan kueri grafik menggunakan Graph Query Language (GQL).
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan guna membuat dan membuat kueri grafik,
minta administrator untuk memberi Anda
peran IAM BigQuery Data Editor (roles/bigquery.dataEditor)
di set data tempat Anda membuat tabel node, tabel edge, dan grafik.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Membuat tabel node dan edge
Grafik dibuat dari tabel BigQuery yang ada dan disimpan dalam set data.
Untuk menyimpan tabel dan grafik yang Anda buat dalam contoh berikut, buat set data.
Kueri berikut membuat set data bernama graph_db:
CREATE SCHEMA IF NOT EXISTS graph_db;
Tabel berikut berisi informasi tentang orang dan akun, serta hubungan antara setiap entitas ini:
Person: informasi tentang orang.Account: informasi tentang rekening bank.PersonOwnAccount: informasi tentang siapa yang memiliki akun mana.AccountTransferAccount: informasi tentang transfer antar-akun.
Untuk membuat tabel ini, jalankan pernyataan
CREATE TABLE berikut:
CREATE OR REPLACE TABLE graph_db.Person (
id INT64,
name STRING,
birthday TIMESTAMP,
country STRING,
city STRING,
PRIMARY KEY (id) NOT ENFORCED
);
CREATE OR REPLACE TABLE graph_db.Account (
id INT64,
create_time TIMESTAMP,
is_blocked BOOL,
nick_name STRING,
PRIMARY KEY (id) NOT ENFORCED
);
CREATE OR REPLACE TABLE graph_db.PersonOwnAccount (
id INT64 NOT NULL,
account_id INT64 NOT NULL,
create_time TIMESTAMP,
PRIMARY KEY (id, account_id) NOT ENFORCED,
FOREIGN KEY (id) REFERENCES graph_db.Person(id) NOT ENFORCED,
FOREIGN KEY (account_id) REFERENCES graph_db.Account(id) NOT ENFORCED
);
CREATE OR REPLACE TABLE graph_db.AccountTransferAccount (
id INT64 NOT NULL,
to_id INT64 NOT NULL,
amount FLOAT64,
create_time TIMESTAMP NOT NULL,
order_number STRING,
PRIMARY KEY (id, to_id, create_time) NOT ENFORCED,
FOREIGN KEY (id) REFERENCES graph_db.Account(id) NOT ENFORCED,
FOREIGN KEY (to_id) REFERENCES graph_db.Account(id) NOT ENFORCED
);
Membuat grafik
Untuk membuat grafik, Anda menggunakan
pernyataan CREATE PROPERTY GRAPH.
Contoh berikut membuat grafik bernama FinGraph dalam set data graph_db. Tabel Account dan Person adalah tabel node.
Tabel AccountTransferAccount dan PersonOwnAccount adalah tabel tepi,
yang merepresentasikan hubungan antar-tabel node.
CREATE OR REPLACE PROPERTY GRAPH graph_db.FinGraph
NODE TABLES (
graph_db.Account,
graph_db.Person
)
EDGE TABLES (
graph_db.PersonOwnAccount
SOURCE KEY (id) REFERENCES Person (id)
DESTINATION KEY (account_id) REFERENCES Account (id)
LABEL Owns,
graph_db.AccountTransferAccount
SOURCE KEY (id) REFERENCES Account (id)
DESTINATION KEY (to_id) REFERENCES Account (id)
LABEL Transfers
);
Masukkan data
Untuk memperbarui data dalam grafik, Anda memperbarui data dalam tabel node dan edge. Saat Anda membuat grafik, data Anda tidak dipindahkan atau disalin. Sebaliknya, grafik berfungsi sebagai tampilan logis data yang ada di tabel node dan edge Anda. Kueri grafik Anda menampilkan hasil berdasarkan data yang ada di tabel node dan edge pada saat Anda menjalankan kueri.
Kueri berikut menyisipkan data ke dalam tabel yang Anda buat:
INSERT INTO graph_db.Account
(id, create_time, is_blocked, nick_name)
VALUES
(7,"2020-01-10 06:22:20.222",false,"Vacation Fund"),
(16,"2020-01-27 17:55:09.206",true,"Vacation Fund"),
(20,"2020-02-18 05:44:20.655",false,"Rainy Day Fund");
INSERT INTO graph_db.Person
(id, name, birthday, country, city)
VALUES
(1,"Alex","1991-12-21 00:00:00","Australia","Adelaide"),
(2,"Dana","1980-10-31 00:00:00","Czech_Republic","Moravia"),
(3,"Lee","1986-12-07 00:00:00","India","Kollam");
INSERT INTO graph_db.AccountTransferAccount
(id, to_id, amount, create_time, order_number)
VALUES
(7,16,300,"2020-08-29 15:28:58.647","304330008004315"),
(7,16,100,"2020-10-04 16:55:05.342","304120005529714"),
(16,20,300,"2020-09-25 02:36:14.926","103650009791820"),
(20,7,500,"2020-10-04 16:55:05.342","304120005529714"),
(20,16,200,"2020-10-17 03:59:40.247","302290001255747");
INSERT INTO graph_db.PersonOwnAccount
(id, account_id, create_time)
VALUES
(1,7,"2020-01-10 06:22:20.222"),
(2,20,"2020-01-27 17:55:09.206"),
(3,16,"2020-02-18 05:44:20.655");

Membuat kueri grafik
Untuk membuat kueri grafik, Anda menjalankan kueri yang menggunakan Bahasa Kueri Grafik.
Kueri berikut menggunakan
pernyataan MATCH
untuk menemukan informasi tentang siapa yang menerima transfer uang dari Dana:
GRAPH graph_db.FinGraph
MATCH
(person:Person {name: "Dana"})-[own:Owns]->
(account:Account)-[transfer:Transfers]->(account2:Account)<-[own2:Owns]-(person2:Person)
RETURN
person.name AS owner,
transfer.amount AS amount,
person2.name AS transferred_to
ORDER BY person2.name;
Hasilnya akan mirip seperti berikut:
+-------+--------+----------------+ | owner | amount | transferred_to | +-------+--------+----------------+ | Dana | 500.0 | Alex | | Dana | 200.0 | Lee | +-------+--------+----------------+
Memvisualisasikan hasil kueri grafik
Anda dapat
memvisualisasikan hasil kueri grafik
dalam notebook menggunakan perintah ajaib %%bigquery --graph yang diikuti dengan kueri
GQL Anda. Kueri harus menampilkan elemen grafik dalam format JSON. Untuk memvisualisasikan
hasil kueri yang Anda jalankan di bagian sebelumnya, jalankan kueri berikut
dalam sel kode notebook:
%%bigquery --graph
GRAPH graph_db.FinGraph
MATCH
p = ((person:Person {name: "Dana"})-[own:Owns]->
(account:Account)-[transfer:Transfers]->(acount2:Account)<-[own2:Owns]-(person2:Person))
RETURN
TO_JSON(p) AS path;

Menghapus grafik
Untuk menghapus grafik, gunakan pernyataan DROP PROPERTY GRAPH. Menghapus grafik tidak akan memengaruhi tabel yang digunakan untuk menentukan node dan tepi grafik. Kueri
berikut menghapus grafik FinGraph:
DROP PROPERTY GRAPH graph_db.FinGraph;
Langkah berikutnya
- Lihat pengantar BigQuery Graph.
- Pelajari lebih lanjut skema grafik.
- Pelajari lebih lanjut cara menulis kueri grafik.
- Pelajari lebih lanjut Graph Query Language (GQL).
- Untuk melihat tutorial tentang deteksi penipuan, lihat artikel Deteksi Penipuan dengan BigQuery Graph.
- Untuk tutorial tentang profil pelanggan, lihat Membangun rekomendasi 360 pelanggan dengan BigQuery Graph.
- Untuk melihat tutorial tentang supply chain, lihat Ketertelusuran supply chain dengan BigQuery Graph.