Tutorial ini menunjukkan cara menggunakan Dataflow SQL untuk menggabungkan aliran data dari Pub/Sub dengan data dari tabel BigQuery.
Tujuan
Dalam tutorial ini, Anda telah:
- Tulis kueri Dataflow SQL yang menggabungkan data streaming Pub/Sub dengan data tabel BigQuery.
- Deploy tugas Dataflow dari UI Dataflow SQL.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:
- Dataflow
- Cloud Storage
- Pub/Sub
- Data Catalog
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Dataflow, Compute Engine, Logging, Cloud Storage, Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Resource Manager and Data Catalog. APIs.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the Project > Owner role to the service account.
To grant the role, find the Select a role list, then select Project > Owner.
- Click Continue.
-
Click Done to finish creating the service account.
Do not close your browser window. You will use it in the next step.
-
-
Create a service account key:
- In the Google Cloud console, click the email address for the service account that you created.
- Click Keys.
- Click Add key, and then click Create new key.
- Click Create. A JSON key file is downloaded to your computer.
- Click Close.
-
Set the environment variable
GOOGLE_APPLICATION_CREDENTIALS
to the path of the JSON file that contains your credentials. This variable applies only to your current shell session, so if you open a new session, set the variable again. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Dataflow, Compute Engine, Logging, Cloud Storage, Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Resource Manager and Data Catalog. APIs.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the Project > Owner role to the service account.
To grant the role, find the Select a role list, then select Project > Owner.
- Click Continue.
-
Click Done to finish creating the service account.
Do not close your browser window. You will use it in the next step.
-
-
Create a service account key:
- In the Google Cloud console, click the email address for the service account that you created.
- Click Keys.
- Click Add key, and then click Create new key.
- Click Create. A JSON key file is downloaded to your computer.
- Click Close.
-
Set the environment variable
GOOGLE_APPLICATION_CREDENTIALS
to the path of the JSON file that contains your credentials. This variable applies only to your current shell session, so if you open a new session, set the variable again. - Instal dan lakukan inisialisasi gcloud CLI. Pilih salah satu
opsi penginstalan.
Anda mungkin perlu menetapkan properti
project
ke project yang Anda gunakan untuk panduan ini. - Buka UI web Dataflow SQL di konsol Google Cloud . Tindakan ini akan membuka project yang terakhir Anda akses. Untuk beralih ke project lain, klik nama project di bagian atas UI web Dataflow SQL, lalu telusuri project yang ingin Anda gunakan.
Buka UI web Dataflow SQL
- Topik Pub/Sub bernama
transactions
- Aliran data transaksi yang tiba melalui langganan ke topik Pub/Sub. Data untuk setiap transaksi mencakup informasi seperti produk yang dibeli, harga penjualan, serta kota dan negara bagian tempat pembelian dilakukan. Setelah membuat topik Pub/Sub, Anda membuat skrip yang memublikasikan pesan ke topik Anda. Anda akan menjalankan skrip ini di bagian selanjutnya dalam tutorial ini. - Tabel BigQuery bernama
us_state_salesregions
- Tabel yang menyediakan pemetaan negara bagian ke wilayah penjualan. Sebelum membuat tabel ini, Anda harus membuat set data BigQuery. Buat file teks dan beri nama
transactions_schema.yaml
. Salin dan tempel teks skema berikut ke dalamtransactions_schema.yaml
.- column: event_timestamp description: Pub/Sub event timestamp mode: REQUIRED type: TIMESTAMP - column: tr_time_str description: Transaction time string mode: NULLABLE type: STRING - column: first_name description: First name mode: NULLABLE type: STRING - column: last_name description: Last name mode: NULLABLE type: STRING - column: city description: City mode: NULLABLE type: STRING - column: state description: State mode: NULLABLE type: STRING - column: product description: Product mode: NULLABLE type: STRING - column: amount description: Amount of transaction mode: NULLABLE type: FLOAT
Tetapkan skema menggunakan Google Cloud CLI.
a. Update gcloud CLI dengan perintah berikut. Pastikan versi gcloud CLI adalah 242.0.0 atau yang lebih tinggi.
gcloud components update
b. Jalankan perintah berikut di jendela command line. Ganti project-id dengan project ID Anda, dan path-to-file dengan jalur ke file
transactions_schema.yaml
Anda.gcloud data-catalog entries update \ --lookup-entry='pubsub.topic.`project-id`.transactions' \ --schema-from-file=path-to-file/transactions_schema.yaml
Untuk mengetahui informasi selengkapnya tentang parameter perintah dan format file skema yang diizinkan, lihat halaman dokumentasi untuk gcloud data-catalog entries update.
c. Pastikan skema Anda berhasil ditetapkan ke topik Pub/Sub
transactions
. Ganti project-id dengan project ID Anda.gcloud data-catalog entries lookup 'pubsub.topic.`project-id`.transactions'
Buka SQL Workspace.
Di panel Dataflow SQL Editor, di kotak penelusuran, telusuri
projectid=project-id transactions
. Ganti project-id dengan project ID Anda.- Di panel Dataflow SQL Editor pada UI Dataflow SQL, klik
transactions atau telusuri topik Pub/Sub dengan mengetik
projectid=project-id system=cloud_pubsub
, lalu pilih topik. Di bagian Schema, Anda dapat melihat skema yang ditetapkan ke topik Pub/Sub.
Di Editor kueri, klik Buat tugas.
Di panel Create Dataflow job yang terbuka:
- Untuk Tujuan, pilih BigQuery.
- Untuk ID Set Data, pilih
dataflow_sql_tutorial
. - Untuk Table name, masukkan
sales
.
Opsional: Dataflow otomatis memilih setelan yang optimal untuk tugas Dataflow SQL Anda, tetapi Anda dapat meluaskan menu Optional parameters untuk menentukan opsi pipeline berikut secara manual:
- Jumlah maksimum pekerja
- Zona
- Email akun layanan
- Jenis mesin
- Eksperimen tambahan
- Konfigurasi alamat IP pekerja
- Jaringan
- Subnetwork
Klik Buat. Tugas Dataflow Anda memerlukan waktu beberapa menit untuk mulai berjalan.
Dari halaman Jobs Dataflow, klik tugas yang ingin Anda edit.
Di halaman Job details, di panel Job info, di bagian Pipeline options, temukan kueri SQL. Temukan baris untuk queryString.
Salin dan tempel kueri SQL berikut ke Editor SQL Dataflow di SQL Workspace untuk menambahkan tumbling window. Ganti project-id dengan project ID Anda.
SELECT sr.sales_region, TUMBLE_START("INTERVAL 15 SECOND") AS period_start, SUM(tr.amount) as amount FROM pubsub.topic.`project-id`.transactions AS tr INNER JOIN bigquery.table.`project-id`.dataflow_sql_tutorial.us_state_salesregions AS sr ON tr.state = sr.state_code GROUP BY sr.sales_region, TUMBLE(tr.event_timestamp, "INTERVAL 15 SECOND")
Klik Buat tugas untuk membuat tugas baru dengan kueri yang diubah.
Hentikan skrip publikasi
transactions_injector.py
jika masih berjalan.Hentikan tugas Dataflow yang sedang berjalan. Buka UI web Dataflow di konsol Google Cloud .
Untuk setiap tugas yang Anda buat dengan mengikuti panduan ini, lakukan langkah-langkah berikut:
Klik nama tugas.
Di halaman Job details, klik Stop. Dialog Stop Job akan muncul dengan opsi tentang cara menghentikan tugas Anda.
Pilih Batal.
Klik Hentikan tugas. Layanan akan menghentikan semua penyerapan dan pemrosesan data sesegera mungkin. Karena Batalkan segera menghentikan pemrosesan, Anda mungkin kehilangan data "dalam proses". Menghentikan tugas mungkin memerlukan waktu beberapa menit.
Hapus set data BigQuery Anda. Buka UI web BigQuery di konsol Google Cloud .
Di panel Explorer, di bagian Resources, klik set data dataflow_sql_tutorial yang telah Anda buat.
Di panel detail, klik Hapus. Dialog konfirmasi akan terbuka.
Di kotak dialog Delete dataset, konfirmasi perintah hapus dengan mengetik
delete
, lalu klik Delete.
Hapus topik Pub/Sub Anda. Buka halaman topik Pub/Sub di konsol Google Cloud .
Pilih topik
transactions
.Klik Hapus untuk menghapus topik secara permanen. Dialog konfirmasi akan terbuka.
Di kotak dialog Hapus topik, konfirmasi perintah hapus dengan mengetik
delete
, lalu klik Hapus.Pilih langganan yang tersisa untuk
transactions
. Jika tugas Anda tidak berjalan lagi, mungkin tidak ada langganan.Klik Hapus untuk menghapus langganan secara permanen. Pada dialog konfirmasi, klik Hapus.
Hapus bucket penyiapan Dataflow di Cloud Storage. Buka halaman Bucket Cloud Storage di konsol. Google Cloud
Pilih bucket penyiapan Dataflow.
Klik Hapus untuk menghapus bucket secara permanen. Dialog konfirmasi akan terbuka.
Di kotak dialog Delete bucket, konfirmasi perintah hapus dengan mengetik
DELETE
, lalu klik Delete.
Membuat sumber contoh
Jika Anda ingin mengikuti contoh yang diberikan dalam tutorial ini, buat sumber berikut dan gunakan dalam langkah-langkah tutorial.
Menetapkan skema ke topik Pub/Sub Anda
Dengan menetapkan skema, Anda dapat menjalankan kueri SQL pada data topik Pub/Sub. Saat ini, Dataflow SQL mengharapkan pesan di topik Pub/Sub diserialisasi dalam format JSON.
Untuk menetapkan skema ke
contoh topik Pub/Sub transactions
:
Menemukan sumber Pub/Sub
UI Dataflow SQL menyediakan cara untuk menemukan objek sumber data Pub/Sub untuk project apa pun yang aksesnya Anda miliki, sehingga Anda tidak perlu mengingat nama lengkapnya.
Untuk contoh dalam tutorial ini, buka editor Dataflow SQL dan telusuri topik Pub/Sub transactions
yang Anda buat:
Melihat skema
Membuat kueri SQL
UI Dataflow SQL memungkinkan Anda membuat kueri SQL untuk menjalankan tugas Dataflow.
Kueri SQL berikut adalah kueri pengayaan data. Hal ini menambahkan kolom tambahan, sales_region
, ke aliran peristiwa Pub/Sub (transactions
), menggunakan tabel BigQuery (us_state_salesregions
) yang memetakan negara bagian ke wilayah penjualan.
Salin dan tempel kueri SQL berikut ke Editor kueri. Ganti project-id dengan project ID Anda.
SELECT tr.*, sr.sales_region FROM pubsub.topic.`project-id`.transactions as tr INNER JOIN bigquery.table.`project-id`.dataflow_sql_tutorial.us_state_salesregions AS sr ON tr.state = sr.state_code
Saat Anda memasukkan kueri di UI Dataflow SQL, validator kueri akan memverifikasi sintaksis kueri. Ikon tanda centang hijau akan ditampilkan jika kueri valid. Jika kueri tidak valid, ikon tanda seru merah akan ditampilkan. Jika sintaksis kueri Anda tidak valid, mengklik ikon validator akan memberikan informasi tentang apa yang perlu Anda perbaiki.
Screenshot berikut menunjukkan kueri yang valid di Query editor. Validator menampilkan tanda centang hijau.

