Membuat tabel BigLake Delta Lake

Untuk mendaftar ke pratinjau ini, lengkapi formulir berikut. Untuk meminta masukan atau dukungan terkait fitur ini, kirim email ke [email protected].

BigLake memungkinkan Anda mengakses tabel Delta Lake dengan kontrol akses yang lebih terperinci. Delta Lake adalah format penyimpanan data tabular open source yang dikembangkan oleh Databricks yang mendukung tabel data berskala petabyte.

BigQuery mendukung fitur berikut dengan tabel Delta Lake:

  • Delegasi akses: Buat kueri data terstruktur di penyimpanan data eksternal dengan delegasi akses. Delegasi akses memisahkan akses ke tabel Delta Lake dari akses ke datastore yang mendasarinya.
  • Kontrol akses terperinci: Menerapkan keamanan terperinci pada tingkat tabel, termasuk keamanan tingkat baris dan tingkat kolom. Untuk tabel Delta Lake berdasarkan Cloud Storage, Anda juga dapat menggunakan penyamaran data dinamis.
  • Evolusi skema: Perubahan skema pada tabel Delta Lake terdeteksi otomatis. Perubahan pada skema akan tercermin di tabel BigQuery.

Tabel Delta Lake juga mendukung semua fitur BigLake saat Anda mengonfigurasinya sebagai tabel BigLake.

Sebelum memulai

  1. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  2. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  3. Enable the BigQuery Connection and BigQuery Reservation APIs.

    Enable the APIs

  4. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

  5. Pastikan Anda memiliki set data BigQuery.

  6. Pastikan versi Google Cloud SDK Anda adalah 366.0.0 atau yang lebih baru:

    gcloud version
    

    Jika perlu, update Google Cloud SDK.

  7. Buat koneksi resource Cloud berdasarkan sumber data eksternal Anda, dan berikan 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

Izin berikut diperlukan untuk membuat tabel Delta Lake:

  • 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 Anda untuk memberi Anda izin ini atau membuat tabel Delta Lake untuk Anda.

Selain itu, agar pengguna BigQuery dapat membuat kueri tabel, akun layanan yang terkait dengan koneksi harus memiliki izin dan akses berikut:

  • Peran BigQuery Viewer (roles/bigquery.viewer)
  • Peran BigQuery Connection User (roles/bigquery.connectionUser)
  • Akses ke bucket Cloud Storage yang berisi data tersebut

Untuk mengetahui informasi selengkapnya tentang peran dan izin Identity and Access Management di BigQuery, lihat Peran dan izin yang telah ditetapkan.

Membuat tabel dengan Delta Lake

Untuk membuat tabel di Delta Lake, ikuti langkah-langkah berikut.

SQL

Gunakan pernyataan CREATE EXTERNAL TABLE untuk membuat tabel Delta Lake:

CREATE EXTERNAL TABLE `PROJECT_ID.DATASET.DELTALAKE_TABLE_NAME`
WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID`
OPTIONS (
  format ="DELTA_LAKE",
  uris=['DELTA_TABLE_GCS_BASE_PATH']);

Ganti nilai berikut:

  • PROJECT_ID: ID project tempat Anda ingin membuat tabel Delta Lake
  • DATASET: set data BigQuery untuk memuat tabel Delta Lake
  • DELTALAKE_TABLE_NAME: nama tabel Delta Lake Anda
  • REGION: wilayah yang berisi koneksi untuk membuat tabel Delta Lake—misalnya, us
  • CONNECTION_ID: ID koneksi—misalnya, myconnection

    Saat Anda melihat detail koneksi di Google Cloud Console, ID koneksi adalah nilai di bagian terakhir dari ID koneksi yang sepenuhnya memenuhi syarat yang ditampilkan dalam Connection ID, misalnya projects/myproject/locations/connection_location/connections/myconnection.

  • DELTA_TABLE_GCS_BASE_PATH: awalan tabel Delta Lake

bq

Di lingkungan command line, gunakan perintah bq mk untuk membuat tabel Delta Lake:

bq mk --table --external_table_definition=DEFINITION_FILE PROJECT_ID:DATASET.DELTALAKE_TABLE_NAME

Ganti nilai berikut:

  • DEFINITION_FILE: jalur ke file definisi tabel
  • PROJECT_ID: ID project tempat Anda ingin membuat tabel Delta Lake
  • DATASET: set data BigQuery untuk memuat tabel Delta Lake
  • DELTALAKE_TABLE_NAME: nama tabel Delta Lake Anda

REST

Gunakan BigQuery API untuk membuat tabel Delta Lake dengan memanggil metode API tables.insert:

REQUEST='{
  "autodetect": true,
  "externalDataConfiguration": {
  "sourceFormat": "DELTA_LAKE",
  "connectionId": "PROJECT_ID.REGION.CONNECTION_ID",
  "sourceUris": [
    "DELTA_TABLE_GCS_BASE_PATH"
  ],
 },
"tableReference": {
"tableId": "DELTALAKE_TABLE_NAME"
}
}'

echo $REQUEST | curl -X POST -d @- -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud auth print-access-token)" https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT_ID/datasets/DATASET/tables?autodetect_schema=true

Ganti nilai berikut:

  • PROJECT_ID: ID project tempat Anda ingin membuat tabel Delta Lake
  • REGION: wilayah yang berisi koneksi untuk membuat tabel Delta Lake—misalnya, us
  • CONNECTION_ID: ID koneksi—misalnya, myconnection

    Saat Anda melihat detail koneksi di Google Cloud Console, ID koneksi adalah nilai di bagian terakhir dari ID koneksi yang sepenuhnya memenuhi syarat yang ditampilkan dalam Connection ID, misalnya projects/myproject/locations/connection_location/connections/myconnection.

  • DELTA_TABLE_GCS_BASE_PATH: awalan tabel Delta Lake

  • DELTALAKE_TABLE_NAME: nama tabel Delta Lake Anda

  • DATASET: set data BigQuery untuk memuat tabel Delta Lake

Saat Anda membuat tabel Delta Lake, awalan Delta Lake digunakan sebagai URI untuk tabel tersebut. Misalnya, untuk tabel yang memiliki log di bucket gs://bucket/warehouse/basictable/_delta_log, URI tabelnya adalah gs://bucket/warehouse/basictable. Saat Anda menjalankan kueri di tabel Delta Lake, BigQuery akan membaca data di bawah awalan untuk mengidentifikasi versi tabel saat ini, lalu menghitung metadata dan file untuk tabel tersebut.

Perbarui tabel Delta Lake

Untuk memperbarui (menyegarkan) skema tabel Delta Lake, ikuti langkah-langkah berikut.

bq

Di lingkungan command line, gunakan perintah bq update untuk memperbarui (memperbarui) skema tabel Delta Lake:

bq update --autodetect_schema PROJECT_ID:DATASET.DELTALAKE_TABLE_NAME

Ganti nilai berikut:

  • PROJECT_ID: ID project tempat Anda ingin membuat tabel Delta Lake
  • DATASET: set data BigQuery untuk memuat tabel Delta Lake
  • DELTALAKE_TABLE_NAME: nama tabel Delta Lake Anda

REST

Gunakan BigQuery API untuk memperbarui tabel Delta Lake dengan memanggil metode API tables.patch:

REQUEST='{
  "externalDataConfiguration": {
    "sourceFormat": "DELTA_LAKE",
    "sourceUris": [
      "DELTA_TABLE_GCS_BASE_PATH"
    ],
    "connectionId": "PROJECT_ID.REGION.CONNECTION_ID",
    "autodetect": true
  },
  "tableReference": {
    "tableId": "DELTALAKE_TABLE_NAME"
  }
}'
echo $REQUEST |curl -X POST -d @- -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud auth print-access-token)" https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT_ID/datasets/DATASET/tables

Ganti nilai berikut:

  • DELTA_TABLE_GCS_BASE_PATH: awalan tabel Delta Lake
  • PROJECT_ID: ID project tempat Anda ingin membuat tabel Delta Lake
  • REGION: wilayah yang berisi koneksi untuk membuat tabel Delta Lake—misalnya, us
  • CONNECTION_ID: ID koneksi—misalnya, myconnection

    Saat Anda melihat detail koneksi di Google Cloud Console, ID koneksi adalah nilai di bagian terakhir dari ID koneksi yang sepenuhnya memenuhi syarat yang ditampilkan dalam Connection ID, misalnya projects/myproject/locations/connection_location/connections/myconnection.

  • DELTALAKE_TABLE_NAME: nama tabel Delta Lake Anda

  • DATASET: set data BigQuery untuk memuat tabel Delta Lake

Membuat kueri tabel Delta Lake

Setelah membuat tabel BigLake Delta Lake, Anda dapat membuat kuerinya menggunakan sintaksis GoogleSQL, sama seperti yang dilakukan pada tabel BigQuery standar. Contoh:

SELECT field1, field2 FROM mydataset.my_cloud_storage_table;

Untuk informasi selengkapnya, baca artikel Membuat kueri data Cloud Storage di tabel BigLake.

Koneksi eksternal yang terkait dengan akun layanan digunakan untuk terhubung ke datastore. Karena akun layanan mengambil data dari datastore, pengguna hanya memerlukan akses ke tabel Delta Lake.

Pemetaan data

BigQuery mengonversi jenis data Delta Lake menjadi jenis data BigQuery seperti yang ditunjukkan dalam tabel berikut:

Jenis Delta Lake Jenis BigQuery
boolean BOOL
byte INT64
int INT64
long INT64
float FLOAT64
double FLOAT64
Decimal(P/S) NUMERIC atau BIG_NUMERIC bergantung pada presisi
date DATE
time TIME
timestamp (not partition column) TIMESTAMP
timestamp (partition column) DATETIME
string STRING
binary BYTES
array<Type> ARRAY<Type>
struct STRUCT
map<KeyType, ValueType> ARRAY<Struct<key KeyType, value ValueType>>

Batasan

Tabel Delta Lake memiliki batasan tabel BigLake dan juga batasan berikut:

  • Mendukung versi pembaca 3 Delta Lake dengan vektor penghapusan dan pemetaan kolom.
  • Anda harus mencantumkan versi pembaca dalam file entri log terakhir. Misalnya, tabel baru harus menyertakan 00000..0.json.
  • Operasi pengambilan data perubahan (CDC) tidak didukung. Semua operasi CDC yang ada akan diabaikan.
  • Skema terdeteksi secara otomatis. Memodifikasi skema menggunakan BigQuery tidak didukung.
  • Nama kolom tabel harus mematuhi batasan nama kolom BigQuery.
  • Tampilan terwujud tidak didukung.
  • Read API tidak didukung untuk Delta Lake.