Membuat tabel eksternal BigLake untuk Cloud Storage
Dokumen ini menjelaskan cara membuat tabel BigLake Cloud Storage. Tabel BigLake memungkinkan Anda menggunakan delegasi akses untuk membuat kueri data terstruktur di Cloud Storage. Delegasi akses memisahkan akses ke tabel BigLake dari akses ke penyimpanan data dasar.
Sebelum memulai
-
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 BigQuery Connection API.
Jika ingin membaca tabel BigLake dari mesin open source seperti Apache Spark, Anda harus mengaktifkan BigQuery Storage Read API.
-
In the Google Cloud console, activate Cloud Shell.
Pastikan Anda memiliki set data BigQuery.
Pastikan versi Google Cloud SDK Anda adalah 366.0.0 atau yang lebih baru:
gcloud version
Jika perlu, update Google Cloud SDK.
- Opsional: Untuk Terraform, diperlukan
terraform-provider-google
versi 4.25.0 atau yang lebih baru. Rilisterraform-provider-google
tercantum di GitHub. Anda dapat mendownload Terraform versi terbaru dari download Terraform HashiCorp.
- Opsional: Untuk Terraform, diperlukan
Membuat koneksi resource Cloud berdasarkan sumber data eksternal Anda, dan memberikan koneksi tersebut akses ke Cloud Storage. Jika Anda tidak memiliki izin yang sesuai untuk membuat koneksi, minta administrator BigQuery untuk membuat koneksi dan membagikannya kepada Anda.
Peran yang diperlukan
Untuk membuat tabel BigLake, Anda memerlukan izin Identity and Access Management (IAM) BigQuery berikut:
bigquery.tables.create
bigquery.connections.delegate
Peran Identity and Access Management bawaan Admin (roles/bigquery.admin
) BigQuery mencakup izin ini.
Jika Anda bukan akun utama dalam peran ini, minta administrator untuk memberi Anda akses atau membuatkan tabel BigLake.
Untuk informasi selengkapnya tentang peran dan izin Identity and Access Management di BigQuery, lihat Peran dan izin bawaan.
Pertimbangan lokasi
Saat menggunakan Cloud Storage untuk menyimpan file data, Anda dapat meningkatkan performa menggunakan bucket region tunggal atau region ganda Cloud Storage alih-alih bucket multi-region.
Membuat tabel BigLake pada data tidak berpartisi
Jika Anda sudah terbiasa membuat tabel di BigQuery, proses pembuatan tabel BigLake akan serupa. Tabel Anda dapat menggunakan format file apa pun yang didukung BigLake. Untuk informasi selengkapnya, lihat Batasan.
Sebelum membuat tabel BigLake, Anda harus memiliki set data danKoneksi resource cloud yang dapatmengakses Cloud Storage.
Untuk membuat tabel BigLake, pilih salah satu opsi berikut:
Konsol
Buka halaman BigQuery.
Di panel Penjelajah, luaskan project Anda lalu pilih set data.
Luaskan opsi
Actions dan klik Create table.Di bagian Sumber, tentukan detail berikut:
Untuk Create table from, pilih Google Cloud Storage
Untuk Select file from GCS bucket or use a URI pattern, cari untuk memilih bucket dan file yang akan digunakan, atau ketik jalur dalam format
gs://bucket_name/[folder_name/]file_name
.Anda tidak dapat menentukan beberapa URI di Konsol Google Cloud, tetapi Anda dapat memilih beberapa file dengan menentukan satu karakter pengganti tanda bintang (
*
). Contoh,gs://mybucket/file_name*
. Untuk informasi selengkapnya, lihat Dukungan karakter pengganti untuk URI Cloud Storage.Bucket Cloud Storage harus berada di lokasi yang sama dengan set data yang berisi tabel yang Anda buat.
Untuk File format, pilih format yang cocok dengan file Anda.
Di bagian Tujuan, tentukan detail berikut:
Untuk Project, pilih project tempat tabel akan dibuat.
Untuk Dataset, pilih set data tempat tabel akan dibuat.
Untuk Table, masukkan nama tabel yang Anda buat.
Untuk Jenis tabel, pilih Tabel eksternal.
Pilih Create a BigLake table using a Cloud Resource connection.
Untuk Connection ID, pilih koneksi yang Anda buat sebelumnya.
Di bagian Schema, Anda dapat mengaktifkan deteksi otomatis skema atau menentukan skema secara manual jika Anda memiliki file sumber. Jika tidak memiliki file sumber, Anda harus menentukan skema secara manual.
Untuk mengaktifkan deteksi otomatis skema, pilih opsi Auto-detect.
Untuk menentukan skema secara manual, biarkan opsi Deteksi otomatis tidak dicentang. Aktifkan Edit as text dan masukkan skema tabel sebagai array JSON.
Untuk mengabaikan baris dengan nilai kolom tambahan yang tidak cocok dengan skema, luaskan bagian Advanced options dan pilih Unknown values.
Klik Create table.
Setelah tabel permanen dibuat, Anda dapat menjalankan kueri terhadap tabel seolah-olah tabel tersebut merupakan tabel BigQuery native. Setelah kueri selesai, Anda dapat mengekspor hasilnya sebagai file CSV atau JSON, menyimpan hasilnya sebagai tabel, atau menyimpan hasilnya ke Google Spreadsheet.
SQL
Gunakan pernyataan DDL CREATE EXTERNAL TABLE
.
Anda dapat menentukan skema secara eksplisit, atau menggunakan deteksi otomatis skema untuk menyimpulkan skema dari data eksternal.
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
CREATE EXTERNAL TABLE `PROJECT_ID.DATASET.EXTERNAL_TABLE_NAME` WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID` OPTIONS ( format ="TABLE_FORMAT", uris = ['BUCKET_PATH'[,...]], max_staleness = STALENESS_INTERVAL, metadata_cache_mode = 'CACHE_MODE' );
Ganti yang berikut ini:
PROJECT_ID
: nama project tempat Anda ingin membuat tabel—misalnya,myproject
DATASET
: nama set data BigQuery tempat Anda ingin membuat tabel—misalnya,mydataset
EXTERNAL_TABLE_NAME
: nama tabel yang ingin Anda buat—misalnya,mytable
REGION
: region yang berisi koneksi—misalnya,us
CONNECTION_ID
: ID koneksi—misalnya,myconnection
Saat Anda melihat detail koneksi di konsol Google Cloud, ID koneksi adalah nilai di bagian terakhir dari ID koneksi yang sepenuhnya memenuhi syarat yang ditampilkan di ID Koneksi—misalnya,
projects/myproject/locations/connection_location/connections/myconnection
.TABLE_FORMAT
: format tabel yang ingin Anda buat—misalnya,PARQUET
Untuk mengetahui informasi selengkapnya tentang format yang didukung, lihat Batasan.
BUCKET_PATH
: jalur ke bucket Cloud Storage yang berisi data untuk tabel eksternal, dalam format['gs://bucket_name/[folder_name/]file_name']
.Anda dapat memilih beberapa file dari bucket dengan menentukan satu karakter pengganti tanda bintang (
*
) di jalur. Contoh,['gs://mybucket/file_name*']
. Untuk informasi selengkapnya, lihat Dukungan karakter pengganti untuk URI Cloud Storage.Anda dapat menyertakan beberapa bucket untuk opsi
uris
dengan memberikan beberapa jalur.Contoh berikut menunjukkan nilai
uris
yang valid:['gs://bucket/path1/myfile.csv']
['gs://bucket/path1/*.csv']
['gs://bucket/path1/*', 'gs://bucket/path2/file00*']
Saat Anda menentukan nilai
uris
yang menargetkan beberapa file, semua file tersebut harus berbagi skema yang kompatibel.Untuk informasi selengkapnya tentang penggunaan URI Cloud Storage di BigQuery, lihat Jalur resource Cloud Storage.
STALENESS_INTERVAL
: menentukan apakah metadata yang di-cache digunakan oleh operasi terhadap tabel BigLake, dan seberapa baru metadata yang di-cache agar operasi dapat menggunakannya. Untuk informasi selengkapnya tentang pertimbangan caching metadata, lihat Caching metadata untuk performa.Untuk menonaktifkan caching metadata, tentukan 0. Ini adalah setelan defaultnya.
Untuk mengaktifkan caching metadata, tentukan nilai literal interval antara 30 menit dan 7 hari. Misalnya, tentukan
INTERVAL 4 HOUR
untuk interval periode tidak berlaku 4 jam. Dengan nilai ini, operasi terhadap tabel akan menggunakan metadata yang di-cache jika telah di-refresh dalam 4 jam terakhir. Jika metadata yang di-cache lebih usang, operasi akan mengambil metadata dari Cloud Storage.CACHE_MODE
: menentukan apakah cache metadata di-refresh secara otomatis atau manual. Untuk informasi selengkapnya terkait pertimbangan caching metadata, lihat Caching metadata untuk performa.Ubah ke
AUTOMATIC
agar cache metadata diperbarui sesuai dengan interval yang ditentukan sistem, biasanya antara 30 hingga 60 menit.Tetapkan ke
MANUAL
jika Anda ingin me-refresh cache metadata pada jadwal yang Anda tentukan. Dalam hal ini, Anda dapat memanggil prosedur sistemBQ.REFRESH_EXTERNAL_METADATA_CACHE
untuk me-refresh cache.Anda harus menetapkan
CACHE_MODE
jikaSTALENESS_INTERVAL
ditetapkan ke nilai yang lebih besar dari 0.
Klik
Run.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
bq
Opsi 1: File definisi tabel
Gunakan perintah bq mkdef
untuk membuat file definisi tabel, lalu teruskan jalur file ke perintah bq mk
sebagai berikut:
bq mkdef \ --connection_id=CONNECTION_ID \ --source_format=SOURCE_FORMAT \ BUCKET_PATH > DEFINITION_FILE bq mk --table \ --external_table_definition=DEFINITION_FILE \ --max_staleness=STALENESS_INTERVAL \ PROJECT_ID:DATASET.EXTERNAL_TABLE_NAME \ SCHEMA
Ganti kode berikut:
CONNECTION_ID
: ID koneksi—misalnya,myconnection
Saat Anda melihat detail koneksi di konsol Google Cloud, ID koneksi adalah nilai di bagian terakhir dari ID koneksi yang sepenuhnya memenuhi syarat yang ditampilkan di ID Koneksi—misalnya,
projects/myproject/locations/connection_location/connections/myconnection
.SOURCE_FORMAT
: format sumber data eksternal. Contoh,PARQUET
.BUCKET_PATH
: jalur ke bucket Cloud Storage yang berisi data untuk tabel, dalam formatgs://bucket_name/[folder_name/]file_pattern
.Anda dapat memilih beberapa file dari bucket dengan menentukan satu karakter pengganti tanda bintang (
*
) difile_pattern
. Contoh:gs://mybucket/file00*.parquet
Untuk informasi selengkapnya, lihat Dukungan karakter pengganti untuk URI Cloud Storage.Anda dapat menentukan beberapa bucket untuk opsi
uris
dengan menyediakan beberapa jalur.Contoh berikut menunjukkan nilai
uris
yang valid:gs://bucket/path1/myfile.csv
gs://bucket/path1/*.parquet
gs://bucket/path1/file1*
,gs://bucket1/path1/*
Saat Anda menentukan nilai
uris
yang menargetkan beberapa file, semua file tersebut harus berbagi skema yang kompatibel.Untuk informasi selengkapnya tentang penggunaan URI Cloud Storage di BigQuery, lihat Jalur resource Cloud Storage.
DEFINITION_FILE
: jalur ke file definisi tabel di mesin lokal Anda.STALENESS_INTERVAL
: menentukan apakah metadata yang di-cache digunakan oleh operasi terhadap tabel BigLake, dan seberapa baru metadata yang di-cache agar operasi dapat menggunakannya. Untuk informasi selengkapnya tentang pertimbangan caching metadata, lihat Caching metadata untuk performa.Untuk menonaktifkan caching metadata, tentukan 0. Ini adalah setelan defaultnya.
Untuk mengaktifkan caching metadata, tentukan nilai interval antara 30 menit hingga 7 hari, menggunakan
Y-M D H:M:S
yang dijelaskan dalam dokumentasi jenis dataINTERVAL
. Misalnya, tentukan0-0 0 4:0:0
untuk interval periode tidak berlaku 4 jam. Dengan nilai ini, operasi terhadap tabel akan menggunakan metadata yang di-cache jika telah di-refresh dalam 4 jam terakhir. Jika metadata yang di-cache lebih tua, operasi akan mengambil metadata dari Cloud Storage.DATASET
: nama set data BigQuery tempat Anda ingin membuat tabel—misalnya,mydataset
EXTERNAL_TABLE_NAME
: nama tabel yang ingin Anda buat—misalnya,mytable
SCHEMA
: skema untuk tabel BigLake
Contoh:
bq mkdef --connection_id=myconnection --metadata_cache_mode=CACHE_MODE --source_format=CSV 'gs://mybucket/*.csv' > mytable_def bq mk --table --external_table_definition=mytable_def='gs://mybucket/*.csv' --max_staleness=0-0 0 4:0:0 myproject:mydataset.mybiglaketable Region:STRING,Quarter:STRING,Total_sales:INTEGER
Untuk menggunakan deteksi otomatis skema, tetapkan flag --autodetect=true
dalam perintah mkdef
dan hapus skemanya:
bq mkdef \ --connection_id=myconnection \ --metadata_cache_mode=CACHE_MODE \ --source_format=CSV --autodetect=true \ gs://mybucket/*.csv > mytable_def bq mk \ --table \ --external_table_definition=mytable_def=gs://mybucket/*.csv \ --max_staleness=0-0 0 4:0:0 \ myproject:mydataset.myexternaltable
Opsi 2: Definisi tabel inline
Alih-alih membuat file definisi tabel, Anda dapat meneruskan definisi tabel langsung ke perintah bq mk
.
Gunakan dekorator @connection
untuk menentukan koneksi yang akan digunakan di akhir flag --external_table_definition
.
bq mk --table \ --external_table_definition=@SOURCE_FORMAT=BUCKET_PATH@projects/PROJECT_ID/locations/REGION/connections/CONNECTION_ID \ DATASET_NAME.TABLE_NAME \ SCHEMA
Ganti yang berikut ini:
SOURCE_FORMAT
: format sumber data eksternalMisalnya,
CSV
.BUCKET_PATH
: jalur ke bucket Cloud Storage yang berisi data untuk tabel, dalam formatgs://bucket_name/[folder_name/]file_pattern
.Anda dapat memilih beberapa file dari bucket dengan menentukan satu karakter pengganti tanda bintang (
*
) difile_pattern
. Contoh:gs://mybucket/file00*.parquet
Untuk informasi selengkapnya, lihat Dukungan karakter pengganti untuk URI Cloud Storage.Anda dapat menentukan beberapa bucket untuk opsi
uris
dengan menyediakan beberapa jalur.Contoh berikut menunjukkan nilai
uris
yang valid:gs://bucket/path1/myfile.csv
gs://bucket/path1/*.parquet
gs://bucket/path1/file1*
,gs://bucket1/path1/*
Saat Anda menentukan nilai
uris
yang menargetkan beberapa file, semua file tersebut harus berbagi skema yang kompatibel.Untuk informasi selengkapnya tentang penggunaan URI Cloud Storage di BigQuery, lihat Jalur resource Cloud Storage.
PROJECT_ID
: nama project tempat Anda ingin membuat tabel—misalnya,myproject
REGION
: region yang berisi koneksi,us
CONNECTION_ID
: ID koneksi—misalnya,myconnection
Saat Anda melihat detail koneksi di konsol Google Cloud, ID koneksi adalah nilai di bagian terakhir dari ID koneksi yang sepenuhnya memenuhi syarat yang ditampilkan di ID Koneksi—misalnya,
projects/myproject/locations/connection_location/connections/myconnection
.DATASET_NAME
: nama set data tempat Anda ingin membuat tabel BigLakeTABLE_NAME
: nama tabel BigLakeSCHEMA
: skema untuk tabel BigLake
Contoh:
bq mk --table \ --external_table_definition=@CSV=gs://mybucket/*.parquet@projects/myproject/locations/us/connections/myconnection \ --max_staleness=0-0 0 4:0:0 \ myproject:mydataset.myexternaltable \ Region:STRING,Quarter:STRING,Total_sales:INTEGER
API
Panggil metode API metode tables.insert
,
lalu buat
ExternalDataConfiguration
di resource Table
yang Anda teruskan.
Tentukan properti schema
atau tetapkan properti autodetect
ke true
untuk mengaktifkan deteksi otomatis skema untuk sumber data yang didukung.
Tentukan properti connectionId
untuk mengidentifikasi koneksi yang akan digunakan untuk terhubung ke Cloud Storage.
Terraform
Contoh ini membuat Tabel BigLake pada data tidak berpartisi.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
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.
BigLake mendukung deteksi otomatis skema. Namun, jika Anda tidak memberikan skema dan akun layanan tidak diberi akses pada langkah sebelumnya, langkah-langkah ini akan gagal dengan pesan akses ditolak jika Anda mencoba mendeteksi skema secara otomatis.
Membuat tabel BigLake pada data yang dipartisi Hive
Anda dapat membuat tabel BigLake untuk data yang dipartisi Hive di Cloud Storage. Setelah membuat tabel yang dipartisi secara eksternal, Anda tidak dapat mengubah kunci partisi. Anda perlu membuat ulang tabel untuk mengubah kunci partisi.
Untuk membuat tabel BigLake berdasarkan data yang dipartisi Hive di Cloud Storage, pilih salah satu opsi berikut:
Konsol
Buka halaman BigQuery.
Di panel Penjelajah, luaskan project Anda dan pilih set data.
Klik
Tampilkan tindakan, lalu klik Buat tabel. Tindakan ini akan membuka panel Buat tabel.Di bagian Source, tentukan detail berikut:
Untuk Create table from, pilih Google Cloud Storage.
Berikan jalur ke folder tersebut, menggunakan karakter pengganti. Contoh,
my_bucket/my_files*
. Folder tersebut harus berada di lokasi yang sama dengan set data yang berisi tabel yang ingin Anda buat, tambahkan, atau timpa.Dari daftar Format file, pilih jenis file.
Pilih kotak centang Partisi data sumber, lalu tentukan detail berikut:
- Untuk Pilih Awalan URI Sumber, masukkan
awalan URI. Contoh,
gs://my_bucket/my_files
. - Opsional: Untuk mewajibkan filter partisi pada semua kueri untuk tabel ini, centang kotak Memerlukan filter partisi. Mewajibkan filter partisi dapat mengurangi biaya dan meningkatkan performa. Untuk mengetahui informasi selengkapnya, lihat Mewajibkan filter predikat di kunci partisi dalam kueri.
Di bagian Mode inferensi partisi, pilih salah satu opsi berikut:
- Otomatis menyimpulkan jenis: tetapkan mode deteksi skema
partisi ke
AUTO
. - Semua kolom adalah string: tetapkan mode deteksi
skema partisi ke
STRINGS
. - Sediakan sendiri: tetapkan mode deteksi skema partisi ke
CUSTOM
dan masukkan informasi skema secara manual untuk kunci partisi. Untuk mengetahui informasi selengkapnya, lihat Menyediakan skema kunci partisi kustom.
- Otomatis menyimpulkan jenis: tetapkan mode deteksi skema
partisi ke
- Untuk Pilih Awalan URI Sumber, masukkan
awalan URI. Contoh,
Di bagian Tujuan, tentukan detail berikut:
- Untuk Project, pilih project tempat Anda ingin membuat tabel.
- Untuk Set data, pilih set data tempat Anda ingin membuat tabel.
- Untuk Table, masukkan nama tabel yang ingin Anda buat.
- Untuk Jenis tabel, pilih Tabel eksternal.
- Centang kotak Create a BigLake table using a Cloud Resource connection.
- Untuk Connection ID, pilih koneksi yang Anda buat sebelumnya.
Di bagian Schema, aktifkan deteksi otomatis skema dengan memilih opsi Auto detect.
Untuk mengabaikan baris dengan nilai kolom tambahan yang tidak cocok dengan skema, luaskan bagian Advanced options dan pilih Unknown values.
Klik Create table.
SQL
Gunakan
pernyataan DDL CREATE EXTERNAL TABLE
:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
CREATE EXTERNAL TABLE `PROJECT_ID.DATASET.EXTERNAL_TABLE_NAME` WITH PARTITION COLUMNS ( PARTITION_COLUMN PARTITION_COLUMN_TYPE, ) WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID` OPTIONS ( hive_partition_uri_prefix = "HIVE_PARTITION_URI_PREFIX", uris=['FILE_PATH'], max_staleness = STALENESS_INTERVAL, metadata_cache_mode = 'CACHE_MODE', format ="TABLE_FORMAT" );
Ganti kode berikut:
PROJECT_ID
: nama project tempat Anda ingin membuat tabel—misalnya,myproject
DATASET
: nama set data BigQuery tempat Anda ingin membuat tabel —misalnya,mydataset
EXTERNAL_TABLE_NAME
: nama tabel yang ingin Anda buat—misalnya,mytable
PARTITION_COLUMN
: nama kolom partisiPARTITION_COLUMN_TYPE
: jenis kolom partisiREGION
: region yang berisi koneksi—misalnya,us
CONNECTION_ID
: ID koneksi—misalnya,myconnection
Saat Anda melihat detail koneksi di konsol Google Cloud, ID koneksi adalah nilai di bagian terakhir dari ID koneksi yang sepenuhnya memenuhi syarat yang ditampilkan di ID Koneksi—misalnya,
projects/myproject/locations/connection_location/connections/myconnection
.HIVE_PARTITION_URI_PREFIX
: awalan uri hive–misalnya,gs://mybucket/
FILE_PATH
: jalur ke sumber data untuk tabel eksternal yang ingin Anda buat—misalnya,gs://mybucket/*.parquet
STALENESS_INTERVAL
: menentukan apakah metadata yang di-cache digunakan oleh operasi terhadap tabel BigLake, dan seberapa baru metadata yang di-cache agar operasi dapat menggunakannya. Untuk informasi selengkapnya tentang pertimbangan caching metadata, lihat Caching metadata untuk performa.Untuk menonaktifkan caching metadata, tentukan 0. Ini adalah setelan defaultnya.
Untuk mengaktifkan caching metadata, tentukan nilai literal interval antara 30 menit dan 7 hari. Misalnya, tentukan
INTERVAL 4 HOUR
untuk interval periode tidak berlaku 4 jam. Dengan nilai ini, operasi terhadap tabel akan menggunakan metadata yang di-cache jika telah di-refresh dalam 4 jam terakhir. Jika metadata yang di-cache lebih usang, operasi akan mengambil metadata dari Cloud Storage.CACHE_MODE
: menentukan apakah cache metadata di-refresh secara otomatis atau manual. Untuk mengetahui informasi selengkapnya tentang pertimbangan caching metadata, lihat Caching metadata untuk performa.Tetapkan ke
AUTOMATIC
agar cache metadata di-refresh pada interval yang ditentukan sistem, biasanya antara 30 dan 60 menit.Tetapkan ke
MANUAL
jika Anda ingin me-refresh cache metadata pada jadwal yang Anda tentukan. Dalam hal ini, Anda dapat memanggil prosedur sistemBQ.REFRESH_EXTERNAL_METADATA_CACHE
untuk me-refresh cache.Anda harus menetapkan
CACHE_MODE
jikaSTALENESS_INTERVAL
ditetapkan ke nilai yang lebih besar dari 0.TABLE_FORMAT
: format tabel yang ingin Anda buat—misalnya,PARQUET
Klik
Run.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
Contoh
Contoh berikut membuat tabel BigLake pada data berpartisi, dengan:
- Skema terdeteksi secara otomatis.
- Interval periode tidak berlaku cache metadata untuk tabel adalah 1 hari.
- Cache metadata akan otomatis di-refresh.
CREATE EXTERNAL TABLE `my_dataset.my_table` WITH PARTITION COLUMNS ( sku STRING, ) WITH CONNECTION `us.my-connection` OPTIONS( hive_partition_uri_prefix = "gs://mybucket/products", uris = ['gs://mybucket/products/*'], max_staleness = INTERVAL 1 DAY, metadata_cache_mode = 'AUTOMATIC' );
Contoh berikut membuat tabel BigLake pada data berpartisi, dengan:
- Skema telah ditentukan.
- Interval periode tidak berlaku cache metadata untuk tabel adalah 8 jam.
- Cache metadata harus di-refresh secara manual.
CREATE EXTERNAL TABLE `my_dataset.my_table` ( ProductId INTEGER, ProductName STRING, ProductType STRING ) WITH PARTITION COLUMNS ( sku STRING, ) WITH CONNECTION `us.my-connection` OPTIONS( hive_partition_uri_prefix = "gs://mybucket/products", uris = ['gs://mybucket/products/*'], max_staleness = INTERVAL 8 HOUR, metadata_cache_mode = 'MANUAL' );
bq
Pertama, gunakan perintah
bq mkdef
untuk membuat
file definisi tabel:
bq mkdef \ --source_format=SOURCE_FORMAT \ --connection_id=REGION.CONNECTION_ID \ --hive_partitioning_mode=PARTITIONING_MODE \ --hive_partitioning_source_uri_prefix=GCS_URI_SHARED_PREFIX \ --require_hive_partition_filter=BOOLEAN \ --metadata_cache_mode=CACHE_MODE \ GCS_URIS > DEFINITION_FILE
Ganti kode berikut:
SOURCE_FORMAT
: format sumber data eksternal. Contoh,CSV
.REGION
: region yang berisi koneksi—misalnya,us
.CONNECTION_ID
: ID koneksi—misalnya,myconnection
.Saat Anda melihat detail koneksi di konsol Google Cloud, ID koneksi adalah nilai di bagian terakhir dari ID koneksi yang sepenuhnya memenuhi syarat yang ditampilkan di ID Koneksi—misalnya,
projects/myproject/locations/connection_location/connections/myconnection
.PARTITIONING_MODE
: mode partisi Hive. Gunakan salah satu nilai berikut:AUTO
: Mendeteksi nama dan jenis kunci secara otomatis.STRINGS
: Mengonversi nama kunci menjadi string secara otomatis.CUSTOM
: Mengenkode skema kunci di awalan URI sumber.
GCS_URI_SHARED_PREFIX
: awalan URI sumber.BOOLEAN
: Menentukan apakah akan memerlukan filter predikat pada waktu kueri. Flag ini bersifat opsional. Nilai defaultnya adalahfalse
.CACHE_MODE
: menentukan apakah cache metadata di-refresh secara otomatis atau manual. Anda hanya perlu menyertakan flag ini jika Anda juga berencana menggunakan flag--max_staleness
dalam perintahbq mk
berikutnya untuk mengaktifkan caching metadata. Untuk informasi selengkapnya tentang pertimbangan caching metadata, lihat Caching metadata untuk performa.Tetapkan ke
AUTOMATIC
agar cache metadata di-refresh pada interval yang ditentukan sistem, biasanya antara 30 dan 60 menit.Tetapkan ke
MANUAL
jika Anda ingin me-refresh cache metadata pada jadwal yang Anda tentukan. Dalam hal ini, Anda dapat memanggil prosedur sistemBQ.REFRESH_EXTERNAL_METADATA_CACHE
untuk me-refresh cache.Anda harus menetapkan
CACHE_MODE
jikaSTALENESS_INTERVAL
ditetapkan ke nilai yang lebih besar dari 0.GCS_URIS
: jalur ke folder Cloud Storage, menggunakan format karakter pengganti.DEFINITION_FILE
: jalur ke file definisi tabel di komputer lokal Anda.
Jika PARTITIONING_MODE
adalah CUSTOM
, sertakan skema kunci partisi
dalam awalan URI sumber, menggunakan format berikut:
--hive_partitioning_source_uri_prefix=GCS_URI_SHARED_PREFIX/{KEY1:TYPE1}/{KEY2:TYPE2}/...
Setelah membuat file definisi tabel, gunakan perintah
bq mk
untuk
membuat tabel BigLake:
bq mk --external_table_definition=DEFINITION_FILE \ --max_staleness=STALENESS_INTERVAL \ DATASET_NAME.TABLE_NAME \ SCHEMA
Ganti kode berikut:
DEFINITION_FILE
: jalur ke file definisi tabel.STALENESS_INTERVAL
: menentukan apakah metadata yang di-cache digunakan oleh operasi terhadap tabel BigLake, dan seberapa baru metadata yang di-cache agar operasi dapat menggunakannya. Jika flag ini disertakan, Anda juga harus menentukan nilai untuk flag--metadata_cache_mode
dalam perintahbq mkdef
sebelumnya. Untuk informasi selengkapnya tentang pertimbangan caching metadata, lihat Caching metadata untuk performa.Untuk menonaktifkan caching metadata, tentukan 0. Ini adalah setelan defaultnya.
Untuk mengaktifkan caching metadata, tentukan nilai interval antara 30 menit hingga 7 hari, menggunakan
Y-M D H:M:S
yang dijelaskan dalam dokumentasi jenis dataINTERVAL
. Misalnya, tentukan0-0 0 4:0:0
untuk interval periode tidak berlaku 4 jam. Dengan nilai ini, operasi terhadap tabel akan menggunakan metadata yang di-cache jika telah di-refresh dalam 4 jam terakhir. Jika metadata yang di-cache lebih tua, operasi akan mengambil metadata dari Cloud Storage.DATASET_NAME
: nama set data yang berisi tabel.TABLE_NAME
: nama tabel yang Anda buat.SCHEMA
: menentukan jalur ke file skema JSON, atau menentukan skema dalam formulirfield:data_type,field:data_type,...
. Untuk menggunakan deteksi otomatis skema, hilangkan argumen ini.
Contoh
Contoh berikut menggunakan mode partisi Hive AUTO
, dan juga menetapkan cache metadata agar memiliki interval periode tidak berlaku selama 12 jam dan di-refresh secara otomatis:
bq mkdef --source_format=CSV \
--connection_id=us.my-connection \
--hive_partitioning_mode=AUTO \
--hive_partitioning_source_uri_prefix=gs://myBucket/myTable \
--metadata_cache_mode=AUTOMATIC \
gs://myBucket/myTable/* > mytable_def
bq mk --external_table_definition=mytable_def \
--max_staleness=0-0 0 12:0:0 \
mydataset.mytable \
Region:STRING,Quarter:STRING,Total_sales:INTEGER
Contoh berikut menggunakan mode partisi Hive STRING
:
bq mkdef --source_format=CSV \
--connection_id=us.my-connection \
--hive_partitioning_mode=STRING \
--hive_partitioning_source_uri_prefix=gs://myBucket/myTable \
gs://myBucket/myTable/* > mytable_def
bq mk --external_table_definition=mytable_def \
mydataset.mytable \
Region:STRING,Quarter:STRING,Total_sales:INTEGER
Contoh berikut menggunakan mode partisi Hive CUSTOM
:
bq mkdef --source_format=CSV \
--connection_id=us.my-connection \
--hive_partitioning_mode=CUSTOM \
--hive_partitioning_source_uri_prefix=gs://myBucket/myTable/{dt:DATE}/{val:STRING} \
gs://myBucket/myTable/* > mytable_def
bq mk --external_table_definition=mytable_def \
mydataset.mytable \
Region:STRING,Quarter:STRING,Total_sales:INTEGER
API
Untuk menetapkan partisi Hive menggunakan BigQuery API, sertakan objek
hivePartitioningOptions
dalam objek ExternalDataConfiguration
saat Anda membuat file definisi tabel.
Untuk membuat tabel BigLake, Anda juga harus menentukan
nilai untuk kolom connectionId
.
Jika menetapkan kolom hivePartitioningOptions.mode
ke CUSTOM
, Anda harus
mengenkode skema kunci partisi di
kolom hivePartitioningOptions.sourceUriPrefix
sebagai berikut:
gs://BUCKET/PATH_TO_TABLE/{KEY1:TYPE1}/{KEY2:TYPE2}/...
Untuk menerapkan penggunaan filter predikat pada waktu kueri, tetapkan kolom hivePartitioningOptions.requirePartitionFilter
ke true
.
Terraform
Contoh ini membuat Tabel BigLake berdasarkan data berpartisi.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
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.
Menyiapkan kebijakan kontrol akses
Anda dapat menggunakan beberapa metode untuk mengontrol akses ke tabel BigLake:
Untuk petunjuk cara menyiapkan keamanan tingkat kolom, lihat panduan keamanan tingkat kolom.
Untuk petunjuk tentang cara menyiapkan penyamaran data, lihat panduan penyamaran data.
Untuk petunjuk tentang cara menyiapkan keamanan tingkat baris, lihat panduan keamanan tingkat baris.
Misalnya, Anda ingin membatasi akses baris untuk tabel mytable
dalam set data mydataset
:
+---------+---------+-------+ | country | product | price | +---------+---------+-------+ | US | phone | 100 | | JP | tablet | 300 | | UK | laptop | 200 | +---------+---------+-------+
Anda dapat membuat filter tingkat baris untuk Kim (kim@example.com
) yang membatasi aksesnya ke baris di mana country
sama dengan US
.
CREATE ROW ACCESS POLICY only_us_filter ON mydataset.mytable GRANT TO ('user:kim@example.com') FILTER USING (country = 'US');
Kemudian, Kim menjalankan kueri berikut:
SELECT * FROM projectid.mydataset.mytable;
Output hanya menampilkan baris di mana country
sama dengan US
:
+---------+---------+-------+ | country | product | price | +---------+---------+-------+ | US | phone | 100 | +---------+---------+-------+
Membuat kueri tabel BigLake
Untuk informasi selengkapnya, baca artikel Membuat kueri data Cloud Storage di tabel BigLake.
Mengupdate tabel BigLake
Anda dapat mengupdate tabel BigLake jika perlu, misalnya untuk mengubah caching metadata. Untuk mendapatkan detail tabel, seperti format sumber dan URI sumber, lihat Mendapatkan informasi tabel.
Anda juga dapat menggunakan prosedur yang sama untuk mengupgrade tabel eksternal berbasis Cloud Storage ke tabel BigLake dengan mengaitkan tabel eksternal tersebut ke koneksi. Untuk informasi selengkapnya, lihat Mengupgrade tabel eksternal ke tabel BigLake.
Untuk mengupdate tabel BigLake, pilih salah satu opsi berikut:
SQL
Gunakan pernyataan DDL CREATE OR REPLACE EXTERNAL TABLE
untuk mengupdate tabel:
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
CREATE OR REPLACE EXTERNAL TABLE `PROJECT_ID.DATASET.EXTERNAL_TABLE_NAME` WITH CONNECTION `REGION.CONNECTION_ID` OPTIONS( format ="TABLE_FORMAT", uris = ['BUCKET_PATH'], max_staleness = STALENESS_INTERVAL, metadata_cache_mode = 'CACHE_MODE' );
Ganti yang berikut ini:
PROJECT_ID
: nama project yang berisi tabelDATASET
: nama set data yang berisi tabelEXTERNAL_TABLE_NAME
: nama tabelREGION
: region yang berisi koneksiCONNECTION_ID
: nama koneksi yang akan digunakanTABLE_FORMAT
: format yang digunakan oleh tabelAnda tidak dapat mengubahnya saat mengupdate tabel.
BUCKET_PATH
: jalur ke bucket Cloud Storage yang berisi data untuk tabel eksternal, dalam format['gs://bucket_name/[folder_name/]file_name']
.Anda dapat memilih beberapa file dari bucket dengan menentukan satu karakter pengganti tanda bintang (
*
) di jalur. Contoh,['gs://mybucket/file_name*']
. Untuk informasi selengkapnya, lihat Dukungan karakter pengganti untuk URI Cloud Storage.Anda dapat menyertakan beberapa bucket untuk opsi
uris
dengan memberikan beberapa jalur.Contoh berikut menunjukkan nilai
uris
yang valid:['gs://bucket/path1/myfile.csv']
['gs://bucket/path1/*.csv']
['gs://bucket/path1/*', 'gs://bucket/path2/file00*']
Saat Anda menentukan nilai
uris
yang menargetkan beberapa file, semua file tersebut harus berbagi skema yang kompatibel.Untuk informasi selengkapnya tentang penggunaan URI Cloud Storage di BigQuery, lihat Jalur resource Cloud Storage.
STALENESS_INTERVAL
: menentukan apakah metadata yang di-cache digunakan oleh operasi terhadap tabel, dan seberapa baru metadata yang di-cache agar operasi dapat menggunakannyaUntuk informasi selengkapnya tentang pertimbangan caching metadata, lihat Caching metadata untuk performa.
Untuk menonaktifkan caching metadata, tentukan 0. Ini adalah setelan defaultnya.
Untuk mengaktifkan caching metadata, tentukan nilai literal interval antara 30 menit dan 7 hari. Misalnya, tentukan
INTERVAL 4 HOUR
untuk interval periode tidak berlaku 4 jam. Dengan nilai ini, operasi terhadap tabel akan menggunakan metadata yang di-cache jika telah di-refresh dalam 4 jam terakhir. Jika metadata yang di-cache lebih tua, operasi akan mengambil metadata dari Cloud Storage.CACHE_MODE
: menentukan apakah cache metadata di-refresh secara otomatis atau manualUntuk informasi selengkapnya terkait pertimbangan caching metadata, lihat Caching metadata untuk performa.
Ubah ke
AUTOMATIC
agar cache metadata diperbarui sesuai dengan interval yang ditentukan sistem, biasanya antara 30 hingga 60 menit.Ubah ke
MANUAL
jika Anda ingin memperbarui cache metadata sesuai dengan jadwal yang Anda tentukan. Dalam hal ini, Anda dapat memanggil prosedur sistemBQ.REFRESH_EXTERNAL_METADATA_CACHE
untuk me-refresh cache.Anda harus menetapkan
CACHE_MODE
jikaSTALENESS_INTERVAL
ditetapkan ke nilai yang lebih besar dari 0.
Klik
Run.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
bq
Gunakan perintah bq mkdef
dan bq update
untuk mengupdate tabel:
Buat definisi tabel eksternal, yang menjelaskan aspek tabel yang akan diubah:
bq mkdef --connection_id=PROJECT_ID.REGION.CONNECTION_ID \ --source_format=TABLE_FORMAT \ --metadata_cache_mode=CACHE_MODE \ "BUCKET_PATH" > /tmp/DEFINITION_FILE
Ganti yang berikut ini:
PROJECT_ID
: nama project yang berisi koneksiREGION
: region yang berisi koneksiCONNECTION_ID
: nama koneksi yang akan digunakanTABLE_FORMAT
: format yang digunakan oleh tabel. Anda tidak dapat mengubahnya saat mengupdate tabel.CACHE_MODE
: menentukan apakah cache metadata di-refresh secara otomatis atau manual. Untuk informasi selengkapnya seputar pertimbangan caching metadata, lihat Caching metadata untuk performa.Tetapkan ke
AUTOMATIC
agar cache metadata di-refresh pada interval yang ditentukan sistem, biasanya antara 30 dan 60 menit.Tetapkan ke
MANUAL
jika Anda ingin me-refresh cache metadata sesuai jadwal yang Anda tentukan. Dalam hal ini, Anda dapat memanggil prosedur sistemBQ.REFRESH_EXTERNAL_METADATA_CACHE
untuk me-refresh cache.Anda harus menetapkan
CACHE_MODE
jikaSTALENESS_INTERVAL
ditetapkan ke nilai yang lebih besar dari 0.BUCKET_PATH
: jalur ke bucket Cloud Storage yang berisi data untuk tabel eksternal, dalam formatgs://bucket_name/[folder_name/]file_name
.Anda dapat membatasi file yang dipilih dari bucket dengan menentukan satu karakter pengganti tanda bintang (
*
) di jalur. Contoh,gs://mybucket/file_name*
. Untuk informasi selengkapnya, lihat Dukungan karakter pengganti untuk URI Cloud Storage.Anda dapat menentukan beberapa bucket untuk opsi
uris
dengan menyediakan beberapa jalur.Contoh berikut menunjukkan nilai
uris
yang valid:gs://bucket/path1/myfile.csv
gs://bucket/path1/*.csv
gs://bucket/path1/*,gs://bucket/path2/file00*
Saat Anda menentukan nilai
uris
yang menargetkan beberapa file, semua file tersebut harus berbagi skema yang kompatibel.Untuk informasi selengkapnya tentang penggunaan URI Cloud Storage di BigQuery, lihat Jalur resource Cloud Storage.
DEFINITION_FILE
: nama file definisi tabel yang Anda buat.
Update tabel menggunakan definisi tabel eksternal baru:
bq update --max_staleness=STALENESS_INTERVAL \ --external_table_definition=/tmp/DEFINITION_FILE \ PROJECT_ID:DATASET.EXTERNAL_TABLE_NAME
Ganti kode berikut:
STALENESS_INTERVAL
: menentukan apakah metadata yang di-cache digunakan oleh operasi terhadap tabel, dan seberapa baru metadata yang di-cache agar operasi dapat menggunakannya. Untuk informasi selengkapnya tentang pertimbangan caching metadata, lihat Caching metadata untuk performa.Untuk menonaktifkan caching metadata, tentukan 0. Ini adalah setelan defaultnya.
Untuk mengaktifkan caching metadata, tentukan nilai interval antara 30 menit hingga 7 hari, menggunakan
Y-M D H:M:S
yang dijelaskan dalam dokumentasi jenis dataINTERVAL
. Misalnya, tentukan0-0 0 4:0:0
untuk interval periode tidak berlaku 4 jam. Dengan nilai ini, operasi terhadap tabel akan menggunakan metadata yang di-cache jika telah di-refresh dalam 4 jam terakhir. Jika metadata yang di-cache lebih tua, operasi akan mengambil metadata dari Cloud Storage.DEFINITION_FILE
: nama file definisi tabel yang Anda buat atau update.PROJECT_ID
: nama project yang berisi tabelDATASET
: nama set data yang berisi tabelEXTERNAL_TABLE_NAME
: nama tabel
Contoh
Contoh berikut mengupdate mytable
untuk menggunakan metadata yang di-cache selama metadata telah di-refresh dalam 4,5 jam terakhir, dan juga untuk me-refresh metadata yang di-cache secara otomatis:
bq update --project_id=myproject --max_staleness='0-0 0 4:30:0' \
--external_table_definition=enable_metadata.json mydataset.mytable
Dengan enable_metadata.json
memiliki konten berikut:
{
"metadataCacheMode": "AUTOMATIC"
}
Logging audit
Untuk informasi tentang logging di BigQuery, lihat Pengantar pemantauan BigQuery. Untuk mempelajari lebih lanjut logging di Google Cloud, lihat Cloud Logging.
Langkah berikutnya
- Pelajari BigLake lebih lanjut.
- Pelajari Cloud Storage.
- Pelajari cara membuat kueri data AWS.
- Pelajari cara membuat kueri data Azure.