Tabel terkelola Apache Iceberg

Tabel terkelola Apache Iceberg (sebelumnya tabel BigLake untuk Apache Iceberg di BigQuery) menyediakan fondasi untuk membangun lakehouse berformat terbuka di Google Cloud. Tabel terkelola Iceberg menawarkan pengalaman terkelola sepenuhnya yang sama seperti tabel BigQuery standar, tetapi menyimpan data di bucket penyimpanan milik pelanggan. Tabel terkelola Iceberg mendukung format tabel Iceberg terbuka untuk interoperabilitas yang lebih baik dengan mesin komputasi open source dan pihak ketiga pada satu salinan data.

Tabel terkelola Iceberg mendukung fitur berikut:

Arsitektur

Tabel terkelola Iceberg menghadirkan kemudahan pengelolaan resource BigQuery ke tabel yang berada di bucket cloud Anda sendiri. Anda dapat menggunakan BigQuery dan mesin komputasi open source pada tabel ini tanpa memindahkan data dari bucket yang Anda kontrol. Anda harus mengonfigurasi bucket Cloud Storage sebelum mulai menggunakan tabel terkelola Iceberg.

Penggunaan tabel terkelola Iceberg memiliki implikasi berikut pada bucket Anda:

  • BigQuery membuat file data baru di bucket sebagai respons terhadap permintaan tulis dan pengoptimalan penyimpanan latar belakang, seperti pernyataan DML dan streaming.
  • Pemadatan dan pengelompokan otomatis dilakukan pada file data di bucket. Setelah masa berlaku periode perjalanan waktu berakhir, file data akan dibersihkan. Namun, jika tabel dihapus, file data terkait tidak akan dibersihkan. Untuk mengetahui informasi selengkapnya, lihat Pengoptimalan penyimpanan.

Membuat tabel terkelola Iceberg mirip dengan membuat tabel BigQuery. Karena menyimpan data dalam format terbuka di Cloud Storage, Anda harus melakukan hal berikut:

  • Tentukan Koneksi resource Cloud dengan WITH CONNECTION guna mengonfigurasi kredensial koneksi untuk BigQuery agar dapat mengakses Cloud Storage.
  • Tentukan format file penyimpanan data sebagai PARQUET dengan pernyataan file_format = PARQUET.
  • Tentukan format tabel metadata open source sebagai ICEBERG dengan pernyataan table_format = ICEBERG.

Praktik terbaik

Mengubah atau menambahkan file secara langsung ke bucket di luar BigQuery dapat menyebabkan hilangnya data atau error yang tidak dapat dipulihkan. Tabel berikut menjelaskan kemungkinan skenario:

Operasi Konsekuensi Pencegahan
Menambahkan file baru ke bucket di luar BigQuery. Kehilangan data: File atau objek baru yang ditambahkan di luar BigQuery tidak dilacak oleh BigQuery. File yang tidak dilacak akan dihapus oleh proses pembersihan sampah memori di latar belakang. Menambahkan data secara eksklusif melalui BigQuery. Dengan demikian, BigQuery dapat melacak file dan mencegahnya dihapus oleh pembersihan sampah memori.
Untuk mencegah penambahan yang tidak disengaja dan kehilangan data, sebaiknya batasi izin tulis alat eksternal pada bucket yang berisi tabel yang dikelola Iceberg.
Membuat tabel terkelola Iceberg baru di awalan yang tidak kosong. Kehilangan data: Data yang ada tidak dilacak oleh BigQuery, sehingga file ini dianggap tidak dilacak, dan dihapus oleh proses pembersihan sampah memori di latar belakang. Hanya buat tabel terkelola Iceberg baru di awalan kosong.
Mengubah atau mengganti file data tabel terkelola Iceberg. Kehilangan data: Pada modifikasi atau penggantian eksternal, tabel gagal dalam pemeriksaan konsistensi dan menjadi tidak dapat dibaca. Kueri terhadap tabel akan gagal.
Tidak ada cara mandiri untuk memulihkan dari titik ini. Hubungi dukungan untuk mendapatkan bantuan pemulihan data.
Mengubah data secara eksklusif melalui BigQuery. Dengan demikian, BigQuery dapat melacak file dan mencegahnya dihapus oleh pembersihan sampah memori.
Untuk mencegah penambahan yang tidak disengaja dan kehilangan data, sebaiknya batasi izin tulis alat eksternal pada bucket yang berisi tabel yang dikelola Iceberg.
Buat dua tabel terkelola Iceberg pada URI yang sama atau tumpang-tindih. Kehilangan data: BigQuery tidak menjembatani instance URI yang identik dari tabel terkelola Iceberg. Proses pembersihan sampah memori latar belakang untuk setiap tabel akan menganggap file tabel yang berlawanan sebagai tidak terlacak, dan menghapusnya, sehingga menyebabkan kehilangan data. Gunakan URI unik untuk setiap tabel terkelola Iceberg.

