Lab 3: Menemukan Kargo yang Hilang dengan Analisis Percakapan dan Grafik BigQuery

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.

Pratinjau Arsitektur Analisis Percakapan Lost Cargo Lab 3

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

  1. Di Konsol Google Cloud, di halaman pemilih project, pilih atau buat project Google Cloud.
  2. 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.

  1. Di tab browser baru, buka Cloud Shell:

Mengaktifkan Cloud Shell

  1. 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

Peta arsitektur yang dikompilasi Property Graph

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).
  • Properti: Metadata yang disimpan di node atau tepi. Misalnya, node Perusahaan memiliki kolom seperti company_name dan phone_number, dan node Manifes memiliki seal_integrity_status dan 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:

  1. Buka Cloud Shell Editor.

Buka Cloud Shell Editor

  1. Buka file setup_graph.sql di Cloud Shell Editor.

SQL pembuatan grafik

  1. 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).
  2. 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:

Peta arsitektur yang dikompilasi Property Graph

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:

Konsep Node Grafik

  1. Mulai dari node Manifest container.
  2. Ikuti tepi hubungan CARRIED_BY untuk menemukan Vessel yang membawa.
  3. Ikuti tepi hubungan OPERATED_BY dari kapal tersebut ke Company yang bertanggung jawab dan ambil ID-nya.

Pertama, jalankan kueri untuk memvisualisasikan seluruh jaringan (tanpa filter apa pun) untuk melihat grafik lengkap.

  1. 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
    );
    
  2. Setelah kueri selesai, di panel Query results di bagian bawah, klik tab Graph (terletak di samping tab Results table).

Hasil Grafik BigQuery 1

  1. 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 grafik logistics_network.
  • MATCH: Mendeklarasikan pola traversal multi-hop. Kita mulai dari Manifest (m), mencocokkan hubungan edge :CARRIED_BY yang mengarah ke Vessel (v), lalu mencocokkan hubungan edge :OPERATED_BY yang mengarah ke Company (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.

  1. 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
    );
    
  2. Klik tab Grafik di bagian hasil.

Hasil Grafik BigQuery 2

  1. Penampil kini hanya menampilkan rute penelusuran aktif untuk MV-CAPYBARA-003. Perbesar untuk melihat node dan koneksi:
    • Klik dua kali node Company untuk membuka panel properti. Di bagian Properti, Anda akan melihat operator company_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 Vessel untuk memverifikasi bahwa node tersebut adalah Flying Dutchman.

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

  1. Di Konsol Google Cloud, buka Konsol BigQuery, dan luaskan panel resource untuk menemukan set data Anda (lost_cargo_dataset).
  2. Klik resource Property Graph Anda: logistics_network.
  3. 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.

Antarmuka konfigurasi Agen Data BigQuery yang menautkan sumber Property Graph yang dikompilasi

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.

  1. 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.
    

Antarmuka konfigurasi Agen Data BigQuery yang menautkan sumber Property Graph yang dikompilasi

  1. Perhatikan responsnya dengan cermat. Agen menjelajahi grafik dan menampilkan fasilitas pelabuhan terdekat beserta jaraknya:
    • Port Docking: Mountain View Terminal
    • Jarak: 39.42 kilometers
  2. 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

  1. Di Konsol Google Cloud, telusuri dan buka Knowledge CatalogSearch.
  2. Di kolom filter penelusuran di bagian Sistem, centang BigQuery untuk mempersempit hasil.
  3. Di kotak penelusuran, masukkan kueri berikut:
    container override codes
    

Antarmuka penelusuran semantik Knowledge Catalog yang mencari tabel segel fisik terisolasi

  1. Klik resource tabel maritime_security_registry yang 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_registry oleh sistem hilir.

2. Memeriksa Keamanan Kolom di BigQuery

  1. Kembali ke Konsol BigQuery.
  2. Di tab Explorer, pilih lost_cargo_dataset, lalu klik tabel maritime_security_registry.
  3. Klik tab Schema.

Tampilan skema tabel yang menampilkan tag kebijakan yang ditetapkan ke kolom clc_ovr_cd

  1. Perhatikan bahwa kolom clc_ovr_cd diamankan oleh tag kebijakan bernama MaskShippingDetails (tercantum di kolom Tag kebijakan).
  2. 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;
    
  3. Karena akun Anda belum memiliki izin untuk membaca kolom yang diberi tag MaskShippingDetails, kueri akan langsung gagal dengan error keamanan database Access Denied:

Tampilan ruang kerja BigQuery yang menampilkan batasan penyamaran tingkat kolom standar atau penolakan akses

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

  1. Di panel navigasi kiri konsol BigQuery, buka Tag kebijakan.
  2. Pilih taksonomi bernama LostCargoSecurity_.
  3. Dalam daftar tag, klik MaskShippingDetails.
  4. Di Panel info di sisi kanan layar, klik Tambahkan Akun Utama. (Jika panel disembunyikan, klik Tampilkan Panel Info di kanan atas).
  5. Di kolom New principals, masukkan email pengguna Google Cloud aktif Anda.
  6. Di dropdown Select a role, telusuri dan pilih Fine-Grained Reader, lalu klik Save.

Panel administrasi Tag Kebijakan BigQuery yang menetapkan peran Fine-Grained Reader pada mask string target

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

Hasil eksekusi ruang kerja BigQuery yang menampilkan tanda string definitif yang tidak di-masking

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.