1. Pengantar
Selamat datang di tahap akhir penyelidikan Lost Cargo. Setelah melacak kontainer berisi figurin Android yang dicuri dari London hingga ke Sydney, jejaknya tidak lagi terdeteksi. Dengan menonaktifkan transpondernya, brankas keamanan pintar kontainer telah memicu penguncian darurat otomatis.
Untuk memulihkan kargo bernilai tinggi sebelum terkunci selamanya, misi Anda adalah menemukan lokasi akhir kontainer dan mengambil kode sandi penggantian manual untuk membuka brankas secara fisik.

Untuk menemukan kontainer yang hilang dan mengamankan kargo, Anda akan membuat Grafik Properti BigQuery untuk melacak perjalanan pengiriman. Kemudian, Anda akan mengkueri jaringan ini dalam bahasa alami menggunakan Conversational Analytics, dan menyelesaikannya dengan melakukan penelusuran semantik atas metadata data Anda dengan Knowledge Catalog untuk menemukan kode penggantian.
💡 Melewatkan Lab 1 atau Lab 2? Jangan khawatir! Lab ini sepenuhnya mandiri. Langkah-langkah penyiapan lingkungan akan menyediakan semua yang Anda butuhkan sehingga Anda dapat langsung memulai dan menyelesaikannya secara mandiri.
Yang akan Anda lakukan
- Clone repositori dan jalankan skrip penyiapan di Google Cloud Shell.
- Bangun Grafik Properti di BigQuery yang menautkan data perusahaan, kapal, dan manifes.
- Gunakan Analisis Percakapan untuk mengkueri grafik dalam bahasa alami, melacak perjalanan kargo untuk mengidentifikasi operator yang bertanggung jawab.
- Temukan tabel yang berisi kode penggantian akhir menggunakan Knowledge Catalog.
- Gunakan Kontrol akses tingkat kolom BigQuery untuk membuka dan menampilkan kode akhir.
Yang Anda butuhkan
- Browser web seperti Chrome
- Project Google Cloud yang mengaktifkan penagihan
- Akses ke Google Cloud Shell
Codelab ini dirancang untuk praktisi data di semua tingkat.
Resource yang dibuat dalam codelab ini seharusnya berbiaya kurang dari $5.
Perkiraan durasi: Codelab ini akan memerlukan waktu sekitar 45 menit untuk diselesaikan.
2. Sebelum memulai
Buat Project Google Cloud
- Di Konsol Google Cloud, di halaman pemilih project, pilih atau buat project Google Cloud.
- Pastikan penagihan diaktifkan untuk project Cloud Anda.
Mulai Cloud Shell
Anda akan menggunakan Google Cloud Shell untuk mendownload kode, menjalankan skrip penyiapan, dan men-deploy aplikasi.
- Di tab browser baru, buka Cloud Shell:

- Setelah terhubung, tetapkan project ID Anda dan konfirmasi lingkungan Anda:
gcloud config set project <<YOUR_PROJECT_ID>>
export PROJECT_ID=$(gcloud config get-value project)
export REGION=us-central1
Anda akan melihat pesan yang mirip dengan:
Your active configuration is: [cloudshell-####] Updated property [core/project]
Mengaktifkan API yang Diperlukan
Jalankan perintah berikut di Cloud Shell untuk mengaktifkan API yang diperlukan:
gcloud services enable \
bigquery.googleapis.com \
aiplatform.googleapis.com \
datacatalog.googleapis.com \
geminidataanalytics.googleapis.com \
cloudaicompanion.googleapis.com
Setelah berhasil dieksekusi, Anda akan melihat pesan yang mirip dengan:
Operation "operations/..." finished successfully.
3. Menyiapkan Lingkungan Anda
Di lab sebelumnya dalam seri ini, kita telah meletakkan dasar untuk penyelidikan kita.
1. Melakukan cloning repositori
Clone repositori codelab ke lingkungan Cloud Shell Anda:
cd ~/
git clone --filter=blob:none --no-checkout https://github.com/GoogleCloudPlatform/devrel-demos.git
cd ~/devrel-demos
git sparse-checkout init --cone
git sparse-checkout set codelabs/bigquery-graph-analytics
git checkout main
cd codelabs/bigquery-graph-analytics/
2. Menyiapkan tabel dasar dan tag kebijakan
Jalankan skrip penyiapan untuk mengisi set data BigQuery dan menerapkan tag keamanan tingkat kolom untuk membatasi data sensitif:
bash setup_lab.sh
Pastikan output di terminal Anda menunjukkan inisialisasi yang berhasil:
🚀 Provisioning foundational tables and deploying Policy Tag security bindings... 🎯 Active Project: your-project-id ... 🎉 Success! Foundational tables initialized and Column-Level Policy Tags fully mapped out of the box!
Setelah lingkungan Anda berhasil disiapkan dan data logistik diisi ke BigQuery, Anda kini dapat membuat Grafik Properti untuk menghubungkan tabel dan melacak perjalanan kargo.
4. Menghubungkan data Anda menggunakan Grafik BigQuery
Untuk menganalisis data supply chain, kita akan menentukan hubungan antara perusahaan, kapal, dan manifes. Dengan membuat grafik properti, kita dapat mengkueri hubungan ini dengan mudah.
1. Cara Grafik Properti Memodelkan Hubungan

Grafik properti BigQuery memodelkan jaringan menggunakan:
- Node: Entitas dalam jaringan. Dalam lab ini, node merepresentasikan Perusahaan (yang menyimpan detail kontak secara langsung), Manifes, dan Kapal.
- Tepi: Hubungan yang menghubungkan node. Contoh:
- Edge menghubungkan Manifest ke Vessel (melalui hubungan dalam tabel
manifests). - Edge menghubungkan Vessel ke Company (melalui hubungan dalam tabel
vessels).
- Edge menghubungkan Manifest ke Vessel (melalui hubungan dalam tabel
- Properti: Metadata yang disimpan di node atau tepi. Misalnya, node Perusahaan memiliki kolom seperti
company_namedanphone_number, dan node Manifes memilikiseal_integrity_statusdan koordinat (last_ping_lat,last_ping_long). - Label: Nama tag yang ditetapkan ke node (misalnya,
Company,Vessel,Manifest) dan edge (misalnya,CARRIED_BY,OPERATED_BY) sehingga alat kueri dapat mengenali jenis node dan relasi.
2. Men-deploy Grafik Properti di BigQuery
File setup_graph.sql berisi DDL SQL untuk menentukan dan membuat grafik properti, tetapi saat ini belum lengkap. Anda perlu menentukan label tepi (hubungan) dalam file skema ini sebelum mengompilasi dan men-deploy-nya:
- Buka Cloud Shell Editor.

- Buka file
setup_graph.sqldi Cloud Shell Editor.

- Temukan placeholder untuk label tepi:
- Baris 22: Ganti
`EDGE_TABLE_PLACEHOLDER`dengan tag yang bermakna yang menunjukkan hubungan antara manifes dan kapal (misalnya,CARRIED_BY). - Baris 27: Ganti
`EDGE_TABLE_PLACEHOLDER`dengan tag yang menunjukkan hubungan antara kapal dan perusahaan (misalnya,OPERATED_BY).
- Baris 22: Ganti
- Simpan file.
Sekarang, kembali ke terminal Cloud Shell dan deploy grafik properti yang diperbarui menggunakan skrip yang telah selesai:
bq query --use_legacy_sql=false < setup_graph.sql
Anda akan melihat output yang menunjukkan bahwa tugas telah selesai:
Waiting on bqjob_r... ... (0s) Current status: DONE
Anda dapat melihat detail Grafik Properti di Konsol BigQuery:
Temukan lost_cargo_dataset, lalu pilih Grafik:

Setelah grafik properti berhasil dikompilasi, mari kita pelajari BigQuery Studio untuk membuat kueri dan memvisualisasikan koneksi.
5. Membuat Kueri Grafik Anda
Anda dapat membuat kueri dan menjelajahi grafik secara visual menggunakan Graph Query Language (GQL) native langsung di dalam BigQuery Studio.
1. Mengirim kueri ke rantai penampung -> kapal -> perusahaan
Mari kita jelajahi kueri GQL dengan menemukan siapa yang mengoperasikan kapal yang membawa kargo. Menemukan operator memerlukan penelusuran di tiga node entitas terpisah dalam jaringan logistik kami:

- Mulai dari node
Manifestcontainer. - Ikuti tepi hubungan
CARRIED_BYuntuk menemukanVesselyang membawa. - Ikuti tepi hubungan
OPERATED_BYdari kapal tersebut keCompanyyang bertanggung jawab dan ambil ID-nya.
Pertama, jalankan kueri untuk memvisualisasikan seluruh jaringan (tanpa filter apa pun) untuk melihat grafik lengkap.
- Buka tab baru di editor SQL BigQuery Studio, tempel kueri GQL berikut, lalu klik Run:
SELECT * FROM GRAPH_TABLE( `lost_cargo_dataset.logistics_network` MATCH p = (m:Manifest)-[:CARRIED_BY]->(v:Vessel)-[:OPERATED_BY]->(comp:Company) RETURN TO_JSON(p) AS path ); - Setelah kueri selesai, di panel Query results di bagian bawah, klik tab Graph (terletak di samping tab Results table).

- BigQuery merender hasil sebagai representasi grafik visual interaktif. Perbesar untuk melihat seluruh jaringan kontainer, kapal, dan operator yang terhubung.
Anatomi Kueri GQL
Mari kita uraikan kueri GQL yang baru saja kita jalankan:
GRAPH_TABLE: Mengarahkan BigQuery untuk menjalankan kueri grafik properti terhadap grafiklogistics_network.MATCH: Mendeklarasikan pola traversal multi-hop. Kita mulai dariManifest(m), mencocokkan hubungan edge:CARRIED_BYyang mengarah keVessel(v), lalu mencocokkan hubungan edge:OPERATED_BYyang mengarah keCompany(comp).- GQL menggantikan logika gabungan yang kompleks dengan panah hubungan ASCII-art yang intuitif dan mudah dibaca manusia
()->[]->(), sehingga sangat memudahkan penulisan dan pengoptimalan kueri multi-hop. RETURN: Menampilkan properti atau jalur JSON dari elemen yang cocok.
2. Memfilter hasil kueri GQL
Sekarang, mari kita memfilter kueri sehingga kita hanya melihat jalur untuk container target yang disusupi MV-CAPYBARA-003.
- Tempel kueri berikut ke editor SQL, lalu klik Run:
SELECT * FROM GRAPH_TABLE( `lost_cargo_dataset.logistics_network` MATCH p = (m:Manifest {shipment_id: 'MV-CAPYBARA-003'})-[:CARRIED_BY]->(v:Vessel)-[:OPERATED_BY]->(comp:Company) RETURN TO_JSON(p) AS path ); - Klik tab Grafik di bagian hasil.

- Penampil kini hanya menampilkan rute penelusuran aktif untuk
MV-CAPYBARA-003. Perbesar untuk melihat node dan koneksi:- Klik dua kali node
Companyuntuk membuka panel properti. Di bagian Properti, Anda akan melihat operatorcompany_id:103(Davy Jones Shipping). Catat ID perusahaan ini—Anda akan memerlukannya nanti untuk mengambil kode sandi izin dari registry keamanan. - Klik dua kali node
Vesseluntuk memverifikasi bahwa node tersebut adalahFlying Dutchman.
- Klik dua kali node
6. Melakukan percakapan dengan Grafik Anda menggunakan Analisis Percakapan
Setelah Anda membuat kueri grafik secara manual untuk menemukan ID perusahaan, mari kita gunakan Analisis Percakapan untuk melakukan percakapan langsung dengan grafik kita dan menentukan ke mana arah penampung kita.
1. Memulai sesi Conversational Analytics
- Di Konsol Google Cloud, buka Konsol BigQuery, dan luaskan panel resource untuk menemukan set data Anda (
lost_cargo_dataset). - Klik resource Property Graph Anda:
logistics_network. - Di toolbar panel detail di bagian atas, klik tombol Chat. Tindakan ini akan membuka sesi Analisis Percakapan yang telah dimuat sebelumnya dengan konteks grafik Anda.

2. Menentukan lokasi port docking terdekat untuk kontainer yang dibajak
Pesawat patroli laut baru saja melihat sebuah kapal yang cocok dengan deskripsi kapal kargo kita berlayar di luar jaringan (dengan transpondernya dinonaktifkan) di koordinat POINT(-122.48 37.55). Untuk mencegat kargo, kita harus menemukan pelabuhan terdekat tempat Davy Jones Shipping beroperasi.
Daripada menelusuri semua pelabuhan global secara manual, kami akan membuat kueri jaringan grafik kami untuk menarik pelabuhan yang terhubung ke armada aktif sindikat dan mengukur mana yang secara fisik paling dekat dengan penampakan tersebut.
- Di kotak chat Analisis Percakapan, masukkan perintah berikut:
Find all ports associated with Davy Jones Shipping vessels. Which port is closest to coordinate POINT(-122.48 37.55), show the distance in km, and display it on a map.

- Perhatikan responsnya dengan cermat. Agen menjelajahi grafik dan menampilkan fasilitas pelabuhan terdekat beserta jaraknya:
- Port Docking:
Mountain View Terminal - Jarak:
39.42 kilometers
- Port Docking:
- Karena Analisis Percakapan didukung oleh Gemini dengan integrasi geospasial (GIS) bawaan, Analisis Percakapan dapat menafsirkan titik koordinat geografi dan memanfaatkan pengetahuan dunianya untuk memverifikasi lokasi:"Kapal tersebut berjarak sekitar 39,42 kilometer dari Terminal Mountain View, California, yang menunjukkan bahwa kapal tersebut sedang menuju ke sana untuk berlabuh."
Hal ini mengonfirmasi bahwa kargo kita sedang menuju langsung ke Mountain View.
Di balik layar: Graph Query Language (GQL) & GIS Geospasial
Di balik layar, agen Analisis Percakapan secara dinamis menyusun dan menjalankan kueri yang menggabungkan pencocokan jalur Grafik dengan perhitungan jarak Geospasial. Hal ini dicapai menggunakan klausa COLUMNS GQL native, yang menghitung jarak geodetik secara native di dalam pencocokan penelusuran grafik:
SELECT port_id, port_name, country, latitude, longitude, distance_km
FROM GRAPH_TABLE(
`lost_cargo_dataset.logistics_network`
MATCH (c:Company)<-[]-(v:Vessel)-[]->(p:Port)
WHERE LOWER(c.company_name) = 'davy jones shipping'
COLUMNS (
p.port_id,
p.port_name,
p.country,
p.latitude,
p.longitude,
ROUND(ST_DISTANCE(ST_GEOGPOINT(p.longitude, p.latitude), ST_GEOGPOINT(-122.48, 37.55)) / 1000, 2) AS distance_km
)
)
ORDER BY distance_km ASC;
Dengan menggabungkan fungsi Geospasial (GIS) native (ST_DISTANCE, ST_GEOGPOINT) dengan pencocokan grafik properti GQL, BigQuery secara dinamis menyelesaikan jejak operasional sindikat dan menghitung kedekatan fisik di dunia nyata dalam satu kueri.
7. Menemukan data yang hilang dengan Knowledge Catalog
Grafik properti menampilkan hubungan, tetapi tidak berisi tabel tempat kode penggantian sebenarnya disimpan.
Dalam lingkungan perusahaan yang sebenarnya dengan ratusan set data dan tabel, menemukan informasi ini bisa jadi sulit. Kita akan menggunakan Knowledge Catalog untuk melakukan penelusuran semantik dan menemukan tabel yang benar.
1. Penelusuran Semantik di Knowledge Catalog
- Di Konsol Google Cloud, telusuri dan buka Knowledge Catalog ➔ Search.
- Di kolom filter penelusuran di bagian Sistem, centang BigQuery untuk mempersempit hasil.
- Di kotak penelusuran, masukkan kueri berikut:
container override codes

- Klik resource tabel
maritime_security_registryyang muncul di hasil penelusuran:
Setelah memeriksa skema metadata, Anda akan melihat bahwa tabel tersebut berisi kolom untuk data keamanan penampung—seperti perusahaan koordinator co_id, token kustodian cust_tok, dan yang paling penting, kolom kode sandi penggantian penampung aman: clc_ovr_cd.
Kita telah berhasil menemukan tabel dan kolom aman yang tepat untuk memulihkan kargo kita.
🔓 Tata Kelola Dunia Nyata: Di lingkungan perusahaan produksi, tim keamanan dan tata kelola juga memanfaatkan:
- Aspek dan Template Tag: Untuk melampirkan metadata bisnis (seperti Pemilik Data, Periode Retensi, atau Klasifikasi PII) ke skema tabel.
- Silsilah Data: Untuk membuat flowchart visual secara otomatis yang merepresentasikan cara kueri dan penggunaan tabel seperti
maritime_security_registryoleh sistem hilir.
2. Memeriksa Keamanan Kolom di BigQuery
- Kembali ke Konsol BigQuery.
- Di tab Explorer, pilih
lost_cargo_dataset, lalu klik tabelmaritime_security_registry. - Klik tab Schema.

- Perhatikan bahwa kolom
clc_ovr_cddiamankan oleh tag kebijakan bernamaMaskShippingDetails(tercantum di kolom Tag kebijakan). - Buka tab SQL Editor baru di BigQuery dan coba lihat kode penggantian registri dengan menjalankan kueri berikut:
SELECT * FROM `lost_cargo_dataset.maritime_security_registry` WHERE co_id = 103; - Karena akun Anda belum memiliki izin untuk membaca kolom yang diberi tag
MaskShippingDetails, kueri akan langsung gagal dengan error keamanan database Access Denied:

8. Memecahkan Keamanan Kolom untuk Mendapatkan Kode Sandi
Untuk membaca kode penggantian akhir dalam teks biasa, kita perlu memberikan izin akun pengguna untuk membaca kolom yang diberi tag MaskShippingDetails.
1. Memberikan Izin Tag Kebijakan
- Di panel navigasi kiri konsol BigQuery, buka Tag kebijakan.
- Pilih taksonomi bernama
LostCargoSecurity_. - Dalam daftar tag, klik
MaskShippingDetails. - Di Panel info di sisi kanan layar, klik Tambahkan Akun Utama. (Jika panel disembunyikan, klik Tampilkan Panel Info di kanan atas).
- Di kolom New principals, masukkan email pengguna Google Cloud aktif Anda.
- Di dropdown Select a role, telusuri dan pilih Fine-Grained Reader, lalu klik Save.

2. Kueri untuk Kode Penggantian
Kembali ke editor ruang kerja BigQuery Anda. Karena Anda kini memiliki akses pembaca terperinci, kami dapat menjalankan kueri lagi dan dapat melihat data yang tidak disamarkan:
SELECT * FROM `lost_cargo_dataset.maritime_security_registry`
WHERE co_id = 103;
🔓 Hasil
Kueri menampilkan kode penggantian yang tidak di-masking:
SHIVER-ME-TIMBERS-888

9. Pembersihan
Untuk menghindari timbulnya biaya, bersihkan resource sandbox yang dibuat selama lab ini.
Kembali ke Terminal Cloud Shell dan hapus set data BigQuery yang berisi tabel logistik:
bq rm -r -f -d lost_cargo_dataset
Hapus file repositori yang di-clone:
cd ..
rm -rf data-cloud-roadshow-26
10. Selamat
Anda telah berhasil menyelesaikan penyelidikan dan mengambil kode penggantian izin.
Yang telah Anda pelajari
- Cara membuat grafik properti di BigQuery untuk merepresentasikan entity dan hubungan yang kompleks.
- Cara Node, Edge, Properti, dan Label dikonfigurasi untuk merekam koneksi data.
- Cara membuat kueri grafik properti menggunakan bahasa natural dengan Analisis Percakapan BigQuery.
- Cara ekspresi Graph Query Language (GQL) disusun untuk menelusuri jalur relasional.
- Cara menemukan aset yang diamankan menggunakan Knowledge Catalog dan mengakses data yang dibatasi di tingkat kolom menggunakan tag kebijakan.