Praktik terbaik konfigurasi bucket Cloud Storage

Konfigurasi bucket Cloud Storage dan koneksinya dengan BigQuery berdampak langsung pada performa, biaya, integritas data, keamanan, dan tata kelola tabel terkelola Iceberg Anda. Berikut adalah praktik terbaik untuk membantu konfigurasi ini:

  • Pilih nama yang dengan jelas menunjukkan bahwa bucket hanya ditujukan untuk tabel terkelola Iceberg.

  • Pilih bucket Cloud Storage satu region yang ditempatkan di region yang sama dengan set data BigQuery Anda. Koordinasi ini meningkatkan performa dan menurunkan biaya dengan menghindari biaya transfer data.

  • Secara default, Cloud Storage menyimpan data di kelas penyimpanan Standard, yang memberikan performa yang memadai. Untuk mengoptimalkan biaya penyimpanan data, Anda dapat mengaktifkan Autoclass untuk mengelola transisi kelas penyimpanan secara otomatis. Autoclass dimulai dengan kelas penyimpanan Standard Storage dan memindahkan objek yang tidak diakses ke kelas yang semakin jarang diakses untuk mengurangi biaya penyimpanan. Saat objek dibaca lagi, objek tersebut akan dipindahkan kembali ke kelas Standard.

  • Aktifkan akses level bucket yang seragam dan pencegahan akses publik.

  • Pastikan peran yang diperlukan ditetapkan ke pengguna dan akun layanan yang benar.

  • Untuk mencegah penghapusan atau kerusakan data yang tidak disengaja di bucket Cloud Storage, batasi izin tulis dan hapus untuk sebagian besar pengguna di organisasi Anda. Anda dapat melakukannya dengan menetapkan kebijakan izin bucket dengan kondisi yang menolak permintaan PUT dan DELETE untuk semua pengguna, kecuali yang Anda tentukan.

  • Terapkan kunci enkripsi yang dikelola Google atau yang dikelola pelanggan untuk perlindungan ekstra pada data sensitif.

  • Aktifkan logging audit untuk transparansi operasional, pemecahan masalah, dan pemantauan akses data.

  • Pertahankan kebijakan penghapusan sementara default (retensi 7 hari) untuk melindungi dari penghapusan yang tidak disengaja. Namun, jika Anda menemukan bahwa data telah dihapus, hubungi dukungan daripada memulihkan objek secara manual, karena objek yang ditambahkan atau diubah di luar BigQuery tidak dilacak oleh metadata BigQuery.

  • Pengubahan ukuran file adaptif, pengelompokan otomatis, dan pembersihan sampah memori diaktifkan secara otomatis dan membantu mengoptimalkan performa dan biaya file.

  • Hindari fitur Cloud Storage berikut, karena tidak didukung untuk tabel terkelola Iceberg:

Anda dapat menerapkan praktik terbaik ini dengan membuat bucket menggunakan perintah berikut:

gcloud storage buckets create gs://BUCKET_NAME \
    --project=PROJECT_ID \
    --location=LOCATION \
    --enable-autoclass \
    --public-access-prevention \
    --uniform-bucket-level-access

Ganti kode berikut:

  • BUCKET_NAME: nama untuk bucket baru Anda
  • PROJECT_ID: ID project Anda
  • LOCATION: lokasi untuk bucket baru Anda

Alur kerja tabel terkelola Iceberg

Bagian berikut menjelaskan cara membuat, memuat, mengelola, dan mengkueri tabel terkelola Iceberg.

Sebelum memulai

