Membuat kueri data Cloud Storage dalam tabel BigLake
Dokumen ini menjelaskan cara membuat kueri data yang tersimpan dalam tabel BigLake Cloud Storage.
Sebelum memulai
Pastikan Anda memiliki tabel Cloud Storage BigLake.
Peran yang diperlukan
Untuk membuat kueri tabel eksternal Cloud Storage, pastikan Anda memiliki peran berikut:
- BigQuery Data Viewer (
roles/bigquery.dataViewer
) - BigQuery User (
roles/bigquery.user
)
Bergantung pada izin yang Anda miliki, Anda dapat memberikan peran ini pada diri sendiri atau meminta administrator untuk memberikannya. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Melihat peran yang dapat diberikan pada resource.
Untuk melihat izin yang benar-benar diperlukan untuk membuat kueri tabel BigLake Cloud Storage, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
bigquery.jobs.create
bigquery.readsessions.create
(Hanya diperlukan jika Anda membaca data dengan BigQuery Storage Read API)bigquery.tables.get
bigquery.tables.getData
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran yang telah ditetapkan sebelumnya lainnya
Membuat kueri tabel BigLake
Setelah membuat tabel Cloud Storage BigLake, Anda dapat membuat kuerinya menggunakan
sintaksis GoogleSQL, sama seperti tabel BigQuery standar. Contoh,
SELECT field1, field2 FROM mydataset.my_cloud_storage_table;
.
Membuat kueri tabel BigLake menggunakan alat pemrosesan data eksternal
Anda dapat menggunakan konektor BigQuery dengan alat pemrosesan data lainnya untuk mengakses tabel BigLake di Cloud Storage. Untuk informasi selengkapnya, lihat Konektor.
Apache Spark
Contoh berikut menggunakan Dataproc, tetapi juga berfungsi dengan deployment Spark apa pun yang menggunakan konektor Spark-BigQuery.
Dalam contoh ini, Anda menyediakan konektor Spark-BigQuery sebagai tindakan inisialisasi saat membuat cluster. Tindakan ini memungkinkan Anda menggunakan notebook Zeppelin dan menjalankan perjalanan pengguna analis data.
Versi konektor Spark-BigQuery tercantum di repositori GoogleCloudDataproc/spark-bigquery-connector GitHub.
Buat satu cluster node menggunakan tindakan inisialisasi untuk konektor Spark-BigQuery:
gcloud dataproc clusters create biglake-demo-cluster \ --optional-components=ZEPPELIN \ --region=REGION \ --enable-component-gateway \ --single-node \ --initialization-actions gs://goog-dataproc-initialization-actions-REGION/connectors/connectors.sh \ --metadata spark-bigquery-connector-url= gs://spark-lib/bigquery/spark-bigquery-with-dependencies_SCALA_VERSION-CONNECTOR_VERSION.jar
Apache Hive
Contoh berikut menggunakan Dataproc, tetapi juga dapat digunakan dengan deployment Hive yang menggunakan konektor Hive-BigQuery.
Dalam contoh ini, Anda menyediakan konektor Hive-BigQuery sebagai tindakan inisialisasi saat membuat cluster.
Versi konektor Hive-BigQuery tercantum di repositori GoogleCloudDataproc/hive-bigquery-connector GitHub.
Buat satu cluster node menggunakan tindakan inisialisasi untuk konektor Hive-BigQuery:
gcloud dataproc clusters create biglake-hive-demo-cluster \ --region=REGION \ --single-node \ --initialization-actions gs://goog-dataproc-initialization-actions-REGION/connectors/connectors.sh \ --metadata hive-bigquery-connector-url=gs://goog-dataproc-artifacts-REGION/hive-bigquery/hive-bigquery-connector-CONNECTOR_VERSION.jar
Untuk mengetahui informasi selengkapnya tentang konektor Hive-BigQuery, lihat Menggunakan Konektor Hive-BigQuery.
Dataflow
Untuk membaca tabel BigLake dari Dataflow, gunakan konektor Dataflow dalam mode DIRECT_READ
untuk menggunakan BigQuery Storage API. Membaca dari string kueri
juga didukung. Lihat BigQuery I/O
di dokumentasi Apache Beam.
Membuat kueri tabel BigLake sementara
Membuat kueri sumber data eksternal menggunakan tabel sementara berguna untuk kueri ad-hoc satu kali atas data eksternal, atau untuk proses ekstrak, transformasi, dan pemuatan (ETL).
Untuk membuat kueri sumber data eksternal tanpa membuat tabel permanen, Anda perlu memberikan definisi tabel untuk tabel sementara, lalu menggunakan definisi tabel tersebut dalam perintah atau panggilan untuk membuat kueri tabel sementara. Anda dapat memberikan definisi tabel dengan salah satu cara berikut:
- File definisi tabel
- Definisi skema inline
- File skema JSON
File definisi tabel atau skema yang disediakan digunakan untuk membuat tabel eksternal sementara, dan kueri dijalankan terhadap tabel eksternal sementara.
Saat menggunakan tabel eksternal sementara, Anda tidak membuat tabel di salah satu set data BigQuery Anda. Karena tidak disimpan secara permanen dalam set data, tabel itu tidak dapat dibagikan kepada orang lain.
Anda dapat membuat dan membuat kueri tabel sementara yang ditautkan ke sumber data eksternal menggunakan alat command line bq, API, atau library klien.
bq
Gunakan
perintah bq query
dengan
flag --external_table_definition
.
(Opsional) Berikan flag --location
dan tetapkan nilainya ke lokasi Anda.
Untuk membuat kueri tabel sementara yang ditautkan ke sumber data eksternal menggunakan file definisi tabel, masukkan perintah berikut.
bq --location=LOCATION query \ --external_table_definition=TABLE::DEFINITION_FILE \ 'QUERY'
Ganti kode berikut:
LOCATION
: nama lokasi Anda. Flag--location
bersifat opsional. Misalnya, jika menggunakan BigQuery di region Tokyo, Anda dapat menetapkan nilai flag keasia-northeast1
. Anda dapat menetapkan nilai default untuk lokasi menggunakan file .bigqueryrc.TABLE
: nama tabel sementara yang Anda buat.DEFINITION_FILE
: jalur ke file definisi tabel di mesin lokal Anda.QUERY
: kueri yang Anda kirimkan ke tabel sementara.
Misalnya, perintah berikut membuat dan mengkueri tabel sementara bernama sales
menggunakan file definisi tabel bernama sales_def
.
bq query \
--external_table_definition=sales::sales_def@us.myconnection \
'SELECT
Region,
Total_sales
FROM
sales'
Untuk membuat kueri tabel sementara yang ditautkan ke sumber data eksternal Anda menggunakan definisi skema inline, masukkan perintah berikut.
bq --location=LOCATION query \ --external_table_definition=TABLE::SCHEMA@SOURCE_FORMAT=BUCKET_PATH@projects/PROJECT_ID/locations/REGION/connections/CONNECTION_ID \ 'query'
Ganti kode berikut:
LOCATION
: nama lokasi Anda. Flag--location
bersifat opsional. Misalnya, jika menggunakan BigQuery di region Tokyo, Anda dapat menetapkan nilai flag keasia-northeast1
. Anda dapat menetapkan nilai default untuk lokasi menggunakan file .bigqueryrc.TABLE
: nama tabel sementara yang Anda buat.SCHEMA
: definisi skema inline dalam formatfield:data_type,field:data_type
.SOURCE_FORMAT
: format sumber data eksternal, misalnya,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 mengetahui informasi selengkapnya tentang penggunaan Cloud Storage URI di BigQuery, lihat Jalur resource Cloud Storage.
PROJECT_ID
: project yang berisi koneksi.REGION
: region yang berisi koneksi—misalnya,us
.CONNECTION_ID
: nama koneksi—misalnya,myconnection
.QUERY
: kueri yang Anda kirimkan ke tabel sementara.
Misalnya, perintah berikut membuat dan membuat kueri tabel sementara bernama sales
yang ditautkan ke file CSV yang disimpan di Cloud Storage dengan definisi skema berikut: Region:STRING,Quarter:STRING,Total_sales:INTEGER
.
bq query \
--external_table_definition=sales::Region:STRING,Quarter:STRING,Total_sales:INTEGER@CSV=gs://mybucket/sales.csv@us.myconnection \
'SELECT
Region,
Total_sales
FROM
sales'
Untuk membuat kueri tabel sementara yang ditautkan ke sumber data eksternal Anda menggunakan file skema JSON, masukkan perintah berikut.
bq --location=LOCATION query \ --external_table_definition=SCHEMA_FILE@SOURCE_FORMAT=BUCKET_PATH@projects/PROJECT_ID/locations/REGION/connections/CONNECTION_ID \ 'QUERY'
Ganti kode berikut:
LOCATION
: nama lokasi Anda. Flag--location
bersifat opsional. Misalnya, jika menggunakan BigQuery di region Tokyo, Anda dapat menetapkan nilai flag keasia-northeast1
. Anda dapat menetapkan nilai default untuk lokasi menggunakan file .bigqueryrc.SCHEMA_FILE
: jalur ke file skema JSON di komputer lokal Anda.SOURCE_FORMAT
: format sumber data eksternal, misalnya,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 mengetahui informasi selengkapnya tentang penggunaan Cloud Storage URI di BigQuery, lihat Jalur resource Cloud Storage.
PROJECT_ID
: project yang berisi koneksi.REGION
: region yang berisi koneksi—misalnya,us
.CONNECTION_ID
: nama koneksi—misalnya,myconnection
.QUERY
: kueri yang Anda kirimkan ke tabel sementara.
Misalnya, perintah berikut membuat dan membuat kueri tabel sementara bernama sales
yang ditautkan ke file CSV yang disimpan di Cloud Storage menggunakan file skema /tmp/sales_schema.json
.
bq query \ --external_table_definition=sales::/tmp/sales_schema.json@CSV=gs://mybucket/sales.csv@us.myconnection \ 'SELECT Region, Total_sales FROM sales'
API
Untuk menjalankan kueri menggunakan API, ikuti langkah-langkah berikut:
- Buat Objek
Job
. - Isi bagian
configuration
dari objekJob
dengan objekJobConfiguration
. - Isi bagian
query
dari objekJobConfiguration
dengan objekJobConfigurationQuery
. - Isi bagian
tableDefinitions
dari objekJobConfigurationQuery
dengan objekExternalDataConfiguration
. Di kolomconnectionId
, tentukan koneksi yang akan digunakan untuk terhubung ke Cloud Storage. - Panggil metode
jobs.insert
untuk menjalankan kueri secara asinkron, atau metodejobs.query
untuk menjalankan kueri secara sinkron, dengan meneruskan objekJob
.
Langkah selanjutnya
- Pelajari cara menggunakan SQL di BigQuery.
- Pelajari tabel BigLake.
- Pelajari kuota BigQuery.