Seperti yang kita ketahui, Pub/Sub dapat digunakan untuk menanangani incoming data yang besar secara global yang dapat kita proses lebih lanjut.
Pada lab ini kita akan menggunakan mock data untuk transaksi shopping cart. Kemudian publish data ke Pub/Sub Topics. Selanjutnya kita akan mengkonfigurasi Cloud Dataflow Job untuk memproses data dari Pub/Sub subcriptions dan menulisnya kedalam table dalam BigQuery. Kemudian kita akan view data tersebut melalui BigQuery.
Untuk mengikuti Lab, Anda membutuhkan GCP project dan menggunakan Cloud Console serta Cloud Shell dan Cloud Shell Editor.
Untuk keperluan lab ini kita akan menggunakan mock data download disini atau Anda bisa generate sendiri menggunakan mockaroo.com. Jika Anda ingin mengikuti schema dari Lab, berikut schema yang digunakan:

Membuat Storage Bucket
Melalui burger menu pilih Storage, lalu Create Bucket. Beri nama bucket, untuk konfigurasi lainnya gunakan default. Lalu tekan tombol Create. Simpan nama bucket pada teks file untuk digunakan pada langkah selanjutnya.
Membuat Pub/Sub Topics
Melalui burger menu pilih Pub/Sub. Kemudian tekan tombol Create Topic. Pada popup window create a topic, beri nama untuk topic-id pada tutorial digunakan purchases. Kemudian tekan tombol Create Topic.
Membuat Subcriptions
Pada halaman Topics yang telah dibuat, tekan tombol Create Subscription.
Pada window Add subscription to topic, beri nama subscription-ID, pada lab digunakan nama trends. Delivery type digunakan pull, untuk setting lainnya, gunakan default. Kemudian click tombol Create.
Pada subcriptions detail page, copy subcription path, kemudian simpan pada teks file untuk digunakan pada langkah selanjutnya.
Membuat BigQuery Dataset dan Table
Melalui burger menu pilih menu BigQuery. Kemudian pilih project yang digunakan, kemudian tekan tombol CREATE DATASET.

Pada panel Create Dataset, berinama dataset-id. Pada lab digunakan nama trends. Untuk konfigurasi lainnya gunakan default.

Kemudian masuk kedalam dataset diatas, lalu buat table dengan menekan tombol Create Table.

Beri nama table, pada lab digunakan purchases. Kemudian buat schema. Pastikan schema sama dengan schema data yang dibuat melalui mockaroo.com.
Setelah schema selesai dibuat, tekan tombol Create Table.

Setelah table selesai dibuat, masuk ke detail tab dari informasi table untuk mengcopy table id, simpan pada file teks untuk digunakan pada tahap selanjutnya.

Membuat Dataflow Job
Melalui burger menu, pilih Dataflow. Pada halaman Dataflow, pilih Create Job From Template.
Pada halaman Create Job from template, masukan nama Job. Kemudian pilih template Cloud Pub/Sub subscription to BigQuery.
Setelah template dipilih, kita perlu memasukan informasi yang telah kita simpan pada file teks pada langkah sebelumnya yaitu:
- Cloud Pub/Sub subscription. isi dengan subcription path yang telah dicopy.
- BigQuery output table, isi dengan table id yang telah dicopy.
- Temporary location, isi dengan storage bucket yang telah dicopy, perhatikan gunakan format gs:// dan tambahkan /tmp. Contoh: “gs://your_project_bucket_temp/tmp”
Setelah konfigurasi diatas dimasukan, tekan tombol Run Job.

Sampai disini kita sudah selesai membuat dataflow job dan sudah berjalan. Selanjutnya kita akan mensimulasikan transaksi.
Berikutnya buka cloud shell dan cloud shell editor.
Pada cloud shell editor, buat file transactions.py, kemudian masukan kode dibawah dan save.
import json
import csv
from google.cloud import pubsub_v1
project_name = "nama-project-anda"
topic_name = "nama-topic-anda"
file = "MOCK_DATA.csv"
publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path(project_name, topic_name)
with open(file) as fh:
rd = csv.DictReader(fh, delimiter=",")
for row in rd:
data = json.dumps(dict(row))
publisher.publish(topic_path, data=data.encode('utf-8'))
Berikutnya upload file mock data melalui menu upload file (lihat gambar dibawah). Data akan disimpan pada shell home directory, jadi pastikan script python direktori yang sama.
sebelum menjalankan script, kita install dulu google pubsub library
$ sudo pip3 install google-cloud-pubsub
Setelah instalasi selesai, kita jalankan script
$ python transactions.py
Setelah script dijalankan, kita masuk ke halaman BigQuery, table purchase sudah terisi data. Anda dapat melakukan query simple seperti berikut:

Sampai disini lab sudah selesai. Dengan menggunakan pubsub, kita dapat membuat berbagai subscription untuk data yang masuk. Pada lab digunakan untuk BigQuery. Bisa saja data tersebut digunakan untuk shipping atau accounting.
Terakhir, jangan lupa untuk menghapus semua instance yang telah dibuat.
- Stop Dataflow Job.
- Delete Dataset.
- Delete Pub/Sub Topics.
- Delete Pub/Sub Subscriptions.
- Delete bucket temp.