Sebelum membuat dan menggunakan tabel terkelola Iceberg, pastikan Anda telah menyiapkan koneksi resource Cloud ke bucket penyimpanan. Koneksi Anda memerlukan izin tulis pada bucket penyimpanan, seperti yang ditentukan di bagian Peran yang diperlukan berikut. Untuk mengetahui informasi selengkapnya tentang peran dan izin yang diperlukan untuk koneksi, lihat Mengelola koneksi.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan agar BigQuery dapat mengelola tabel di project Anda, minta administrator untuk memberi Anda peran IAM berikut:

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

Peran bawaan ini berisi izin yang diperlukan agar BigQuery dapat mengelola tabel di project Anda. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan agar BigQuery dapat mengelola tabel di project Anda:

  • Semua:
    • bigquery.connections.delegate di project Anda
    • bigquery.jobs.create di project Anda
    • bigquery.readsessions.create di project Anda
    • bigquery.tables.create di project Anda
    • bigquery.tables.get di project Anda
    • bigquery.tables.getData di project Anda
    • storage.buckets.get di bucket Anda
    • storage.objects.create di bucket Anda
    • storage.objects.delete di bucket Anda
    • storage.objects.get di bucket Anda
    • storage.objects.list di bucket Anda

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Membuat tabel terkelola Iceberg

Untuk membuat tabel terkelola Iceberg, pilih salah satu metode berikut:

SQL

CREATE TABLE [PROJECT_ID.]DATASET_ID.TABLE_NAME (
COLUMN DATA_TYPE[, ...]
)
CLUSTER BY CLUSTER_COLUMN_LIST
WITH CONNECTION {CONNECTION_NAME | DEFAULT}
OPTIONS (
file_format = 'PARQUET',
table_format = 'ICEBERG',
storage_uri = 'STORAGE_URI');

Ganti kode berikut:

  • PROJECT_ID: project yang berisi set data. Jika tidak ditentukan, perintah akan mengasumsikan project default.
  • DATASET_ID: set data yang sudah ada.
  • TABLE_NAME: nama tabel yang Anda buat.
  • DATA_TYPE: jenis data informasi yang terdapat dalam kolom.
  • CLUSTER_COLUMN_LIST (opsional): daftar yang dipisahkan koma yang berisi hingga empat kolom. Kolom tersebut harus berupa kolom tingkat atas yang tidak berulang.
  • CONNECTION_NAME: nama koneksi. Contoh, myproject.us.myconnection. Untuk menggunakan koneksi default, tentukan DEFAULT, bukan nama koneksi.
  • STORAGE_URI: Cloud Storage URI yang sepenuhnya memenuhi syarat. Contohnya, gs://mybucket/table.

bq

bq --project_id=PROJECT_ID mk \
    --table \
    --file_format=PARQUET \
    --table_format=ICEBERG \
    --connection_id=CONNECTION_NAME \
    --storage_uri=STORAGE_URI \
    --schema=COLUMN_NAME:DATA_TYPE[, ...] \
    --clustering_fields=CLUSTER_COLUMN_LIST \
    DATASET_ID.MANAGED_TABLE_NAME

Ganti kode berikut:

  • PROJECT_ID: project yang berisi set data. Jika tidak ditentukan, perintah akan mengasumsikan project default.
  • CONNECTION_NAME: nama koneksi. Contoh, myproject.us.myconnection.
  • STORAGE_URI: Cloud Storage URI yang sepenuhnya memenuhi syarat. Contohnya, gs://mybucket/table.
  • COLUMN_NAME: nama kolom.
  • DATA_TYPE: jenis data informasi yang terdapat dalam kolom.
  • CLUSTER_COLUMN_LIST (opsional): daftar yang dipisahkan koma yang berisi hingga empat kolom. Kolom tersebut harus berupa kolom tingkat atas yang tidak berulang.
  • DATASET_ID: ID set data yang ada.
  • MANAGED_TABLE_NAME: nama tabel yang Anda buat.

API

Panggil metode tables.insert' dengan resource tabel yang ditentukan, mirip dengan berikut ini:

