BigQuery menghosting sejumlah set data publik yang tersedia untuk dikueri oleh masyarakat umum. Dalam tutorial ini, Anda akan membuat alur kerja yang menjalankan beberapa tugas kueri BigQuery secara paralel, yang menunjukkan peningkatan performa jika dibandingkan dengan menjalankan tugas secara berurutan, satu per satu.
Menjalankan tugas kueri BigQuery
Di BigQuery, Anda dapat menjalankan tugas kueri interaktif (sesuai permintaan). Untuk mengetahui informasi selengkapnya, lihat Menjalankan tugas kueri batch dan interaktif.
Konsol
Di konsol Google Cloud , buka halaman BigQuery.
Masukkan kueri SQL BigQuery berikut di area teks Query editor:
SELECT TITLE, SUM(views) FROM `bigquery-samples.wikipedia_pageviews.201207h` GROUP BY TITLE ORDER BY SUM(views) DESC LIMIT 100
Klik Run.
bq
Di terminal, masukkan perintah bq query
berikut untuk menjalankan kueri interaktif menggunakan sintaksis SQL standar:
bq query \
--use_legacy_sql=false \
'SELECT
TITLE, SUM(views)
FROM
`bigquery-samples.wikipedia_pageviews.201207h`
GROUP BY
TITLE
ORDER BY
SUM(views) DESC
LIMIT 100'
Kueri ini menjalankan kueri yang menampilkan 100 judul Wikipedia teratas dengan jumlah penayangan terbanyak dalam bulan tertentu dan menulis output ke tabel sementara.
Perhatikan berapa lama kueri berjalan.
Men-deploy alur kerja yang menjalankan beberapa kueri secara berurutan
Definisi alur kerja terdiri dari serangkaian langkah yang dijelaskan menggunakan sintaksis Workflows. Setelah membuat alur kerja, Anda men-deploy alur kerja tersebut agar tersedia untuk dieksekusi. Langkah deploy juga memvalidasi bahwa file sumber dapat dieksekusi.
Alur kerja berikut menentukan daftar lima tabel untuk menjalankan kueri menggunakan konektor BigQuery Workflows. Kueri dijalankan secara berurutan, satu per satu, dan judul yang paling banyak dilihat dari setiap tabel disimpan ke peta hasil.
Konsol
Di konsol Google Cloud , buka halaman Workflows:
Klik Buat.
Masukkan nama untuk alur kerja baru, seperti
workflow-serial-bqjobs
.Pilih region yang sesuai; misalnya, us-central1.
Pilih akun layanan yang Anda buat sebelumnya.
Anda seharusnya telah memberikan peran IAM BigQuery > BigQuery Job User dan Logging > Logs Writer ke akun layanan.
Klik Berikutnya.
Di editor alur kerja, masukkan definisi berikut untuk alur kerja Anda:
Klik Deploy.
gcloud
Buka terminal dan buat file kode sumber untuk alur kerja Anda:
touch workflow-serial-bqjobs.yaml
Salin alur kerja berikut ke file kode sumber Anda:
Deploy alur kerja dengan memasukkan perintah berikut:
gcloud workflows deploy workflow-serial-bqjobs \ --source=workflow-serial-bqjobs.yaml \ --service-account=MY_SERVICE_ACCOUNT@MY_PROJECT.iam.gserviceaccount.com
Ganti
MY_SERVICE_ACCOUNT@MY_PROJECT.iam.gserviceaccount.com
dengan email akun layanan yang Anda buat sebelumnya.Anda seharusnya telah memberikan peran IAM
roles/bigquery.jobUser
danroles/logging.logWriter
ke akun layanan.
Jalankan alur kerja dan jalankan beberapa kueri secara berurutan
Mengeksekusi alur kerja menjalankan definisi alur kerja saat ini yang terkait dengan alur kerja.
Konsol
Di konsol Google Cloud , buka halaman Workflows:
Di halaman Workflows, pilih alur kerja workflow-serial-bqjobs untuk membuka halaman detailnya.
Di halaman Workflow Details, klik play_arrow Execute.
Klik Execute lagi.
Lihat hasil alur kerja di panel Output.
gcloud
Buka terminal.
Menjalankan alur kerja:
gcloud workflows run workflow-serial-bqjob
Eksekusi alur kerja akan memerlukan waktu sekitar satu menit atau lima kali waktu berjalan sebelumnya. Hasilnya akan menyertakan setiap tabel dan terlihat mirip dengan berikut ini:
{
"201201h": {
"title": "Special:Search",
"views": "14591339"
},
"201202h": {
"title": "Special:Search",
"views": "132765420"
},
"201203h": {
"title": "Special:Search",
"views": "123316818"
},
"201204h": {
"title": "Special:Search",
"views": "116830614"
},
"201205h": {
"title": "Special:Search",
"views": "131357063"
}
}
Men-deploy dan menjalankan alur kerja yang menjalankan beberapa kueri secara paralel
Daripada menjalankan lima kueri secara berurutan, Anda dapat menjalankan kueri secara paralel dengan melakukan beberapa perubahan:
- runQueries:
parallel:
shared: [results]
for:
value: table
in: ${tables}
- Langkah
parallel
memungkinkan setiap iterasi loopfor
berjalan secara paralel. Variabel
results
dideklarasikan sebagaishared
yang memungkinkannya dapat ditulis oleh cabang, dan hasil setiap cabang dapat ditambahkan ke variabel tersebut.
Konsol
Di konsol Google Cloud , buka halaman Workflows:
Klik Buat.
Masukkan nama untuk alur kerja baru, seperti
workflow-parallel-bqjobs
.Pilih region yang sesuai; misalnya, us-central1.
Pilih akun layanan yang Anda buat sebelumnya.
Klik Berikutnya.
Di editor alur kerja, masukkan definisi berikut untuk alur kerja Anda:
Klik Deploy.
Di halaman Workflow Details, klik play_arrow Execute.
Klik Execute lagi.
Lihat hasil alur kerja di panel Output.
gcloud
Buka terminal dan buat file kode sumber untuk alur kerja Anda:
touch workflow-parallel-bqjobs.yaml
Salin alur kerja berikut ke file kode sumber Anda:
Deploy alur kerja dengan memasukkan perintah berikut:
gcloud workflows deploy workflow-parallell-bqjobs \ --source=workflow-parallel-bqjobs.yaml \ --service-account=MY_SERVICE_ACCOUNT@MY_PROJECT.iam.gserviceaccount.com
Ganti
MY_SERVICE_ACCOUNT@MY_PROJECT.iam.gserviceaccount.com
dengan email akun layanan yang Anda buat sebelumnya.Menjalankan alur kerja:
gcloud workflows run workflow-parallel-bqjobs
Hasilnya akan mirip dengan output sebelumnya, tetapi eksekusi alur kerja seharusnya memakan waktu sekitar dua puluh detik atau kurang.