Membuat tabel eksternal BigLake untuk Apache Iceberg

Tabel eksternal BigLake memungkinkan Anda mengakses tabel Apache Iceberg dengan kontrol akses yang lebih terperinci dalam format hanya baca. Kemampuan ini berbeda dengan tabel BigQuery untuk Apache Iceberg, yang memungkinkan Anda membuat tabel Apache Iceberg di BigQuery dalam format yang dapat ditulis.

Iceberg adalah format tabel open source yang mendukung tabel data berskala petabyte. Spesifikasi terbuka Iceberg memungkinkan Anda menjalankan beberapa mesin kueri pada satu salinan data yang disimpan di penyimpanan objek.

Sebagai administrator BigQuery, Anda dapat menerapkan kontrol akses tingkat baris dan kolom, termasuk penyamaran data pada tabel. Untuk informasi tentang cara menyiapkan kontrol akses di tingkat tabel, lihat Menyiapkan kebijakan kontrol akses. Kebijakan akses tabel juga diterapkan saat Anda menggunakan BigQuery Storage API sebagai sumber data untuk tabel di Dataproc dan Serverless Spark. Tabel BigLake memberikan integrasi tambahan dengan layanan BigQuery lainnya. Untuk daftar lengkap integrasi yang tersedia, lihat Pengantar tabel BigLake.

Anda dapat membuat tabel BigLake Iceberg dengan cara berikut:

  • Dengan BigLake Metastore (direkomendasikan untuk Google Cloud). BigLake Metastore adalah katalog Iceberg kustom. Menggunakan BigLake Metastore adalah metode yang direkomendasikan untuk Google Cloud karena memungkinkan sinkronisasi tabel antara workload Spark dan BigQuery. Untuk melakukannya, Anda dapat menggunakan prosedur tersimpan BigQuery untuk Apache Spark guna melakukan inisialisasi BigLake Metastore dan membuat tabel BigLake Iceberg. Namun, update skema masih mengharuskan Anda menjalankan kueri update di BigQuery.

  • Dengan AWS Glue Data Catalog (direkomendasikan untuk AWS). AWS Glue adalah metode yang direkomendasikan untuk AWS karena merupakan repositori metadata terpusat tempat Anda menentukan struktur dan lokasi data yang disimpan di berbagai layanan AWS dan menyediakan kemampuan seperti penemuan skema otomatis dan integrasi dengan alat analisis AWS.

  • Dengan file metadata JSON Iceberg (direkomendasikan untuk Azure). Jika menggunakan file metadata JSON Iceberg, Anda harus mengupdate file metadata terbaru secara manual setiap kali ada update tabel. Anda dapat menggunakan prosedur tersimpan BigQuery untuk Apache Spark guna membuat tabel BigLake Iceberg yang mereferensikan file metadata Iceberg. Untuk menghindari hal ini, Anda dapat menggunakan BigLake Metastore untuk Google Cloud atau AWS Glue Data Catalog untuk AWS.

    Untuk daftar lengkap batasan, lihat Batasan.

Sebelum memulai

  • Enable the BigQuery Connection, BigQuery Reservation, and BigLake APIs.

    Enable the APIs

  • Jika menggunakan prosedur tersimpan untuk Spark di BigQuery guna membuat tabel BigLake Iceberg, Anda harus mengikuti langkah-langkah berikut:

    1. Buat koneksi Spark.
    2. Siapkan kontrol akses untuk koneksi tersebut.
  • Untuk menyimpan metadata tabel BigLake Iceberg dan file data di Cloud Storage, buat bucket Cloud Storage. Anda harus terhubung ke bucket Cloud Storage untuk mengakses file metadata. Untuk melakukannya, ikuti langkah-langkah berikut:

    1. Buat koneksi resource Cloud.
    2. Siapkan akses untuk koneksi tersebut.
  • Jika Anda menggunakan BigLake Metastore, instal Katalog Kustom Iceberg yang sesuai untuk Apache Spark. Pilih versi Katalog Kustom yang paling cocok dengan versi Iceberg yang Anda gunakan.

    1. Iceberg 1.5.0: gs://spark-lib/biglake/biglake-catalog-iceberg1.5.0-0.1.1-with-dependencies.jar
    2. Iceberg 1.2.0: gs://spark-lib/biglake/biglake-catalog-iceberg1.2.0-0.1.1-with-dependencies.jar
    3. Iceberg 0.14.0: gs://spark-lib/biglake/biglake-catalog-iceberg0.14.0-0.1.1-with-dependencies.jar