{
"tableReference": {
  "tableId": "TABLE_NAME"
},
"biglakeConfiguration": {
  "connectionId": "CONNECTION_NAME",
  "fileFormat": "PARQUET",
  "tableFormat": "ICEBERG",
  "storageUri": "STORAGE_URI"
},
"schema": {
  "fields": [
    {
      "name": "COLUMN_NAME",
      "type": "DATA_TYPE"
    }
    [, ...]
  ]
}
}

Ganti kode berikut:

  • TABLE_NAME: nama tabel yang Anda buat.
  • CONNECTION_NAME: nama koneksi. Contoh, myproject.us.myconnection.
  • STORAGE_URI: Cloud Storage URI yang sepenuhnya memenuhi syarat. Karakter pengganti juga didukung. Contoh, gs://mybucket/table.
  • COLUMN_NAME: nama kolom.
  • DATA_TYPE: jenis data informasi yang terdapat dalam kolom.

Mengimpor data ke tabel terkelola Iceberg

Bagian berikut menjelaskan cara mengimpor data dari berbagai format tabel ke tabel terkelola Iceberg.

Memuat data standar dari file datar

Tabel terkelola Iceberg menggunakan tugas pemuatan BigQuery untuk memuat file eksternal ke dalam tabel terkelola Iceberg. Jika Anda sudah memiliki tabel terkelola Iceberg, ikuti panduan CLI bq load atau panduan SQL LOAD untuk memuat data eksternal. Setelah memuat data, file Parquet baru akan ditulis ke folder STORAGE_URI/data.

Jika petunjuk sebelumnya digunakan tanpa tabel terkelola Iceberg yang ada, tabel BigQuery akan dibuat.

Lihat contoh khusus alat berikut untuk pemuatan batch ke tabel terkelola Iceberg:

SQL

LOAD DATA INTO MANAGED_TABLE_NAME
FROM FILES (
uris=['STORAGE_URI'],
format='FILE_FORMAT');

Ganti kode berikut:

  • MANAGED_TABLE_NAME: nama tabel terkelola Iceberg yang ada.
  • STORAGE_URI: Cloud Storage URI yang sepenuhnya memenuhi syarat atau daftar URI yang dipisahkan koma. Karakter pengganti juga didukung. Contoh, gs://mybucket/table.
  • FILE_FORMAT: format tabel sumber. Untuk format yang didukung, lihat baris format di load_option_list.

bq

bq load \
  --source_format=FILE_FORMAT \
  MANAGED_TABLE \
  STORAGE_URI

Ganti kode berikut:

  • FILE_FORMAT: format tabel sumber. Untuk format yang didukung, lihat baris format di load_option_list.
  • MANAGED_TABLE_NAME: nama tabel terkelola Iceberg yang ada.
  • STORAGE_URI: Cloud Storage URI yang sepenuhnya memenuhi syarat atau daftar URI yang dipisahkan koma. Karakter pengganti juga didukung. Contoh, gs://mybucket/table.

Pemuatan standar dari file yang dipartisi Apache Hive

Anda dapat memuat file yang dipartisi Hive ke dalam tabel terkelola Iceberg menggunakan tugas pemuatan BigQuery standar. Untuk mengetahui informasi selengkapnya, baca Memuat data yang dipartisi secara eksternal.

Memuat data streaming dari Pub/Sub

Anda dapat memuat data streaming ke dalam tabel terkelola Iceberg menggunakan langganan BigQuery Pub/Sub.

Memuat data streaming menggunakan kueri berkelanjutan

Anda dapat terus memproses dan menulis data streaming dari BigQuery ke tabel terkelola Iceberg menggunakan kueri berkelanjutan BigQuery dengan pernyataan DML INSERT. Dengan begitu, Anda dapat melakukan ETL terbalik, pengayaan data, dan pemfilteran secara real-time di lakehouse berformat terbuka.

Sebelum menjalankan kueri berkelanjutan, pastikan tabel terkelola Iceberg target ada dan pengguna atau akun layanan memiliki izin yang diperlukan pada tabel, koneksi resource Google Cloud , dan bucket Cloud Storage yang mendasarinya.

Untuk petunjuk penyiapan dan contoh SQL, lihat Menulis data ke tabel terkelola BigQuery atau Apache Iceberg.

Mengekspor data dari tabel terkelola Iceberg

Bagian berikut menjelaskan cara mengekspor data dari tabel terkelola Iceberg ke berbagai format tabel.

