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

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 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 ke asia-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 ke asia-northeast1. Anda dapat menetapkan nilai default untuk lokasi menggunakan file .bigqueryrc.
  • TABLE: nama tabel sementara yang Anda buat.
  • SCHEMA: definisi skema inline dalam format field: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 format gs://bucket_name/[folder_name/]file_pattern.

    Anda dapat memilih beberapa file dari bucket dengan menentukan satu karakter pengganti tanda bintang (*) di file_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 ke asia-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 format gs://bucket_name/[folder_name/]file_pattern.

    Anda dapat memilih beberapa file dari bucket dengan menentukan satu karakter pengganti tanda bintang (*) di file_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:

  1. Buat Objek Job.
  2. Isi bagian configuration dari objek Job dengan objek JobConfiguration.
  3. Isi bagian query dari objek JobConfiguration dengan objek JobConfigurationQuery.
  4. Isi bagian tableDefinitions dari objek JobConfigurationQuery dengan objek ExternalDataConfiguration. Di kolom connectionId, tentukan koneksi yang akan digunakan untuk terhubung ke Cloud Storage.
  5. Panggil metode jobs.insert untuk menjalankan kueri secara asinkron, atau metode jobs.query untuk menjalankan kueri secara sinkron, dengan meneruskan objek Job.

Langkah berikutnya