Peran yang diperlukan

Guna memastikan bahwa pemanggil BigLake API memiliki izin yang diperlukan untuk membuat tabel BigLake, minta administrator Anda untuk memberikan peran IAM berikut kepada pemanggil BigLake API pada project:

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk membuat tabel BigLake. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk membuat tabel BigLake:

  • bigquery.tables.create
  • bigquery.connections.delegate
  • bigquery.jobs.create

Administrator Anda mungkin juga dapat memberikan izin ini kepada pemanggil BigLake API dengan peran khusus atau peran bawaan lainnya.

Selain itu, agar pengguna BigQuery dapat membuat kueri tabel, akun layanan yang terkait dengan koneksi harus memiliki peran BigLake Viewer (roles/biglake.viewer) dan akses ke bucket Cloud Storage yang berisi data tersebut.

Untuk membuat tabel BigLake Iceberg dengan BigLake Metastore, pemanggil BigLake API akan berubah. Anda harus memberi akun layanan Dataproc atau Spark akses ke bucket Cloud Storage yang berisi data tersebut:

Membuat tabel dengan BigLake Metastore

Sebaiknya buat tabel BigLake Iceberg dengan BigLake Metastore. Anda dapat menggunakan Apache Spark untuk membuat tabel-tabel ini. Cara yang mudah untuk melakukannya adalah menggunakan prosedur tersimpan BigQuery untuk Spark dengan mengikuti langkah-langkah berikut:

  1. Buka halaman BigQuery.

    Buka BigQuery

  2. Di panel Explorer, klik koneksi dalam project yang Anda gunakan untuk membuat resource koneksi.

  3. Untuk membuat prosedur tersimpan untuk Spark, klik Create stored procedure.

  4. Di editor kueri, ubah kode contoh untuk menginisialisasi BigLake Metastore dan membuat tabel eksternal BigLake untuk Iceberg menggunakan pernyataan CREATE PROCEDURE yang muncul:

     # Creates a stored procedure that initializes BLMS and database.
     # Creates a table in the database and populates a few rows of data.
     CREATE OR REPLACE PROCEDURE iceberg_demo.iceberg_setup_3_3 ()
     WITH CONNECTION `PROCEDURE_CONNECTION_PROJECT_ID.PROCEDURE_CONNECTION_REGION.PROCEDURE_CONNECTION_ID`
     OPTIONS(engine="SPARK",
     jar_uris=["gs://spark-lib/biglake/biglake-catalog-iceberg1.2.0-0.1.0-with-dependencies.jar"],
     properties=[
     ("spark.jars.packages","org.apache.iceberg:iceberg-spark-runtime-3.3_2.12:1.2.0"),
     ("spark.sql.catalog.CATALOG", "org.apache.iceberg.spark.SparkCatalog"),
     ("spark.sql.catalog.CATALOG.catalog-impl", "org.apache.iceberg.gcp.biglake.BigLakeCatalog"),
     ("spark.sql.catalog.CATALOG.hms_uri", "HMS_URI"),
     ("spark.sql.catalog.CATALOG.gcp_project", "PROJECT_ID"),
     ("spark.sql.catalog.CATALOG.gcp_location", "LOCATION"),
     ("spark.sql.catalog.CATALOG.blms_catalog", "CATALOG"),
     ("spark.sql.catalog.CATALOG.warehouse", "DATA_WAREHOUSE_URI")
     ]
     )
     LANGUAGE PYTHON AS R'''
     from pyspark.sql import SparkSession
    
     spark = SparkSession \
       .builder \
       .appName("BigLake Iceberg Example") \
       .enableHiveSupport() \
       .getOrCreate()
    
     spark.sql("CREATE NAMESPACE IF NOT EXISTS CATALOG;")
     spark.sql("CREATE DATABASE IF NOT EXISTS CATALOG.CATALOG_DB;")
     spark.sql("DROP TABLE IF EXISTS CATALOG.CATALOG_DB.CATALOG_TABLE;")
    
     # Create a BigLake Metastore table and a BigQuery Iceberg table.
     spark.sql("CREATE TABLE IF NOT EXISTS CATALOG.CATALOG_DB.CATALOG_TABLE (id bigint, demo_name string)
               USING iceberg
               TBLPROPERTIES(bq_table='BQ_DATASET.BQ_TABLE', bq_connection='TABLE_CONNECTION_PROJECT_ID.TABLE_CONNECTION_REGION.TABLE_CONNECTION_ID');
               ")
    
     # Copy a Hive Metastore table to BigLake Metastore. Can be used together with
     #   TBLPROPERTIES `bq_table` to create a BigQuery Iceberg table.
     spark.sql("CREATE TABLE CATALOG.CATALOG_DB.CATALOG_TABLE (id bigint, demo_name string)
                USING iceberg
                TBLPROPERTIES(hms_table='HMS_DB.HMS_TABLE');")
     ''';
    

    Ganti kode berikut:

    • PROCEDURE_CONNECTION_PROJECT_ID: project yang berisi koneksi untuk menjalankan prosedur Spark—misalnya, myproject.

    • PROCEDURE_CONNECTION_REGION: region yang berisi koneksi untuk menjalankan prosedur Spark, misalnya, us.

    • PROCEDURE_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.

    • CATALOG: nama katalog Iceberg yang akan dibuat untuk BigLake Metastore.

      Nilai defaultnya adalah iceberg.

    • HMS_URI: jika ingin menyalin tabel Hive Metastore yang sudah ada ke BigLake Metastore, tentukan URI Hive Metastore.

      Misalnya, thrift://localhost:9083.

    • PROJECT_ID: project ID tempat Anda ingin membuat instance BigLake Metastore.

      Tabel BigLake Iceberg juga dibuat dalam project yang sama.

    • LOCATION: lokasi tempat Anda ingin membuat instance BigLake Metastore.

      BigQuery hanya dapat mengakses instance BigLake Metastore yang disimpan di lokasi yang sama.

    • DATA_WAREHOUSE_URI: URI bucket Cloud Storage yang Anda buat untuk menyimpan file data dan metadata Iceberg.

      Misalnya, gs://mybucket/iceberg-warehouse.

    • CATALOG_DB: nama database yang ingin Anda buat di BigLake Metastore.

      Database ini setara dengan set data BigQuery yang akan berisi tabel BigLake Iceberg.

    • CATALOG_TABLE: nama tabel yang ingin Anda buat di BigLake Metastore.

      Tabel ini setara dengan tabel BigLake Iceberg yang ingin Anda buat.

    • BQ_DATASET: set data BigQuery untuk menampung tabel BigLake Iceberg.

    • BQ_TABLE: tabel BigLake Iceberg yang ingin Anda buat.

    • TABLE_CONNECTION_PROJECT_ID: project yang berisi koneksi untuk membuat tabel BigLake—misalnya, myproject.

    • TABLE_CONNECTION_REGION: region yang berisi koneksi untuk membuat tabel BigLake—misalnya, us.

    • TABLE_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.

      Akun layanan yang terkait dengan koneksi harus memiliki roles/biglake.viewer agar pengguna BigQuery dapat membuat kueri tabel.

    • HMS_DB: jika ingin menyalin tabel Hive Metastore yang sudah ada ke BigLake Metastore, tentukan database Hive Metastore.

    • HMS_TABLE: jika ingin menyalin tabel Hive Metastore yang sudah ada ke BigLake Metastore, tentukan tabel Hive Metastore.

    Untuk informasi tentang konfigurasi katalog Iceberg, lihat Katalog Spark.

  5. Untuk menjalankan prosedur tersimpan, klik Run. Untuk informasi selengkapnya, lihat Memanggil prosedur tersimpan Spark. Tabel eksternal BigLake untuk Iceberg dibuat di BigQuery.

