Dokumen ini menjelaskan cara membuat langganan BigQuery. Anda dapat menggunakan konsol Google Cloud, Google Cloud CLI, library klien, atau Pub/Sub API untuk membuat langganan BigQuery.
Sebelum memulai
Sebelum membaca dokumen ini, pastikan Anda memahami hal-hal berikut:
Cara kerja langganan.
Alur kerja untuk langganan BigQuery.
Cara mengonfigurasi topik yang dihentikan pengirimannya untuk menangani kegagalan pesan.
Selain memahami Pub/Sub dan BigQuery, pastikan Anda memenuhi prasyarat berikut sebelum membuat langganan BigQuery:
Tabel BigQuery ada. Atau, Anda dapat membuatnya saat membuat langganan BigQuery seperti yang dijelaskan di bagian selanjutnya dalam dokumen ini.
Kompatibilitas antara skema topik Pub/Sub dan tabel BigQuery. Jika menambahkan tabel BigQuery yang tidak kompatibel, Anda akan mendapatkan pesan error terkait kompatibilitas. Untuk mengetahui informasi selengkapnya, lihat Kompatibilitas skema.
Peran dan izin yang diperlukan
Berikut adalah daftar panduan terkait peran dan izin:
Untuk membuat langganan, Anda harus mengonfigurasi kontrol akses di tingkat project.
Anda juga memerlukan izin tingkat resource jika langganan dan topik Anda berada di project yang berbeda, seperti yang akan dibahas nanti di bagian ini.
Untuk membuat langganan BigQuery, akun layanan Pub/Sub harus memiliki izin untuk menulis ke tabel BigQuery tertentu. Untuk informasi selengkapnya tentang cara memberikan izin ini, lihat bagian berikutnya dalam dokumen ini.
Anda dapat mengonfigurasi langganan BigQuery dalam project untuk menulis ke tabel BigQuery di project lain.
Untuk mendapatkan izin yang diperlukan untuk membuat langganan BigQuery,
minta administrator untuk memberi Anda
peran IAM Pub/Sub Editor (roles/pubsub.editor
) pada project.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran yang telah ditentukan ini berisi izin yang diperlukan untuk membuat langganan BigQuery. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk membuat langganan BigQuery:
-
Menarik dari langganan:
pubsub.subscriptions.consume
-
Buat langganan:
pubsub.subscriptions.create
-
Menghapus langganan:
pubsub.subscriptions.delete
-
Mendapatkan langganan:
pubsub.subscriptions.get
-
Mencantumkan langganan:
pubsub.subscriptions.list
-
Memperbarui langganan:
pubsub.subscriptions.update
-
Lampirkan langganan ke topik:
pubsub.topics.attachSubscription
-
Dapatkan kebijakan IAM untuk langganan:
pubsub.subscriptions.getIamPolicy
-
Konfigurasikan kebijakan IAM untuk langganan:
pubsub.subscriptions.setIamPolicy
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Jika Anda perlu membuat langganan BigQuery di satu project yang terkait dengan topik di project lain, minta administrator topik untuk juga memberi Anda peran IAM (roles/pubsub.editor)
Editor Pub/Sub pada topik tersebut.
Menetapkan peran BigQuery ke akun layanan Pub/Sub
Beberapa layanan Google Cloud memiliki akun layanan yang dikelola Google Cloud yang memungkinkan layanan tersebut mengakses resource Anda. Akun layanan ini
dikenal sebagai agen layanan. Pub/Sub membuat dan mengelola akun layanan untuk setiap project dalam format service-project-number@gcp-sa-pubsub.
.
Untuk membuat langganan BigQuery, akun layanan Pub/Sub harus memiliki izin untuk menulis ke tabel BigQuery tertentu dan membaca metadata tabel.
Berikan peran BigQuery Data Editor (roles/bigquery.dataEditor
)
kepada akun layanan Pub/Sub.
Di konsol Google Cloud, buka halaman IAM.
Klik Grant access.
Di bagian Add Principals, masukkan nama akun layanan Pub/Sub Anda. Format akun layanan adalah
service-project-number@gcp-sa-pubsub.
. Misalnya, untuk project denganproject-number=112233445566
, akun layanan memiliki formatservice-112233445566@gcp-sa-pubsub.
.Di bagian Tetapkan Peran, klik Tambahkan peran lain.
Di menu drop-down Select a role, masukkan
BigQuery
, dan pilih BigQuery Data Editor role.Klik Simpan.
Untuk mengetahui informasi selengkapnya tentang IAM BigQuery, lihat Peran dan izin BigQuery.
Properti langganan BigQuery
Saat mengonfigurasi langganan BigQuery, Anda dapat menentukan properti berikut.
Properti umum
Pelajari properti langganan umum yang dapat Anda tetapkan di semua langganan.
Menggunakan skema topik
Opsi ini memungkinkan Pub/Sub menggunakan skema topik Pub/Sub tempat langganan dilampirkan. Selain itu, Pub/Sub menulis kolom dalam pesan ke kolom yang sesuai di tabel BigQuery.
Saat menggunakan opsi ini, jangan lupa untuk memeriksa persyaratan tambahan berikut:
Kolom dalam skema topik dan skema BigQuery harus memiliki nama yang sama dan jenisnya harus kompatibel satu sama lain.
Setiap kolom opsional dalam skema topik juga harus opsional dalam skema BigQuery.
Kolom wajib dalam skema topik tidak perlu diwajibkan dalam skema BigQuery.
Jika ada kolom BigQuery yang tidak ada dalam skema topik, kolom BigQuery ini harus dalam mode
NULLABLE
.Jika skema topik memiliki kolom tambahan yang tidak ada dalam skema BigQuery dan kolom ini dapat dihapus, pilih opsi Hapus kolom yang tidak diketahui.
Anda hanya dapat memilih salah satu properti langganan, Gunakan skema topik atau Gunakan skema tabel.
Jika Anda tidak memilih opsi Gunakan skema topik atau Gunakan skema tabel,
pastikan tabel BigQuery memiliki kolom bernama data
dari
jenis BYTES
, STRING
, atau JSON
. Pub/Sub menulis pesan ke kolom BigQuery ini.
Anda mungkin tidak melihat perubahan pada skema topik Pub/Sub atau skema tabel BigQuery langsung diterapkan dengan pesan yang ditulis ke tabel BigQuery. Misalnya, jika opsi Drop unknown fields diaktifkan dan kolom ada dalam skema Pub/Sub, tetapi tidak ada dalam skema BigQuery, pesan yang ditulis ke tabel BigQuery mungkin masih tidak berisi kolom setelah menambahkannya ke skema BigQuery. Pada akhirnya, skema akan disinkronkan dan pesan berikutnya akan menyertakan kolom tersebut.
Saat menggunakan opsi Gunakan skema topik untuk langganan BigQuery, Anda juga dapat memanfaatkan pengambilan data perubahan BigQuery (CDC). CDC memperbarui tabel BigQuery dengan memproses dan menerapkan perubahan pada baris yang ada.
Untuk mempelajari fitur ini lebih lanjut, lihat Update tabel streaming dengan pengambilan data perubahan.
Untuk mempelajari cara menggunakan fitur ini dengan langganan BigQuery, lihat Pengambilan data perubahan BigQuery.
Menggunakan skema tabel
Opsi ini memungkinkan Pub/Sub menggunakan skema tabel BigQuery untuk menulis kolom pesan JSON ke kolom yang sesuai. Saat Anda menggunakan opsi ini, jangan lupa untuk memeriksa persyaratan tambahan berikut:
Pesan yang dipublikasikan harus dalam format JSON.
Konversi JSON berikut didukung:
Jenis JSON Jenis Data BigQuery string
NUMERIC
,BIGNUMERIC
,DATE
,TIME
,DATETIME
, atauTIMESTAMP
number
NUMERIC
,BIGNUMERIC
,DATE
,TIME
,DATETIME
, atauTIMESTAMP
- Saat menggunakan konversi
number
keDATE
,DATETIME
,TIME
, atauTIMESTAMP
, angka tersebut harus mematuhi representasi yang didukung. - Saat menggunakan konversi
number
keNUMERIC
atauBIGNUMERIC
, presisi dan rentang nilai dibatasi pada nilai yang diterima oleh standar IEEE 754 untuk aritmetika floating point. Jika Anda memerlukan presisi tinggi atau rentang nilai yang lebih luas, gunakan konversistring
keNUMERIC
atauBIGNUMERIC
. - Saat menggunakan konversi
string
keNUMERIC
atauBIGNUMERIC
, Pub/Sub mengasumsikan string adalah angka yang dapat dibaca manusia (misalnya,"123.124"
). Jika pemrosesan string sebagai angka yang dapat dibaca manusia gagal, Pub/Sub akan memperlakukan string sebagai byte yang dienkode dengan BigDecimalByteStringEncoder.
- Saat menggunakan konversi
Jika topik langganan memiliki skema yang terkait dengannya, maka properti encoding pesan harus ditetapkan ke
JSON
.Jika ada kolom BigQuery yang tidak ada dalam pesan, kolom BigQuery ini harus dalam mode
NULLABLE
.Jika pesan memiliki kolom tambahan yang tidak ada dalam skema BigQuery dan kolom ini dapat dihapus, pilih opsi Hapus kolom yang tidak diketahui.
Anda hanya dapat memilih salah satu properti langganan, Gunakan skema topik atau Gunakan skema tabel.
Jika Anda tidak memilih opsi Gunakan skema topik atau Gunakan skema tabel,
pastikan tabel BigQuery memiliki kolom bernama data
dari
jenis BYTES
, STRING
, atau JSON
. Pub/Sub menulis pesan ke kolom BigQuery ini.
Anda mungkin tidak melihat perubahan pada skema tabel BigQuery langsung berlaku dengan pesan yang ditulis ke tabel BigQuery. Misalnya, jika opsi Drop unknown fields diaktifkan dan kolom ada dalam pesan, tetapi tidak ada dalam skema BigQuery, pesan yang ditulis ke tabel BigQuery mungkin masih tidak berisi kolom tersebut setelah ditambahkan ke skema BigQuery. Pada akhirnya, skema akan disinkronkan dan pesan berikutnya akan menyertakan kolom tersebut.
Saat menggunakan opsi Gunakan skema tabel untuk langganan BigQuery, Anda juga dapat memanfaatkan pengambilan data perubahan BigQuery (CDC). CDC memperbarui tabel BigQuery dengan memproses dan menerapkan perubahan pada baris yang ada.
Untuk mempelajari fitur ini lebih lanjut, lihat Update tabel streaming dengan pengambilan data perubahan.
Untuk mempelajari cara menggunakan fitur ini dengan langganan BigQuery, lihat Pengambilan data perubahan BigQuery.
Menghapus kolom yang tidak diketahui
Opsi ini digunakan dengan opsi Gunakan skema topik atau Gunakan skema tabel. Opsi ini memungkinkan Pub/Sub menghapus kolom apa pun yang ada dalam skema atau pesan topik, tetapi tidak ada dalam skema BigQuery. Tanpa menetapkan Hapus kolom yang tidak diketahui, pesan dengan kolom tambahan tidak akan ditulis ke BigQuery dan tetap berada dalam backlog langganan. Langganan berakhir dalam status error.
Menulis metadata
Opsi ini memungkinkan Pub/Sub menulis metadata setiap pesan ke kolom tambahan di tabel BigQuery. Jika tidak, metadata tidak akan ditulis ke tabel BigQuery.
Jika Anda memilih opsi Write metadata, pastikan tabel BigQuery memiliki kolom yang dijelaskan dalam tabel berikut.
Jika Anda tidak memilih opsi Tulis metadata, tabel BigQuery tujuan hanya memerlukan kolom data
kecuali jika use_topic_schema
bernilai benar. Jika Anda memilih opsi Tulis metadata dan
Gunakan skema topik, skema topik tidak boleh
berisi kolom apa pun dengan nama yang cocok dengan parameter metadata.
Batasan ini mencakup versi camelcase dari parameter snake case ini.
Parameter | |
---|---|
subscription_name |
STRING Nama langganan. |
message_id |
STRING ID pesan |
publish_time |
TIMESTAMP Waktu publikasi pesan. |
data |
BYTES, STRING, atau JSON Isi pesan. Kolom |
attributes |
STRING atau JSON Objek JSON yang berisi semua atribut pesan. File ini juga berisi kolom tambahan yang merupakan bagian dari pesan Pub/Sub, termasuk kunci pengurutan, jika ada. |
Membuat langganan BigQuery
Contoh berikut menunjukkan cara membuat langganan dengan pengiriman BigQuery.
Konsol
- Di konsol Google Cloud, buka halaman Subscriptions.
- Klik Buat langganan.
- Untuk kolom Subscription ID, masukkan nama.
Untuk mengetahui informasi tentang cara memberi nama langganan, lihat Panduan untuk memberi nama topik atau langganan.
- Pilih atau buat topik dari menu drop-down. Langganan menerima pesan dari topik.
- Pilih Jenis pengiriman sebagai Menulis ke BigQuery.
- Pilih project untuk tabel BigQuery.
- Pilih set data yang ada atau buat set data baru.
Untuk mengetahui informasi tentang cara membuat set data, lihat Membuat set data.
- Pilih tabel yang ada atau buat tabel baru.
Untuk mengetahui informasi tentang cara membuat tabel, lihat Membuat tabel.
- Sebaiknya aktifkan Dead lettering untuk menangani kegagalan pesan.
Untuk mengetahui informasi selengkapnya, lihat Topik surat mati.
- Klik Create.
Anda juga dapat membuat langganan dari halaman Topik. Pintasan ini berguna untuk mengaitkan topik dengan langganan.
- Di konsol Google Cloud, buka halaman Topics.
- Klik more_vert di samping topik yang ingin Anda buat langganannya.
- Dari menu konteks, pilih Buat langganan.
- Pilih Jenis pengiriman sebagai Menulis ke BigQuery.
- Pilih project untuk tabel BigQuery.
- Pilih set data yang ada atau buat set data baru.
Untuk mengetahui informasi tentang cara membuat set data, lihat Membuat set data.
- Pilih tabel yang ada atau buat tabel baru.
Untuk mengetahui informasi tentang cara membuat set data, lihat Membuat tabel.
- Sebaiknya aktifkan Dead lettering untuk menangani kegagalan pesan.
Untuk mengetahui informasi selengkapnya, lihat Topik surat mati.
- Klik Create.
gcloud
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
-
Untuk membuat langganan Pub/Sub, gunakan perintah
gcloud pubsub subscriptions create
:gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --bigquery-table=PROJECT_ID:DATASET_ID.TABLE_ID
Ganti kode berikut:
- SUBSCRIPTION_ID: Menentukan ID langganan.
- TOPIC_ID: Menentukan ID topik. Topik memerlukan skema.
- PROJECT_ID: Menentukan ID project.
- DATASET_ID: Menentukan ID set data yang ada. Untuk membuat set data, lihat Membuat set data.
- TABLE_ID: Menentukan ID tabel yang ada. Tabel memerlukan kolom data jika topik Anda tidak memiliki skema. Untuk membuat tabel, lihat Membuat tabel kosong dengan definisi skema.
C++
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C++ di panduan memulai Pub/Sub menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C++ Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
C#
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di panduan memulai Pub/Sub menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C# Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di panduan memulai Pub/Sub menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di panduan memulai Pub/Sub menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Node.js
Node.js
PHP
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di panduan memulai Pub/Sub menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API PHP Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di panduan memulai Pub/Sub menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Ruby
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di panduan memulai Pub/Sub menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Memantau langganan BigQuery
Cloud Monitoring menyediakan sejumlah metrik untuk memantau langganan.
Untuk mengetahui daftar semua metrik yang tersedia terkait Pub/Sub dan deskripsinya, lihat Dokumentasi pemantauan untuk Pub/Sub.
Anda juga dapat memantau langganan dari dalam Pub/Sub.
Langkah selanjutnya
- Buat atau ubah langganan dengan perintah
gcloud
. - Buat atau ubah langganan dengan REST API.
- Memecahkan masalah langganan BigQuery.