Mengekspor data ke dalam format datar

Untuk mengekspor tabel terkelola Iceberg ke dalam format datar, gunakan pernyataan EXPORT DATA dan pilih format tujuan. Untuk mengetahui informasi selengkapnya, lihat Mengekspor data.

Membuat snapshot metadata tabel terkelola Iceberg

Untuk membuat snapshot metadata tabel terkelola Iceberg, ikuti langkah-langkah berikut:

  1. Ekspor metadata ke dalam format Iceberg V2 dengan pernyataan SQL EXPORT TABLE METADATA.

  2. Opsional: Jadwalkan pemuatan ulang snapshot metadata Iceberg. Untuk memuat ulang snapshot metadata Iceberg berdasarkan interval waktu yang ditetapkan, gunakan kueri terjadwal.

  3. Opsional: Aktifkan pemuatan ulang otomatis metadata untuk project Anda agar snapshot metadata tabel Iceberg otomatis diperbarui pada setiap mutasi tabel. Untuk mengaktifkan pemuatan ulang otomatis metadata, hubungi bigquery-tables-for-apache-iceberg-help@google.com. Biaya EXPORT METADATA diterapkan pada setiap operasi pemuatan ulang.

Contoh berikut membuat kueri terjadwal bernama My Scheduled Snapshot Refresh Query menggunakan pernyataan DDL EXPORT TABLE METADATA FROM mydataset.test. Pernyataan DDL berjalan setiap 24 jam.

bq query \
    --use_legacy_sql=false \
    --display_name='My Scheduled Snapshot Refresh Query' \
    --schedule='every 24 hours' \
    'EXPORT TABLE METADATA FROM mydataset.test'

Melihat snapshot metadata tabel terkelola Iceberg

Setelah memuat ulang snapshot metadata tabel terkelola Iceberg, Anda dapat menemukan snapshot di URI Cloud Storage tempat tabel terkelola Iceberg awalnya dibuat. Folder /data berisi shard data file Parquet, dan folder /metadata berisi snapshot metadata tabel terkelola Iceberg.

SELECT
  table_name,
  REGEXP_EXTRACT(ddl, r"storage_uri\s*=\s*\"([^\"]+)\"") AS storage_uri
FROM
  `mydataset`.INFORMATION_SCHEMA.TABLES;

Perhatikan bahwa mydataset dan table_name adalah placeholder untuk set data dan tabel Anda yang sebenarnya.

Membaca tabel terkelola Iceberg dengan Spark

Contoh berikut menyiapkan lingkungan Anda untuk menggunakan Spark SQL dengan Spark, lalu menjalankan kueri untuk mengambil data dari tabel terkelola Iceberg yang ditentukan.

spark-sql \
  --packages org.apache.iceberg:iceberg-spark-runtime-ICEBERG_VERSION_NUMBER \
  --conf spark.sql.catalog.CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog \
  --conf spark.sql.catalog.CATALOG_NAME.type=hadoop \
  --conf spark.sql.catalog.CATALOG_NAME.warehouse='BUCKET_PATH' \

# Query the table
SELECT * FROM CATALOG_NAME.FOLDER_NAME;

Ganti kode berikut:

  • ICEBERG_VERSION_NUMBER: versi runtime saat ini. Download versi terbaru dari rilis Iceberg.
  • CATALOG_NAME: katalog untuk mereferensikan tabel terkelola Iceberg Anda.
  • BUCKET_PATH: jalur ke bucket yang berisi file tabel. Contoh, gs://mybucket/.
  • FOLDER_NAME: folder yang berisi file tabel. Contoh, myfolder.

Mengubah tabel terkelola Iceberg

Untuk mengubah tabel terkelola Iceberg, ikuti langkah-langkah yang ditunjukkan dalam Mengubah skema tabel.

Menggunakan transaksi multi-pernyataan

Anda dapat menggunakan transaksi multi-pernyataan dengan tabel terkelola Iceberg dengan cara yang sama seperti yang Anda lakukan dengan tabel BigQuery standar. Transaksi multi-pernyataan umum digunakan untuk melakukan mutasi pada beberapa tabel secara bersamaan atau untuk melakukan mutasi pada satu tabel dalam beberapa tahap. Transaksi multi-pernyataan menjamin properti ACID dan mendukung snapshot isolation.