Membuat tabel dengan file metadata

Anda dapat membuat tabel eksternal BigLake untuk Iceberg dengan file metadata JSON. Namun, ini bukan metode yang direkomendasikan karena Anda harus mengupdate URI file metadata JSON secara manual agar tabel BigLake selalu terbaru. Jika URI tidak selalu terbaru, kueri di BigQuery dapat gagal atau memberikan hasil yang berbeda dari mesin kueri lain yang langsung menggunakan katalog Iceberg. Untuk menghindarinya, referensikan instance BigLake Metastore saat Anda membuat tabel BigLake Iceberg.

File metadata tabel Iceberg dibuat di bucket Cloud Storage yang Anda tentukan saat membuat tabel Iceberg menggunakan Spark.

Pilih salah satu opsi berikut:

SQL

Gunakan pernyataan CREATE EXTERNAL TABLE. Contoh berikut membuat tabel BigLake bernama myexternal-table:

  CREATE EXTERNAL TABLE myexternal-table
  WITH CONNECTION `myproject.us.myconnection`
  OPTIONS (
         format = 'ICEBERG',
         uris = ["gs://mybucket/mydata/mytable/metadata/iceberg.metadata.json"]
   )

Ganti nilai uris dengan file metadata JSON terbaru untuk snapshot tabel tertentu.

