Membuat tabel berpartisi
Halaman ini menjelaskan cara membuat tabel berpartisi di BigQuery. Untuk ringkasan tabel berpartisi, lihat Pengantar tabel berpartisi.
Sebelum memulai
Berikan peran Identity and Access Management (IAM) yang memberi pengguna izin yang diperlukan untuk melakukan setiap tugas dalam dokumen ini.
Izin yang diperlukan
Untuk membuat tabel, Anda memerlukan izin IAM berikut:
bigquery.tables.create
bigquery.tables.updateData
bigquery.jobs.create
Selain itu, Anda mungkin memerlukan izin bigquery.tables.getData
untuk mengakses data yang Anda tulis ke tabel.
Setiap peran IAM yang telah ditetapkan berikut menyertakan izin yang Anda perlukan untuk membuat tabel:
roles/bigquery.dataEditor
roles/bigquery.dataOwner
roles/bigquery.admin
(termasuk izinbigquery.jobs.create
)roles/bigquery.user
(termasuk izinbigquery.jobs.create
)roles/bigquery.jobUser
(termasuk izinbigquery.jobs.create
)
Selain itu, jika memiliki izin bigquery.datasets.create
, Anda dapat membuat dan memperbarui tabel di set data yang Anda buat.
Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM dalam BigQuery, baca Peran dan izin yang telah ditetapkan.
Membuat tabel berpartisi kosong
Langkah-langkah untuk membuat tabel berpartisi di BigQuery mirip dengan membuat tabel standar, hanya saja Anda perlu menentukan opsi partisi, beserta opsi tabel lainnya.
Buat tabel pembagian kolom unit waktu
Untuk membuat tabel berpartisi kolom unit waktu yang kosong dengan definisi skema:
Konsol
Di konsol Google Cloud, buka halaman BigQuery.
- Di panel Explorer, luaskan project Anda, lalu pilih set data.
- Di bagian Dataset info, klik Create table.
- Di panel Create table, tentukan detail berikut:
- Di bagian Source, pilih Empty table dalam daftar Create table from.
- Di bagian Destination, tentukan detail berikut:
- Untuk Dataset, pilih set data tempat Anda ingin membuat tabel.
- Di kolom Table, masukkan nama tabel yang ingin Anda buat.
- Pastikan kolom Table type disetel ke Native table.
- Di bagian Schema, masukkan definisi skema.
Skema harus menyertakan kolom
DATE
,TIMESTAMP
, atauDATETIME
untuk kolom partisi. Untuk mengetahui informasi selengkapnya, lihat Menentukan skema. Anda dapat memasukkan informasi skema secara manual menggunakan salah satu metode berikut:- Opsi 1: Klik Edit as text dan tempelkan skema dalam bentuk array JSON. Saat menggunakan array JSON, Anda menghasilkan skema menggunakan proses yang sama seperti membuat file skema JSON.
Anda dapat melihat skema tabel yang ada dalam format JSON dengan memasukkan perintah berikut:
bq show --format=prettyjson dataset.table
- Opsi 2: Klik Type, dan Mode untuk setiap kolom. Add field, lalu masukkan skema tabel. Tentukan Name,
- Opsi 1: Klik Edit as text dan tempelkan skema dalam bentuk array JSON. Saat menggunakan array JSON, Anda menghasilkan skema menggunakan proses yang sama seperti membuat file skema JSON.
Anda dapat melihat skema tabel yang ada dalam format JSON dengan memasukkan perintah berikut:
- Di bagian Partition and cluster settings, dalam daftar Partitioning, pilih Partition by field, lalu pilih kolom partisi kolom. Opsi ini hanya tersedia jika skema berisi kolom
DATE
,TIMESTAMP
, atauDATETIME
. - Opsional: Untuk mewajibkan filter partisi pada semua kueri untuk tabel ini, centang kotak Require partition filter. Filter partisi dapat mengurangi biaya dan meningkatkan performa. Untuk informasi selengkapnya, lihat Menetapkan persyaratan filter partisi.
- Pilih Partitioning type untuk memilih partisi harian, per jam, bulanan, atau tahunan.
- Opsional: Di bagian Advanced options, jika ingin menggunakan kunci enkripsi yang dikelola pelanggan, pilih opsi Use a customer-managed encryption key (CMEK). Secara default, BigQuery mengenkripsi konten pelanggan yang disimpan dalam penyimpanan dengan menggunakan kunci yang dikelola Google.
- Klik Create table.
SQL
Untuk membuat tabel berpartisi kolom unit waktu, gunakan pernyataan DDL CREATE TABLE
dengan klausa PARTITION BY
.
Contoh berikut membuat tabel dengan partisi harian berdasarkan kolom transaction_date
:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_date DATE) PARTITION BY transaction_date OPTIONS ( partition_expiration_days = 3, require_partition_filter = TRUE);
Gunakan klausa
OPTIONS
untuk menetapkan opsi tabel seperti masa berlaku partisi dan persyaratan filter partisi.Klik
Run.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
Jenis partisi default untuk kolom DATE
adalah partisi harian. Untuk menentukan jenis partisi yang berbeda, sertakan fungsi DATE_TRUNC
dalam klausa PARTITION BY
. Misalnya, kueri berikut membuat tabel dengan partisi bulanan:
CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_date DATE) PARTITION BY DATE_TRUNC(transaction_date, MONTH) OPTIONS ( partition_expiration_days = 3, require_partition_filter = TRUE);
Anda juga dapat menentukan kolom TIMESTAMP
atau DATETIME
sebagai kolom partisi. Dalam hal ini, sertakan fungsi TIMESTAMP_TRUNC
atau DATETIME_TRUNC
dalam klausa PARTITION BY
untuk menentukan jenis partisi. Misalnya, pernyataan berikut membuat tabel dengan partisi harian berdasarkan kolom TIMESTAMP
:
CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_ts TIMESTAMP) PARTITION BY TIMESTAMP_TRUNC(transaction_ts, DAY) OPTIONS ( partition_expiration_days = 3, require_partition_filter = TRUE);
bq
-
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.
Gunakan perintah
bq mk
dengan flag--table
(atau pintasan-t
):bq mk \ --table \ --schema SCHEMA \ --time_partitioning_field COLUMN \ --time_partitioning_type UNIT_TIME \ --time_partitioning_expiration EXPIRATION_TIME \ --require_partition_filter=BOOLEAN PROJECT_ID:DATASET.TABLE
Ganti kode berikut:
- SCHEMA: Definisi skema dalam format
column:data_type,column:data_type
atau jalur ke file skema JSON di mesin lokal Anda. Untuk mengetahui informasi selengkapnya, lihat Menentukan skema. - COLUMN: Nama kolom partisi. Dalam skema tabel, kolom ini harus berjenis
TIMESTAMP
,DATETIME
, atauDATE
. - UNIT_TIME: Jenis partisi. Nilai yang didukung mencakup
DAY
,HOUR
,MONTH
, atauYEAR
. - EXPIRATION_TIME: Waktu habis masa berlaku untuk partisi tabel, dalam detik. Flag
--time_partitioning_expiration
bersifat opsional. Untuk mengetahui informasi selengkapnya, lihat Menetapkan masa berlaku partisi. - BOOLEAN: Jika
true
, kueri pada tabel ini harus menyertakan filter partisi. Flag--require_partition_filter
bersifat opsional. Untuk informasi selengkapnya, lihat Menetapkan persyaratan filter partisi. - PROJECT_ID: Project ID. Jika dihilangkan, project default Anda akan digunakan.
- DATASET: Nama set data di project Anda.
- TABLE: Nama tabel yang akan dibuat.
Untuk opsi command line lainnya, lihat
bq mk
.Contoh berikut membuat tabel bernama
mytable
yang dipartisi pada kolomts
, menggunakan partisi per jam. Masa berlaku partisi adalah 259.200 detik (3 hari).bq mk \ -t \ --schema 'ts:TIMESTAMP,qtr:STRING,sales:FLOAT' \ --time_partitioning_field ts \ --time_partitioning_type HOUR \ --time_partitioning_expiration 259200 \ mydataset.mytable
- SCHEMA: Definisi skema dalam format
Terraform
Gunakan resource google_bigquery_table
.
Contoh berikut membuat tabel bernama mytable
yang dipartisi
menurut hari:
Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.
Menyiapkan Cloud Shell
- Luncurkan Cloud Shell.
-
Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.
Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.
Menyiapkan direktori
Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).
-
Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki
ekstensi
.tf
—misalnyamain.tf
. Dalam tutorial ini, file ini disebut sebagaimain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.
Salin kode contoh ke dalam
main.tf
yang baru dibuat.Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.
- Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
- Simpan perubahan Anda.
-
Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
terraform init
Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi
-upgrade
:terraform init -upgrade
Menerapkan perubahan
-
Tinjau konfigurasi dan pastikan resource yang akan dibuat atau
diupdate oleh Terraform sesuai yang Anda inginkan:
terraform plan
Koreksi konfigurasi jika diperlukan.
-
Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan
yes
pada prompt:terraform apply
Tunggu hingga Terraform menampilkan pesan "Apply complete!".
- Buka project Google Cloud Anda untuk melihat hasilnya. Di Konsol Google Cloud, buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.
API
Panggil metode tables.insert
dengan resource tabel yang ditetapkan yang menentukan properti timePartitioning
dan properti schema
.
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Go API.
Untuk melakukan autentikasi ke BigQuery, 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 BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Node.js API.
Untuk melakukan autentikasi ke BigQuery, 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 BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Membuat tabel berpartisi berdasarkan waktu penyerapan
Untuk membuat tabel berpartisi berdasarkan waktu penyerapan yang kosong dengan definisi skema:
Konsol
Buka halaman BigQuery di konsol Google Cloud.
Di panel Penjelajah, luaskan project Anda dan pilih set data.
Luaskan opsi
Actions dan klik Open.Di panel detail, klik Create table
.Di halaman Create table, di bagian Source, pilih Empty table.
Di bagian Destination:
- Untuk Dataset name, pilih set data yang sesuai.
- Di kolom Table name, masukkan nama tabel.
- Pastikan Table type disetel ke Native table.
Di bagian Schema, masukkan definisi skema.
Di bagian Partition and cluster settings, untuk Partitioning, klik Partition by penyerapan time.
(Opsional) Untuk mewajibkan filter partisi pada semua kueri untuk tabel ini, centang kotak Require partition filter. Mewajibkan filter partisi dapat mengurangi biaya dan meningkatkan performa. Untuk informasi selengkapnya, lihat Menetapkan persyaratan filter partisi.
Klik Create table.
SQL
Untuk membuat tabel berpartisi berdasarkan waktu penyerapan, gunakan pernyataan CREATE TABLE
dengan klausa PARTITION BY
yang menjadi partisi di _PARTITIONDATE
.
Contoh berikut membuat tabel dengan partisi harian:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
CREATE TABLE mydataset.newtable (transaction_id INT64) PARTITION BY _PARTITIONDATE OPTIONS ( partition_expiration_days = 3, require_partition_filter = TRUE);
Gunakan klausa
OPTIONS
untuk menetapkan opsi tabel seperti masa berlaku partisi dan persyaratan filter partisi.Klik
Run.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
Jenis partisi default untuk partisi waktu penyerapan adalah partisi harian. Untuk menentukan jenis partisi yang berbeda, sertakan fungsi DATE_TRUNC
dalam klausa PARTITION BY
. Misalnya, kueri berikut membuat tabel dengan partisi bulanan:
CREATE TABLE mydataset.newtable (transaction_id INT64) PARTITION BY DATE_TRUNC(_PARTITIONTIME, MONTH) OPTIONS ( partition_expiration_days = 3, require_partition_filter = TRUE);
bq
-
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.
Gunakan perintah
bq mk
dengan flag--table
(atau pintasan-t
):bq mk \ --table \ --schema SCHEMA \ --time_partitioning_type UNIT_TIME \ --time_partitioning_expiration EXPIRATION_TIME \ --require_partition_filter=BOOLEAN \ PROJECT_ID:DATASET.TABLE
Ganti kode berikut:
- SCHEMA: Definisi dalam format
column:data_type,column:data_type
atau jalur ke file skema JSON di mesin lokal Anda. Untuk mengetahui informasi selengkapnya, lihat Menentukan skema. - UNIT_TIME: Jenis partisi. Nilai yang didukung mencakup
DAY
,HOUR
,MONTH
, atauYEAR
. - EXPIRATION_TIME: Waktu habis masa berlaku untuk partisi tabel, dalam detik. Flag
--time_partitioning_expiration
bersifat opsional. Untuk mengetahui informasi selengkapnya, lihat Menetapkan masa berlaku partisi. - BOOLEAN: Jika
true
, kueri pada tabel ini harus menyertakan filter partisi. Flag--require_partition_filter
bersifat opsional. Untuk informasi selengkapnya, lihat Menetapkan persyaratan filter partisi. - PROJECT_ID: Project ID. Jika dihilangkan, project default Anda akan digunakan.
- DATASET: Nama set data di project Anda.
- TABLE: Nama tabel yang akan dibuat.
Untuk opsi command line lainnya, lihat
bq mk
.Contoh berikut membuat tabel berpartisi berdasarkan waktu penyerapan yang bernama
mytable
. Tabel ini memiliki partisi harian, dengan masa berlaku partisi 259.200 detik (3 hari).bq mk \ -t \ --schema qtr:STRING,sales:FLOAT,year:STRING \ --time_partitioning_type DAY \ --time_partitioning_expiration 259200 \ mydataset.mytable
- SCHEMA: Definisi dalam format
Terraform
Gunakan resource google_bigquery_table
.
Contoh berikut membuat tabel bernama mytable
yang dipartisi berdasarkan waktu penyerapan:
Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.
Menyiapkan Cloud Shell
- Luncurkan Cloud Shell.
-
Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.
Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.
Menyiapkan direktori
Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).
-
Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki
ekstensi
.tf
—misalnyamain.tf
. Dalam tutorial ini, file ini disebut sebagaimain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.
Salin kode contoh ke dalam
main.tf
yang baru dibuat.Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.
- Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
- Simpan perubahan Anda.
-
Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
terraform init
Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi
-upgrade
:terraform init -upgrade
Menerapkan perubahan
-
Tinjau konfigurasi dan pastikan resource yang akan dibuat atau
diupdate oleh Terraform sesuai yang Anda inginkan:
terraform plan
Koreksi konfigurasi jika diperlukan.
-
Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan
yes
pada prompt:terraform apply
Tunggu hingga Terraform menampilkan pesan "Apply complete!".
- Buka project Google Cloud Anda untuk melihat hasilnya. Di Konsol Google Cloud, buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.
API
Panggil metode tables.insert
dengan resource tabel yang ditetapkan yang menentukan properti timePartitioning
dan properti schema
.
Membuat tabel berpartisi berdasarkan rentang bilangan bulat
Untuk membuat tabel berpartisi berdasarkan rentang bilangan bulat yang kosong dengan definisi skema:
Konsol
Buka halaman BigQuery di konsol Google Cloud.
Di panel Penjelajah, luaskan project Anda dan pilih set data.
Luaskan opsi
Actions dan klik Open.Di panel detail, klik Create table
.Di halaman Create table, di bagian Source, pilih Empty table.
Di bagian Destination:
- Untuk Dataset name, pilih set data yang sesuai.
- Di kolom Table name, masukkan nama tabel.
- Pastikan Table type disetel ke Native table.
Di bagian Schema, masukkan definisi skema. Pastikan skema menyertakan kolom
INTEGER
untuk kolom partisi. Untuk mengetahui informasi selengkapnya, lihat Menentukan skema.Di bagian Partition and cluster settings, dalam menu drop-down Partitioning, pilih Partition by field dan pilih kolom partisi. Opsi ini hanya tersedia jika skema berisi kolom
INTEGER
.Berikan nilai untuk Start, End, dan Interval:
- Start adalah awal rentang partisi pertama (inklusif).
- End adalah akhir rentang partisi terakhir (eksklusif).
- Interval adalah lebar setiap rentang partisi.
Nilai di luar rentang ini masuk ke partisi
__UNPARTITIONED__
khusus.(Opsional) Untuk mewajibkan filter partisi pada semua kueri untuk tabel ini, centang kotak Require partition filter. Mewajibkan filter partisi dapat mengurangi biaya dan meningkatkan performa. Untuk informasi selengkapnya, lihat Menetapkan persyaratan filter partisi.
Klik Create table.
SQL
Untuk membuat tabel berpartisi berdasarkan rentang bilangan bulat, gunakan pernyataan DDL CREATE TABLE
dengan klausa PARTITION BY
.
Contoh berikut membuat tabel berpartisi pada kolom customer_id
dengan start 0, end 100, dan interval 10:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
CREATE TABLE mydataset.newtable (customer_id INT64, date1 DATE) PARTITION BY RANGE_BUCKET(customer_id, GENERATE_ARRAY(0, 100, 10)) OPTIONS ( require_partition_filter = TRUE);
Gunakan klausa
OPTIONS
untuk menetapkan opsi tabel seperti persyaratan filter partisi.Klik
Run.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
bq
-
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.
Gunakan perintah
bq mk
dengan flag--table
(atau pintasan-t
):bq mk \ --schema schema \ --range_partitioning=COLUMN_NAME,START,END,INTERVAL \ --require_partition_filter=BOOLEAN \ PROJECT_ID:DATASET.TABLE
Ganti kode berikut:
- SCHEMA: Definisi skema inline dalam format
column:data_type,column:data_type
atau jalur ke file skema JSON di mesin lokal Anda. Untuk mengetahui informasi selengkapnya, lihat Menentukan skema. - COLUMN_NAME: Nama kolom partisi. Dalam skema tabel, kolom ini harus berjenis
INTEGER
. - START: Awal rentang partisi pertama (inklusif).
- END: Akhir rentang partisi terakhir (eksklusif).
- INTERVAL: Lebar setiap rentang partisi.
- BOOLEAN: Jika
true
, kueri pada tabel ini harus menyertakan filter partisi. Flag--require_partition_filter
bersifat opsional. Untuk informasi selengkapnya, lihat Menetapkan persyaratan filter partisi. - PROJECT_ID: Project ID. Jika dihilangkan, project default Anda akan digunakan.
- DATASET: Nama set data di project Anda.
- TABLE: Nama tabel yang akan dibuat.
Nilai di luar rentang partisi masuk ke partisi
__UNPARTITIONED__
khusus.Untuk opsi command line lainnya, lihat
bq mk
.Contoh berikut membuat tabel bernama
mytable
yang dipartisi pada kolomcustomer_id
.bq mk \ -t \ --schema 'customer_id:INTEGER,qtr:STRING,sales:FLOAT' \ --range_partitioning=customer_id,0,100,10 \ mydataset.mytable
- SCHEMA: Definisi skema inline dalam format
Terraform
Gunakan resource google_bigquery_table
.
Contoh berikut membuat tabel bernama mytable
yang dipartisi
berdasarkan rentang bilangan bulat:
Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.
Menyiapkan Cloud Shell
- Luncurkan Cloud Shell.
-
Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.
Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.
Menyiapkan direktori
Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).
-
Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki
ekstensi
.tf
—misalnyamain.tf
. Dalam tutorial ini, file ini disebut sebagaimain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.
Salin kode contoh ke dalam
main.tf
yang baru dibuat.Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.
- Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
- Simpan perubahan Anda.
-
Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
terraform init
Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi
-upgrade
:terraform init -upgrade
Menerapkan perubahan
-
Tinjau konfigurasi dan pastikan resource yang akan dibuat atau
diupdate oleh Terraform sesuai yang Anda inginkan:
terraform plan
Koreksi konfigurasi jika diperlukan.
-
Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan
yes
pada prompt:terraform apply
Tunggu hingga Terraform menampilkan pesan "Apply complete!".
- Buka project Google Cloud Anda untuk melihat hasilnya. Di Konsol Google Cloud, buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.
API
Panggil metode tables.insert
dengan resource tabel yang ditentukan yang menetapkan properti rangePartitioning
dan properti schema
.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Node.js API.
Untuk melakukan autentikasi ke BigQuery, 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 BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Membuat tabel berpartisi dari hasil kueri
Anda dapat membuat tabel berpartisi dari hasil kueri dengan cara berikut:
- Dalam SQL, gunakan pernyataan
CREATE TABLE ... AS SELECT
. Anda dapat menggunakan pendekatan ini untuk membuat tabel berpartisi berdasarkan kolom unit waktu atau rentang bilangan bulat, tetapi bukan waktu penyerapan. - Gunakan alat command line bq atau BigQuery API untuk menetapkan tabel tujuan untuk kueri. Saat kueri berjalan, BigQuery akan menulis hasilnya ke tabel tujuan. Anda dapat menggunakan pendekatan ini untuk jenis partisi apa pun.
Panggil metode API
jobs.insert
dan tentukan partisi di propertitimePartitioning
atau propertirangePartitioning
.
SQL
Gunakan pernyataan CREATE TABLE
dengan klausa SELECT AS
untuk kueri tersebut. Sertakan klausa PARTITION BY
untuk mengonfigurasi partisi.
Contoh berikut membuat tabel berpartisi pada kolom transaction_date
:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_date DATE) PARTITION BY transaction_date AS ( SELECT transaction_id, transaction_date FROM mydataset.mytable );
Gunakan klausa
OPTIONS
untuk menetapkan opsi tabel seperti persyaratan filter partisi.Klik
Run.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
bq
-
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 tabel berpartisi dari kueri, gunakan perintah
bq query
dengan flag--destination_table
dan flag--time_partitioning_type
.Partisi kolom unit waktu:
bq query \ --use_legacy_sql=false \ --destination_table TABLE_NAME \ --time_partitioning_field COLUMN \ --time_partitioning_type UNIT_TIME \ 'QUERY_STATEMENT'
Partisi waktu penyerapan:
bq query \ --use_legacy_sql=false \ --destination_table TABLE_NAME \ --time_partitioning_type UNIT_TIME \ 'QUERY_STATEMENT'
Partisi rentang bilangan bulat:
bq query \ --use_legacy_sql=false \ --destination_table PROJECT_ID:DATASET.TABLE \ --range_partitioning COLUMN,START,END,INTERVAL \ 'QUERY_STATEMENT'
Ganti kode berikut:
- PROJECT_ID: Project ID. Jika dihilangkan, project default Anda akan digunakan.
- DATASET: Nama set data di project Anda.
- TABLE: Nama tabel yang akan dibuat.
- COLUMN: Nama kolom partisi.
- UNIT_TIME: Jenis partisi. Nilai yang didukung mencakup
DAY
,HOUR
,MONTH
, atauYEAR
. - START: Awal partisi rentang, inklusif.
- END: Akhir dari partisi rentang, eksklusif.
- INTERVAL: Lebar setiap rentang dalam partisi.
- QUERY_STATEMENT: Kueri yang digunakan untuk mengisi tabel.
Contoh berikut membuat tabel berpartisi pada kolom
transaction_date
, menggunakan partisi bulanan.bq query \ --use_legacy_sql=false \ --destination_table mydataset.newtable \ --time_partitioning_field transaction_date \ --time_partitioning_type MONTH \ 'SELECT transaction_id, transaction_date FROM mydataset.mytable'
Contoh berikut membuat tabel berpartisi pada kolom
customer_id
, menggunakan partisi rentang bilangan bulat.bq query \ --use_legacy_sql=false \ --destination_table mydataset.newtable \ --range_partitioning customer_id,0,100,10 \ 'SELECT * FROM mydataset.ponies'
Untuk tabel berpartisi berdasarkan waktu penyerapan, Anda juga dapat memuat data ke partisi tertentu menggunakan dekorator partisi. Contoh berikut membuat tabel berpartisi berdasarkan waktu penyerapan baru dan memuat data ke dalam partisi
20180201
(1 Februari 2018):bq query \ --use_legacy_sql=false \ --time_partitioning_type=DAY \ --destination_table='newtable$20180201' \ 'SELECT * FROM mydataset.mytable'
API
Untuk menyimpan hasil kueri ke tabel berpartisi, panggil metode jobs.insert
.
Konfigurasikan tugas query
. Tentukan tabel tujuan di destinationTable
. Tentukan partisi di properti timePartitioning
atau properti rangePartitioning
.
Mengonversi tabel dengan sharding tanggal menjadi tabel berpartisi berdasarkan waktu penyerapan
Jika sebelumnya telah membuat tabel yang di-sharding berdasarkan tanggal, Anda dapat mengonversi seluruh set tabel terkait menjadi satu tabel berpartisi berdasarkan waktu penyerapan menggunakan perintah partition
di alat command line bq.
bq --location=LOCATION partition \ --time_partitioning_type=PARTITION_TYPE \ --time_partitioning_expiration INTEGER \ PROJECT_ID:SOURCE_DATASET.SOURCE_TABLE \ PROJECT_ID:DESTINATION_DATASET.DESTINATION_TABLE
Ganti kode berikut:
- LOCATION: Nama lokasi Anda. Flag
--location
bersifat opsional. - PARTITION_TYPE: Jenis partisi. Nilai yang memungkinkan mencakup
DAY
,HOUR
,MONTH
, atauYEAR
. - INTEGER: Waktu habis masa berlaku partisi, dalam detik. Tidak ada nilai minimum. Waktu habis masa berlaku dievaluasi ke tanggal UTC partisi ditambah nilai bilangan bulat. Flag
time_partitioning_expiration
bersifat opsional. - PROJECT_ID: Project ID Anda.
- SOURCE_DATASET: Set data yang berisi tabel yang di-sharding tanggal.
- SOURCE_TABLE: Awalan tabel yang di-sharding tanggal.
- DESTINATION_DATASET; Set data untuk tabel berpartisi baru.
- DESTINATION_TABLE; Nama tabel berpartisi yang akan dibuat.
Perintah partition
tidak mendukung flag --label
, --expiration
,
--add_tags
, atau --description
. Anda dapat menambahkan label, masa berlaku tabel, tag, dan deskripsi ke tabel setelah dibuat.
Saat Anda menjalankan perintah partition
, BigQuery membuat tugas penyalinan yang menghasilkan partisi dari tabel yang di-sharding.
Contoh berikut membuat tabel berpartisi berdasarkan waktu penyerapan bernama mytable_partitioned
dari set tabel yang di-sharding tanggal yang diawali dengan sourcetable_
. Tabel baru dipartisi setiap hari, dengan masa berlaku partisi 259.200 detik (3 hari).
bq partition \
--time_partitioning_type=DAY \
--time_partitioning_expiration 259200 \
mydataset.sourcetable_ \
mydataset.mytable_partitioned
Jika tabel yang di-sharding tanggal adalah sourcetable_20180126
dan sourcetable_20180127
, perintah ini akan membuat partisi berikut: mydataset.mytable_partitioned$20180126
dan mydataset.mytable_partitioned$20180127
.
Keamanan tabel berpartisi
Kontrol akses untuk tabel berpartisi sama dengan kontrol akses untuk tabel standar. Untuk mengetahui informasi selengkapnya, lihat Pengantar kontrol akses tabel.
Langkah selanjutnya
- Untuk mempelajari cara mengelola dan memperbarui tabel berpartisi, lihat Mengelola tabel berpartisi.
- Untuk mengetahui informasi tentang cara membuat kueri tabel berpartisi, lihat Membuat kueri tabel berpartisi.