Batasan transaksi multi-pernyataan standar berlaku.

Menggunakan partisi

Anda dapat menggunakan partisi tabel dengan tabel terkelola Iceberg dengan cara yang mirip dengan tabel BigQuery standar. Anda mempartisi tabel dengan menentukan kolom partisi, yang digunakan untuk menyegmentasi tabel. Jenis kolom berikut didukung untuk tabel terkelola Iceberg:

  • DATE
  • DATETIME
  • TIMESTAMP

Mempartisi tabel pada kolom DATE, DATETIME, atau TIMESTAMP dikenal sebagai partisi kolom unit waktu. Anda dapat memilih apakah partisi memiliki perincian per jam, harian, bulanan, atau tahunan.

Tabel terkelola Iceberg juga mendukung pengelompokan dan penggabungan tabel yang dikelompokkan dan berpartisi.

Batasan partisi

Membuat tabel terkelola Iceberg berpartisi

Untuk membuat tabel terkelola Iceberg yang dipartisi, ikuti petunjuk untuk membuat tabel terkelola Iceberg standar, dan sertakan salah satu hal berikut, bergantung pada lingkungan Anda:

Anda dapat menetapkan dan memperbarui masa berlaku partisi dengan cara yang sama seperti yang Anda lakukan pada tabel BigQuery standar. Partisi yang sudah tidak berlaku akan dibersihkan setelah periode perjalanan waktu. Jika Anda menambahkan data ke partisi yang sudah tidak berlaku, data tersebut akan langsung tidak berlaku.

Mengubah dan membuat kueri tabel terkelola Iceberg yang dipartisi

Pernyataan dan kueri bahasa pengolahan data (DML) BigQuery untuk tabel terkelola Iceberg yang dipartisi sama dengan tabel terkelola Iceberg standar. BigQuery secara otomatis mencakup tugas ke partisi yang tepat, mirip dengan partisi tersembunyi Iceberg. Selain itu, setiap data baru yang Anda tambahkan ke tabel akan otomatis dipartisi.

Anda juga dapat membuat kueri tabel terkelola Iceberg yang dipartisi dengan mesin lain dengan cara yang sama seperti tabel terkelola Iceberg standar. Sebaiknya aktifkan snapshot metadata untuk mendapatkan pengalaman terbaik.

Untuk keamanan yang lebih baik, informasi partisi untuk tabel terkelola Iceberg dipisahkan dari jalur data dan dikelola sepenuhnya oleh lapisan metadata.

Harga

Harga tabel terkelola Iceberg terdiri dari penyimpanan, pengoptimalan penyimpanan, serta kueri dan tugas.

Penyimpanan

Tabel terkelola Iceberg menyimpan semua data di Cloud Storage. Anda akan dikenai biaya untuk semua data yang disimpan, termasuk data tabel historis. Biaya pemrosesan data dan transfer data Cloud Storage juga mungkin berlaku. Beberapa biaya operasi Cloud Storage mungkin ditiadakan untuk operasi yang diproses melalui BigQuery atau BigQuery Storage API. Tidak ada biaya penyimpanan khusus BigQuery. Untuk mengetahui informasi selengkapnya, lihat Harga Cloud Storage.

Pengoptimalan penyimpanan

Tabel terkelola Iceberg melakukan pengelolaan tabel otomatis, termasuk pemadatan, pengelompokan, pembersihan sampah memori, dan pembuatan/refresh metadata BigQuery untuk mengoptimalkan performa kueri dan mengurangi biaya penyimpanan. Penggunaan resource komputasi untuk pengelolaan tabel ditagih dalam Unit Komputasi Data (DCU) dari waktu ke waktu, dalam kelipatan per detik. Untuk mengetahui detail selengkapnya, lihat Harga tabel terkelola Iceberg.

Operasi ekspor data yang berlangsung saat streaming melalui Storage Write API disertakan dalam harga Storage Write API dan tidak dikenai biaya sebagai pemeliharaan latar belakang. Untuk mengetahui informasi selengkapnya, lihat Harga penyerapan data.