Anda dapat mengaktifkan wajibkan filter partisi dengan menetapkan tanda require_partition_filter.

bq

Dalam lingkungan command line, gunakan perintah bq mk --table dengan dekorator @connection untuk menentukan koneksi yang akan digunakan di akhir parameter --external_table_definition. Untuk mengaktifkan filter partisi yang diperlukan, gunakan --require_partition_filter.

bq mk 
--table
--external_table_definition=TABLE_FORMAT=URI@projects/CONNECTION_PROJECT_ID/locations/CONNECTION_REGION/connections/CONNECTION_ID
PROJECT_ID:DATASET.EXTERNAL_TABLE

Ganti kode berikut:

  • TABLE_FORMAT: format tabel yang ingin Anda buat

    Dalam kasus ini, ICEBERG.

  • URI: file metadata JSON terbaru untuk snapshot tabel tertentu.

    Misalnya, gs://mybucket/mydata/mytable/metadata/iceberg.metadata.json.

    URI juga dapat mengarah ke lokasi cloud eksternal; seperti Amazon S3 atau Azure Blob Storage.

    • Contoh untuk AWS: s3://mybucket/iceberg/metadata/1234.metadata.json.
    • Contoh untuk Azure: azure://mystorageaccount.blob.core.windows.net/mycontainer/iceberg/metadata/1234.metadata.json.
  • CONNECTION_PROJECT_ID: project yang berisi koneksi untuk membuat tabel BigLake, misalnya, myproject

  • CONNECTION_REGION: region yang berisi koneksi untuk membuat tabel BigLake—misalnya, us

  • CONNECTION_ID: ID koneksi tabel—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: nama set data BigQuery tempat Anda ingin membuat tabel

    Misalnya, mydataset.

  • EXTERNAL_TABLE: nama tabel yang ingin Anda buat

    Misalnya, mytable.

Mengupdate metadata tabel

Jika Anda menggunakan file metadata JSON untuk membuat tabel eksternal BigLake untuk Iceberg, update definisi tabel ke metadata tabel terbaru. Untuk mengupdate skema atau file metadata, pilih salah satu opsi berikut:

bq

  1. Buat file definisi tabel:

    bq mkdef --source_format=ICEBERG \
    "URI" > TABLE_DEFINITION_FILE
    
  2. Gunakan perintah bq update dengan flag --autodetect_schema:

    bq update --autodetect_schema --external_table_definition=TABLE_DEFINITION_FILE
    PROJECT_ID:DATASET.TABLE
    

    Ganti yang berikut ini:

    • URI: Cloud Storage URI dengan file metadata JSON terbaru

      Misalnya, gs://mybucket/us/iceberg/mytable/metadata/1234.metadata.json.

    • TABLE_DEFINITION_FILE: nama file yang berisi skema tabel

    • PROJECT_ID: project ID yang berisi tabel yang ingin Anda update

    • DATASET: set data yang berisi tabel yang ingin Anda update

    • TABLE: tabel yang ingin Anda update