Buat tugas Dataflow untuk menjalankan kueri SQL Anda
Untuk menjalankan kueri SQL, buat tugas Dataflow dari UI Dataflow SQL.
Melihat tugas Dataflow
Dataflow mengubah kueri SQL Anda menjadi pipeline Apache Beam. Klik Lihat tugas untuk membuka UI web Dataflow, tempat Anda dapat melihat representasi grafis pipeline Anda.

Untuk melihat perincian transformasi yang terjadi di pipeline, klik kotak. Misalnya, jika Anda mengklik kotak pertama dalam representasi grafis, yang berlabel Jalankan Kueri SQL, akan muncul grafik yang menunjukkan operasi yang terjadi di balik layar.
Dua kotak pertama mewakili dua input yang Anda gabungkan: topik Pub/Sub, transactions
, dan tabel BigQuery, us_state_salesregions
.

Untuk melihat tabel output yang berisi hasil tugas, buka
UI BigQuery.
Di panel Explorer, di project Anda, klik
set data dataflow_sql_tutorial
yang Anda buat. Kemudian, klik tabel output,
sales
. Tab Preview menampilkan konten tabel output.

Melihat tugas sebelumnya dan mengedit kueri Anda
UI Dataflow menyimpan tugas dan kueri sebelumnya di halaman Tugas Dataflow.
Anda dapat menggunakan daftar histori tugas untuk melihat kueri SQL sebelumnya. Misalnya, Anda ingin mengubah kueri untuk mengagregasi penjualan menurut wilayah penjualan setiap 15 detik. Gunakan halaman Jobs untuk mengakses tugas yang sedang berjalan yang Anda mulai sebelumnya dalam tutorial, salin kueri SQL, dan jalankan tugas lain dengan kueri yang diubah.
Pembersihan
Agar tidak menimbulkan biaya pada akun Penagihan Cloud Anda untuk resource yang digunakan dalam tutorial ini:
Langkah berikutnya
- Lihat pengantar Dataflow SQL.
- Pelajari dasar-dasar pipeline streaming.
- Jelajahi referensi Dataflow SQL.
- Tonton demo analisis streaming yang diberikan di Cloud Next 2019.