Untuk melihat log dan penggunaan komputasi untuk operasi latar belakang ini, buat kueri tabel virtual INFORMATION_SCHEMA.JOBS. Untuk contoh kueri, lihat referensi berikut:

Kueri dan tugas

Serupa dengan tabel BigQuery, Anda akan dikenai biaya untuk kueri dan byte yang dibaca (per TiB) jika menggunakan harga on-demand BigQuery, atau konsumsi slot (per jam slot) jika menggunakan harga komputasi kapasitas BigQuery.

Harga BigQuery juga berlaku untuk BigQuery Storage Read API dan Storage Write API.

Operasi pemuatan dan ekspor (seperti EXPORT METADATA) menggunakan slot bayar sesuai penggunaan edisi Enterprise. Hal ini berbeda dengan tabel BigQuery, yang tidak dikenai biaya untuk operasi ini. Jika pemesanan PIPELINE dengan slot Enterprise atau Enterprise Plus tersedia, operasi pemuatan dan ekspor akan lebih memilih menggunakan slot pemesanan ini.

Batasan

Tabel terkelola Iceberg memiliki batasan berikut:

  • Tabel terkelola Iceberg tidak mendukung operasi penggantian nama atau pernyataan ALTER TABLE RENAME TO.
  • Tabel terkelola Iceberg tidak mendukung salinan tabel atau pernyataan CREATE TABLE COPY.
  • Tabel terkelola Iceberg tidak mendukung clone tabel atau pernyataan CREATE TABLE CLONE.
  • Tabel terkelola Iceberg tidak mendukung snapshot tabel atau pernyataan CREATE SNAPSHOT TABLE.
  • Tabel terkelola Iceberg tidak mendukung skema tabel berikut:
  • Tabel terkelola Iceberg tidak mendukung kasus evolusi skema berikut:
    • NUMERIC ke pemaksaan jenis FLOAT
    • INT ke pemaksaan jenis FLOAT
    • Menambahkan kolom bertingkat baru ke kolom RECORD yang sudah ada menggunakan pernyataan DDL SQL
  • Tabel terkelola Iceberg menampilkan ukuran penyimpanan 0 byte saat dikueri oleh konsol atau API.
  • Tabel terkelola Iceberg tidak mendukung tampilan terwujud.
  • Tabel terkelola Iceberg tidak mendukung tampilan resmi, tetapi kontrol akses tingkat kolom didukung.
  • Tabel terkelola Iceberg tidak mendukung disaster recovery terkelola
  • Tabel terkelola Iceberg tidak mendukung keamanan tingkat baris.
  • Tabel terkelola Iceberg tidak mendukung jendela fail-safe.
  • Tabel terkelola Iceberg tidak mendukung tugas ekstrak.
  • Tampilan INFORMATION_SCHEMA.TABLE_STORAGE tidak menyertakan tabel terkelola Iceberg.
  • Tabel terkelola Iceberg tidak didukung sebagai tujuan hasil kueri. Sebagai gantinya, Anda dapat menggunakan pernyataan CREATE TABLE dengan argumen AS query_statement untuk membuat tabel sebagai tujuan hasil kueri.
  • CREATE OR REPLACE tidak mendukung penggantian tabel standar dengan tabel terkelola Iceberg, atau tabel terkelola Iceberg dengan tabel standar.
  • Pemuatan batch dan pernyataan LOAD DATA hanya mendukung penambahan data ke tabel terkelola Iceberg yang ada.
  • Pemuatan batch dan pernyataan LOAD DATA tidak mendukung update skema.
  • TRUNCATE TABLE tidak mendukung tabel terkelola Iceberg. Ada dua alternatif:
  • Fungsi bernilai tabel (TVF) APPENDS tidak mendukung tabel terkelola Iceberg.
  • Metadata Iceberg mungkin tidak berisi data yang di-streaming ke BigQuery oleh Storage Write API dalam 90 menit terakhir.
  • Akses dengan penomoran halaman berbasis data menggunakan tabledata.list tidak mendukung tabel terkelola Iceberg.
  • Hanya satu pernyataan DML bermutasi serentak (UPDATE, DELETE, dan MERGE) yang berjalan untuk setiap tabel terkelola Iceberg. Pernyataan DML bermutasi tambahan dimasukkan ke dalam antrean.