API

Gunakan metode tables.patch dengan properti autodetect_schema yang disetel ke true:

PATCH https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT_ID/datasets/DATASET/tables/TABLE?autodetect_schema=true

Ganti yang berikut ini:

  • PROJECT_ID: project ID yang berisi tabel yang ingin Anda update
  • DATASET: set data yang berisi tabel yang ingin Anda update
  • TABLE: tabel yang ingin Anda update

Dalam isi permintaan, tentukan nilai yang diupdate untuk kolom berikut:

{
     "externalDataConfiguration": {
      "sourceFormat": "ICEBERG",
      "sourceUris": [
        "URI"
      ]
    },
    "schema": null
  }'

Ganti URI dengan file metadata Iceberg terbaru. Contoh: gs://mybucket/us/iceberg/mytable/metadata/1234.metadata.json.

Menyiapkan kebijakan kontrol akses

Anda dapat menggunakan beberapa metode untuk mengontrol akses ke tabel BigLake:

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, lihat Membuat kueri data Iceberg.

Pemetaan data

BigQuery mengonversi jenis data Iceberg menjadi jenis data BigQuery seperti yang ditampilkan dalam tabel berikut:

Jenis data Iceberg Jenis data BigQuery
boolean BOOL
int INT64
long INT64
float FLOAT64
double FLOAT64
Decimal(P/S) NUMERIC or BIG_NUMERIC depending on precision
date DATE
time TIME
timestamp DATETIME
timestamptz TIMESTAMP
string STRING
uuid BYTES
fixed(L) BYTES
binary BYTES
list<Type> ARRAY<Type>
struct STRUCT
map<KeyType, ValueType> ARRAY<Struct<key KeyType, value ValueType>>

Batasan

Tabel BigLake Iceberg memiliki batasan tabel BigLake dan juga batasan berikut:

  • Konfigurasi copy-on-write didukung, tetapi konfigurasi merge-on-read tidak didukung. Untuk informasi selengkapnya, lihat Konfigurasi Iceberg.

  • BigQuery mendukung pruning manifes menggunakan semua fungsi transformasi partisi Iceberg kecuali untuk Bucket. Untuk informasi tentang cara melakukan pruning partisi, lihat Membuat kueri tabel berpartisi. Kueri yang merujuk pada tabel eksternal BigLake untuk Iceberg harus berisi literal dalam predikat dibandingkan dengan kolom yang dipartisi.

  • Hanya file data Apache Parquet yang didukung.

  • Jika Anda menggunakan BigLake Metastore, batasan berikut berlaku:

    • BigLake Metastore tidak didukung di region BigQuery Omni.
    • Saat mengganti nama tabel, tabel tujuan harus berada di database yang sama dengan tabel sumber. Database tabel tujuan harus ditentukan secara eksplisit.
    • Saat memeriksa tabel metadata Iceberg, Anda harus menggunakan nama tabel yang sepenuhnya memenuhi syarat. Contoh, prod.db.table.history.

Biaya

Anda akan dikenai biaya 1 TB dengan harga kueri (per TB) sesuai permintaan untuk setiap 6.250.000 permintaan ke BigLake Metastore dan untuk setiap 625.000 objek yang disimpan di BigLake Metastore. Tarif harga kueri sesuai permintaan bervariasi menurut region. Untuk jumlah permintaan atau objek yang lebih kecil, Anda akan dikenakan biaya potongan yang sesuai dari 1 TB.

Misalnya, jika Anda membuat 6.250.000 permintaan ke BigLake Metastore dan juga menyimpan 312.500 objek di dalamnya, Anda akan dikenai biaya 1,5 TB dengan tarif harga kueri sesuai permintaan untuk region tempat Anda membuat Instance BigLake Metastore.

Perlu filter partisi

