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 sudah memahami hal-hal berikut:
Cara kerja langganan.
Alur kerja untuk langganan BigQuery.
Cara mengonfigurasi topik yang dihentikan pengirimannya untuk menangani kegagalan pesan.
Selain pemahaman Pub/Sub dan BigQuery, pastikan Anda memenuhi prasyarat berikut sebelum membuat langganan BigQuery:
Tabel BigQuery sudah ada. Atau, Anda dapat membuatnya saat membuat langganan BigQuery seperti yang dijelaskan di bagian selanjutnya dari 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 mengenai peran dan izin:
Untuk membuat langganan, Anda harus mengonfigurasi kontrol akses pada level project.
Anda juga memerlukan izin level resource jika langganan dan topik Anda berada dalam 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 di project untuk menulis ke tabel BigQuery di project berbeda.
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.
Peran yang telah ditetapkan ini berisi izin yang diperlukan untuk membuat langganan BigQuery. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk membuat langganan BigQuery:
-
Mengambil dari langganan:
pubsub.subscriptions.consume
-
Buat langganan:
pubsub.subscriptions.create
-
Menghapus langganan:
pubsub.subscriptions.delete
-
Dapatkan langganan:
pubsub.subscriptions.get
-
Cantumkan langganan:
pubsub.subscriptions.list
-
Memperbarui langganan:
pubsub.subscriptions.update
-
Melampirkan langganan ke topik:
pubsub.topics.attachSubscription
-
Mendapatkan kebijakan IAM untuk langganan:
pubsub.subscriptions.getIamPolicy
-
Konfigurasi kebijakan IAM untuk langganan:
pubsub.subscriptions.setIamPolicy
Anda mung juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaanlainnya.
Jika Anda perlu membuat langganan BigQuery dalam satu project yang dikaitkan dengan topik di project lain, minta administrator topik Anda untuk memberi Anda peran IAM Pub/Sub Editor (roles/pubsub.editor)
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.iam.gserviceaccount.com
.
Untuk membuat langganan BigQuery, akun layanan Pub/Sub harus memiliki izin untuk menulis ke tabel BigQuery tertentu dan membaca metadata tabel.
Berikan peran Editor Data BigQuery (roles/bigquery.dataEditor
)
ke akun layanan Pub/Sub.
Di konsol Google Cloud, buka halaman IAM.
Klik Grant access.
Di bagian Tambahkan Akun Utama, masukkan nama akun layanan Pub/Sub Anda. Format akun layanan adalah
service-project-number@gcp-sa-pubsub.iam.gserviceaccount.com
. Misalnya, untuk project denganproject-number=112233445566
, akun layanan memiliki formatservice-112233445566@gcp-sa-pubsub.iam.gserviceaccount.com
.Di bagian Tetapkan Peran, klik Tambahkan peran lain.
Di drop-down Select a role, masukkan
BigQuery
, lalu pilih BigQuery Data Editor role.Klik Save.
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.
Gunakan skema topik
Opsi ini memungkinkan Pub/Sub menggunakan skema topik Pub/Sub yang menyertakan langganan. Selain itu, Pub/Sub menulis kolom dalam pesan ke kolom yang sesuai di tabel BigQuery.
Saat Anda 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 bersifat 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 tersebut dapat dihapus, pilih opsi Hapus kolom yang tidak dikenal.
Anda hanya dapat memilih salah satu properti langganan, yaitu Use topic schema atau Use table schema.
Jika Anda tidak memilih opsi Use topic schema atau Use table schema,
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 sebuah kolom ada dalam skema Pub/Sub, tapi bukan dalam skema BigQuery, pesan yang ditulis ke tabel BigQuery mungkin masih belum berisi kolom tersebut setelah menambahkannya ke skema BigQuery. Akhirnya, skema akan disinkronkan dan pesan berikutnya menyertakan kolom tersebut.
Saat menggunakan opsi Gunakan skema topik untuk langganan BigQuery, Anda juga dapat memanfaatkan pengambilan data perubahan (CDC). CDC memperbarui tabel BigQuery Anda dengan memproses dan menerapkan perubahan pada baris yang ada.
Untuk mempelajari fitur ini lebih lanjut, lihat Lakukan pembaruan tabel streaming dengan pengambilan data perubahan.
Untuk mempelajari cara menggunakan fitur ini dengan langganan BigQuery, lihat Pengambilan data perubahan BigQuery.
Gunakan skema tabel
Dengan opsi ini, Pub/Sub dapat 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.
Jika topik langganan memiliki skema yang terkait dengannya, properti encoding pesan harus ditetapkan ke
JSON
.Jika ada kolom BigQuery yang tidak ada dalam pesan, kolom BigQuery ini harus berada 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 dikenal.
Dalam pesan JSON, nilai
DATE
,DATETIME
,TIME
, danTIMESTAMP
harus berupa bilangan bulat yang mematuhi representasi yang didukung.Dalam pesan JSON, nilai
NUMERIC
danBIGNUMERIC
harus dienkode byte menggunakan BigDecimalByteStringEncoder.Anda hanya dapat memilih salah satu properti langganan, yaitu Use topic schema atau Use table schema.
Jika Anda tidak memilih opsi Use topic schema atau Use table schema,
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 yang langsung diterapkan pada pesan yang ditulis ke tabel BigQuery. Misalnya, jika opsi Hapus kolom yang tidak dikenal diaktifkan dan sebuah kolom ada dalam pesan, tetapi tidak ada dalam skema BigQuery, pesan yang ditulis ke tabel BigQuery mungkin masih belum berisi kolom tersebut setelah menambahkannya ke skema BigQuery. Akhirnya, skema akan disinkronkan dan pesan berikutnya menyertakan kolom tersebut.
Saat menggunakan opsi Gunakan skema tabel untuk langganan BigQuery, Anda juga dapat memanfaatkan pengambilan data perubahan (CDC) BigQuery. CDC memperbarui tabel BigQuery Anda dengan memproses dan menerapkan perubahan pada baris yang ada.
Untuk mempelajari fitur ini lebih lanjut, lihat Lakukan pembaruan tabel streaming dengan pengambilan data perubahan.
Untuk mempelajari cara menggunakan fitur ini dengan langganan BigQuery, lihat Pengambilan data perubahan BigQuery.
Menghapus kolom yang tidak dikenal
Opsi ini digunakan dengan opsi Gunakan skema topik atau Gunakan skema tabel. Dengan opsi ini, Pub/Sub dapat menghapus kolom apa pun yang ada dalam skema atau pesan topik, tetapi tidak ada dalam skema BigQuery. Tanpa menetapkan Drop knowns fields, pesan dengan kolom tambahan tidak akan ditulis ke BigQuery dan tetap berada dalam backlog langganan. Langganan akan berakhir dalam status error.
Menulis metadata
Dengan opsi ini, Pub/Sub dapat menulis metadata setiap pesan ke kolom tambahan di tabel BigQuery. Selain itu, {i>metadata <i}tidak ditulis ke tabel BigQuery.
Jika Anda memilih opsi Tulis metadata, pastikan tabel BigQuery memiliki kolom yang dijelaskan dalam tabel berikut.
Jika Anda tidak memilih opsi Write metadata, tabel BigQuery tujuan hanya memerlukan kolom data
kecuali jika
use_topic_schema
bernilai benar (true). Jika Anda memilih opsi Write metadata dan
Use topic schema, 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 |
myactivity, STRING, atau JSON Isi pesan. Kolom |
attributes |
STRING atau JSON Objek JSON yang berisi semua atribut pesan. Objek 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 Langganan.
- Klik Buat langganan.
- Untuk kolom ID Langganan, masukkan nama.
Untuk informasi tentang cara menamai langganan, lihat Panduan menamai topik atau langganan.
- Pilih atau buat topik dari menu drop-down. Langganan akan menerima pesan dari topik.
- Pilih Delivery type sebagai Write to BigQuery.
- Pilih project untuk tabel BigQuery.
- Pilih set data yang ada atau buat set data baru.
Untuk mengetahui informasi cara membuat set data, lihat Membuat set data.
- Pilih tabel yang ada atau buat yang baru.
Untuk informasi cara membuat tabel, lihat Membuat tabel.
- Sebaiknya aktifkan Penghentian penulisan untuk menangani kegagalan pesan.
Untuk mengetahui informasi selengkapnya, lihat Topik yang dihentikan pengirimannya.
- Klik Create.
Anda juga dapat membuat langganan dari halaman Topics. Pintasan ini berguna untuk mengaitkan topik dengan langganan.
- Di konsol Google Cloud, buka halaman Topics.
- Klik more_vert di samping topik yang langganannya ingin Anda buat.
- Dari menu konteks, pilih Buat langganan.
- Pilih Delivery type sebagai Write to BigQuery.
- Pilih project untuk tabel BigQuery.
- Pilih set data yang ada atau buat set data baru.
Untuk mengetahui informasi cara membuat set data, lihat Membuat set data.
- Pilih tabel yang ada atau buat yang baru.
Untuk informasi cara membuat set data, lihat Membuat tabel.
- Sebaiknya aktifkan Penghentian penulisan untuk menangani kegagalan pesan.
Untuk mengetahui informasi selengkapnya, lihat Topik yang dihentikan pengirimannya.
- 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 ini 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 ini 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 informasi selengkapnya, lihat dokumentasi referensi API C++ Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk mengetahui 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 informasi selengkapnya, lihat dokumentasi referensi API C# Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk mengetahui 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 informasi selengkapnya, lihat dokumentasi referensi API Go Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk mengetahui 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 informasi selengkapnya, lihat dokumentasi referensi API Java Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk mengetahui 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 informasi selengkapnya, lihat dokumentasi referensi API PHP Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk mengetahui 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 informasi selengkapnya, lihat dokumentasi referensi API Python Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk mengetahui 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 informasi selengkapnya, lihat dokumentasi referensi API Ruby Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Langkah selanjutnya
- Membuat atau mengubah langganan dengan perintah
gcloud
. - Membuat atau mengubah langganan dengan REST API.
- Memecahkan masalah langganan BigQuery.