Membuat tabel objek
Dokumen ini menjelaskan cara mengakses data tidak terstruktur di BigQuery dengan membuat tabel objek.
Untuk membuat tabel objek, Anda harus menyelesaikan tugas-tugas berikut:
- Buat koneksi untuk membaca informasi objek dari Cloud Storage.
- Berikan izin untuk membaca informasi Cloud Storage ke akun layanan yang terkait dengan koneksi.
- Buat tabel objek dan kaitkan dengan koneksi menggunakan
pernyataan
CREATE EXTERNAL TABLE
.
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
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 and BigQuery Connection API APIs.
-
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 and BigQuery Connection API APIs.
- Pastikan administrator BigQuery Anda telah membuat koneksi dan menyiapkan akses ke Cloud Storage.
Peran yang diperlukan
Untuk menggunakan tabel objek, pengguna memerlukan izin IAM berikut berdasarkan perannya dalam organisasi Anda. Untuk mengetahui informasi lebih lanjut tentang peran pengguna, lihat Model keamanan. Untuk mengetahui informasi selengkapnya tentang cara memberikan izin, lihat Melihat peran yang dapat diberikan pada resource.
Administrator data lake
Untuk mendapatkan izin yang Anda perlukan untuk terhubung ke Cloud Storage, minta administrator untuk memberi Anda peran BigQuery Connection Admin (
roles/bigquery.connectionAdmin
) pada project tersebut.Untuk mendapatkan izin yang diperlukan untuk membuat dan mengelola bucket Cloud Storage, minta administrator Anda untuk memberi Anda peran Storage Admin (
roles/storage.admin
) di project tersebut.Peran yang telah ditentukan ini berisi izin yang diperlukan untuk terhubung ke Cloud Storage serta membuat dan mengelola bucket Cloud Storage. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
bigquery.connections.create
bigquery.connections.get
bigquery.connections.list
bigquery.connections.update
bigquery.connections.use
bigquery.connections.delete
storage.bucket.*
storage.object.*
Administrator data warehouse
Untuk mendapatkan izin yang Anda perlukan untuk membuat tabel objek, minta administrator untuk memberi Anda peran berikut pada project:
- Peran BigQuery Data Editor (
roles/bigquery.dataEditor
). - Peran BigQuery Connection Admin (
roles/bigquery.connectionAdmin
).
Peran yang telah ditentukan ini berisi izin yang diperlukan untuk membuat tabel objek. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
bigquery.tables.create
bigquery.tables.update
bigquery.connections.delegate
- Peran BigQuery Data Editor (
Analis Data
Untuk mendapatkan izin yang Anda perlukan untuk membuat kueri tabel objek, minta administrator memberi Anda peran berikut pada project:
- Peran BigQuery Data Viewer (
roles/bigquery.dataViewer
) - Peran BigQuery Connection User (
roles/bigquery.connectionUser
)
Peran yang telah ditentukan ini berisi izin yang diperlukan untuk membuat kueri tabel objek. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
bigquery.jobs.create
bigquery.tables.get
bigquery.tables.getData
bigquery.readsessions.create
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran yang telah ditetapkan sebelumnya.
- Peran BigQuery Data Viewer (
Membuat tabel objek
Sebelum membuat tabel objek, Anda harus sudah memiliki set data untuk memuatnya. Untuk mengetahui informasi selengkapnya, lihat Membuat set data.
Untuk membuat tabel objek:
SQL
Gunakan
pernyataan CREATE EXTERNAL TABLE
.
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
CREATE EXTERNAL TABLE `PROJECT_ID.DATASET_ID.TABLE_NAME` WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID` OPTIONS( object_metadata = 'SIMPLE', uris = ['BUCKET_PATH'[,...]], max_staleness = STALENESS_INTERVAL, metadata_cache_mode = 'CACHE_MODE');
Ganti kode berikut:
PROJECT_ID
: project ID Anda.DATASET_ID
: ID set data untuk memuat tabel objek.TABLE_NAME
: nama tabel objek.REGION
: region atau multi-region yang berisi koneksi.CONNECTION_ID
: ID koneksi resource cloud yang akan digunakan dengan tabel objek ini. Koneksi menentukan akun layanan yang digunakan untuk membaca data dari Cloud Storage.Saat Anda melihat detail koneksi di konsol Google Cloud, ID koneksi adalah nilai di bagian terakhir ID koneksi yang sepenuhnya memenuhi syarat yang ditampilkan di ID Koneksi—misalnya,
projects/myproject/locations/connection_location/connections/myconnection
.BUCKET_PATH
: jalur ke bucket Cloud Storage yang berisi objek yang direpresentasikan oleh tabel objek, dalam format['gs://bucket_name/[folder_name/]*']
.Anda dapat menggunakan satu karakter pengganti tanda bintang (
*
) di setiap jalur untuk membatasi objek yang disertakan dalam tabel objek. Misalnya, jika bucket berisi beberapa jenis data tidak terstruktur, Anda dapat membuat tabel objek hanya pada objek PDF dengan menentukan['gs://bucket_name/*.pdf']
. Untuk informasi selengkapnya, lihat Dukungan karakter pengganti untuk URI Cloud Storage.Anda dapat menentukan beberapa bucket untuk opsi
uris
dengan memberikan beberapa jalur, misalnya['gs://mybucket1/*', 'gs://mybucket2/folder5/*']
.Untuk mengetahui 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 objek, dan seberapa baru metadata yang di-cache agar operasi dapat menggunakannya. Untuk informasi selengkapnya tentang pertimbangan penyimpanan metadata ke dalam cache, lihat Cache metadata untuk performa.Untuk menonaktifkan cache 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 penghentian 4 jam. Dengan nilai ini, operasi terhadap tabel akan menggunakan metadata yang di-cache jika metadata yang di-cache telah diperbarui dalam 4 jam terakhir. Jika metadata yang di-cache lebih usang, operasi akan mengambil metadata dari Cloud Storage.CACHE_MODE
: menentukan apakah cache metadata diperbarui 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.
Contoh
Contoh berikut membuat tabel objek dengan interval keusangan cache metadata selama 1 hari:
CREATE EXTERNAL TABLE `my_dataset.object_table` WITH CONNECTION `us.my-connection` OPTIONS( object_metadata = 'SIMPLE', uris = ['gs://mybucket/*'], max_staleness = INTERVAL 1 DAY, metadata_cache_mode = 'AUTOMATIC' );
Contoh berikut akan membuat tabel objek di atas objek dalam tiga bucket Cloud Storage:
CREATE EXTERNAL TABLE `my_dataset.object_table` WITH CONNECTION `us.my-connection` OPTIONS( object_metadata = 'SIMPLE', uris = ['gs://bucket1/*','gs://bucket2/folder1/*','gs://bucket3/*'] );
Contoh berikut membuat tabel objek hanya pada objek PDF dalam bucket Cloud Storage:
CREATE EXTERNAL TABLE `my_dataset.object_table` WITH CONNECTION `us.my-connection` OPTIONS( object_metadata = 'SIMPLE', uris = ['gs://bucket1/*.pdf'] );
bq
Gunakan
perintah bq mk
.
bq mk --table \ --external_table_definition=BUCKET_PATH@REGION.CONNECTION_ID \ --object_metadata=SIMPLE \ --max_staleness=STALENESS_INTERVAL \ --metadata_cache_mode=CACHE_MODE \ PROJECT_ID:DATASET_ID.TABLE_NAME
Ganti kode berikut:
PROJECT_ID
: project ID Anda.DATASET_ID
: ID set data untuk memuat tabel objek.TABLE_NAME
: nama tabel objek.REGION
: region atau multi-region yang berisi koneksi.CONNECTION_ID
: ID koneksi resource cloud yang akan digunakan dengan tabel eksternal ini. Koneksi menentukan akun layanan yang digunakan untuk membaca data dari Cloud Storage.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
.BUCKET_PATH
: jalur ke bucket Cloud Storage yang berisi objek yang direpresentasikan oleh tabel objek, dalam formatgs://bucket_name/[folder_name/]*
.Anda dapat menggunakan satu karakter pengganti tanda bintang (
*
) di setiap jalur untuk membatasi objek yang disertakan dalam tabel objek. Misalnya, jika bucket berisi beberapa jenis data tidak terstruktur, Anda dapat membuat tabel objek hanya pada objek PDF dengan menentukangs://bucket_name/*.pdf
. Untuk informasi selengkapnya, lihat Dukungan karakter pengganti untuk URI Cloud Storage.Anda dapat menentukan beberapa bucket untuk opsi
uris
dengan memberikan beberapa jalur, misalnyags://mybucket1/*,gs://mybucket2/folder5/*
.Untuk mengetahui 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 objek, dan seberapa baru metadata yang di-cache agar operasi dapat menggunakannya. Untuk informasi selengkapnya tentang pertimbangan penyimpanan metadata ke dalam cache, lihat Cache metadata untuk performa.Untuk menonaktifkan cache 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 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.
Contoh
Contoh berikut membuat tabel objek dengan interval keusangan cache metadata selama 1 hari:
bq mk --table \ --external_table_definition=gs://mybucket/*@us.my-connection \ --object_metadata=SIMPLE \ --max_staleness=0-0 1 0:0:0 \ --metadata_cache_mode=AUTOMATIC \ my_dataset.object_table
Contoh berikut akan membuat tabel objek di atas objek dalam tiga bucket Cloud Storage:
bq mk --table \ --external_table_definition=gs://bucket1/*,gs://bucket2/folder1/*,gs://bucket3/*@us.my-connection \ --object_metadata=SIMPLE \ my_dataset.object_table
Contoh berikut membuat tabel objek hanya pada objek PDF dalam bucket Cloud Storage:
bq mk --table \ --external_table_definition=gs://bucket1/*.pdf@us.my-connection \ --object_metadata=SIMPLE \ my_dataset.object_table
API
Panggil
metode tables.insert
.
Sertakan
objek ExternalDataConfiguration
dengan kolom objectMetadata
yang ditetapkan ke SIMPLE
di
resource Table
yang Anda teruskan.
Contoh berikut menunjukkan cara memanggil metode ini menggunakan curl
:
ACCESS_TOKEN=$(gcloud auth print-access-token) curl \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-X POST \
-d '{"tableReference": {"projectId": "my_project", "datasetId": "my_dataset", "tableId": "object_table_name"}, "externalDataConfiguration": {"objectMetadata": "SIMPLE", "sourceUris": ["gs://mybucket/*"]}}' \
https://www.googleapis.com/bigquery/v2/projects/my_project/datasets/my_dataset/tables
Terraform
Contoh ini membuat tabel objek dengan caching metadata yang diaktifkan dengan pembaruan manual.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Kolom kunci yang akan ditentukan untuk tabel objek adalah
google_bigquery_table.external_data_configuration.object_metadata
,
google_bigquery_table.external_data_configuration.metadata_cache_mode
,
dan google_bigquery_table.max_staleness
. Untuk mengetahui informasi selengkapnya tentang setiap resource, lihat dokumentasi BigQuery Terraform.
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.
Membuat kueri tabel objek
Anda dapat membuat kueri tabel objek seperti BigQuery lainnya, misalnya:
SELECT * FROM mydataset.myobjecttable;
Membuat kueri tabel objek akan menampilkan metadata untuk objek yang mendasarinya. Untuk mengetahui informasi selengkapnya, lihat Skema tabel objek.
Langkah berikutnya
- Pelajari cara menjalankan inferensi pada tabel objek gambar.
- Pelajari cara menganalisis tabel objek menggunakan fungsi jarak jauh.