Anda dapat mewajibkan penggunaan filter predikat dengan mengaktifkan opsi require partition filter untuk tabel Iceberg. Jika Anda mengaktifkan opsi ini, upaya untuk mengkueri tabel tanpa menentukan klausa WHERE yang selaras dengan setiap file manifes akan menghasilkan error berikut:

Cannot query over table project_id.dataset.table without a
filter that can be used for partition elimination.

Setiap file manifes memerlukan setidaknya satu predikat yang sesuai untuk penghapusan partisi.

Anda dapat mengaktifkan require_partition_filter dengan cara berikut saat membuat tabel Iceberg :

SQL

Gunakan pernyataan CREATE EXTERNAL TABLE.Contoh berikut membuat tabel BigLake bernama TABLE dengan mengaktifkan filter partisi yang diperlukan:

  CREATE EXTERNAL TABLE TABLE
  WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID`
  OPTIONS (
         format = 'ICEBERG',
         uris = [URI],
         require_partition_filter = true
   )

Ganti kode berikut:

  • TABLE: nama tabel yang ingin Anda buat.
  • PROJECT_ID: project ID yang berisi tabel yang ingin Anda buat.
  • REGION: Lokasi tempat Anda ingin membuat tabel Iceberg.
  • CONNECTION_ID: ID koneksi. Misalnya, myconnection.

  • URI: Cloud Storage URI dengan file metadata JSON terbaru.

    Misalnya, gs://mybucket/us/iceberg/mytable/metadata/1234.metadata.json.

    URI juga dapat mengarah ke lokasi cloud eksternal; seperti Amazon S3 atau Azure Blob Storage.

    • Contoh untuk AWS: s3://mybucket/iceberg/metadata/1234.metadata.json.
    • Contoh untuk Azure: azure://mystorageaccount.blob.core.windows.net/mycontainer/iceberg/metadata/1234.metadata.json.

bq

Gunakan perintah bq mk --table dengan dekorator @connection untuk menentukan koneksi yang akan digunakan di akhir parameter --external_table_definition. Gunakan --require_partition_filter untuk mengaktifkan filter partisi yang diperlukan. Contoh berikut membuat tabel BigLake bernama TABLE dengan mengaktifkan filter partisi yang diperlukan:

bq mk \
    --table \
    --external_table_definition=ICEBERG=URI@projects/CONNECTION_PROJECT_ID/locations/CONNECTION_REGION/connections/CONNECTION_ID \
    PROJECT_ID:DATASET.EXTERNAL_TABLE \
    --require_partition_filter

Ganti kode berikut:

  • URI: file metadata JSON terbaru untuk snapshot tabel tertentu

    Misalnya, gs://mybucket/mydata/mytable/metadata/iceberg.metadata.json.

    URI juga dapat mengarah ke lokasi cloud eksternal; seperti Amazon S3 atau Azure Blob Storage.

    • Contoh untuk AWS: s3://mybucket/iceberg/metadata/1234.metadata.json.
    • Contoh untuk Azure: azure://mystorageaccount.blob.core.windows.net/mycontainer/iceberg/metadata/1234.metadata.json.
  • CONNECTION_PROJECT_ID: project yang berisi koneksi untuk membuat tabel BigLake—misalnya, myproject

  • CONNECTION_REGION: region yang berisi koneksi untuk membuat tabel BigLake. Misalnya, us.

  • CONNECTION_ID: : ID koneksi. Misalnya, myconnection.

    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

  • DATASET: nama BigQuery

    set data yang berisi tabel yang ingin Anda perbarui. Misalnya, mydataset.

  • EXTERNAL_TABLE: nama tabel yang ingin Anda buat

    Misalnya, mytable.

Anda juga dapat memperbarui tabel Iceberg untuk mengaktifkan filter partisi yang diperlukan.

Jika Anda tidak mengaktifkan opsi wajibkan filter partisi saat membuat tabel berpartisi, Anda dapat memperbarui tabel untuk menambahkan opsi tersebut.

bq

Gunakan perintah bq update dan berikan flag --require_partition_filter.

Contoh:

Untuk mengupdate mypartitionedtable di mydataset dalam project default Anda, masukkan:

bq update --require_partition_filter PROJECT_ID:DATASET.TABLE

Langkah selanjutnya