テーブルを変更すると、スキーマを進化させ(列の追加など)、テーブルのメタデータ プロパティを更新できます。
変更は Lakehouse ランタイム カタログによって管理されます。
始める前に
-
BigLake API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。 - Apache Iceberg REST カタログのエンドポイントを使用して、Lakehouse ランタイム カタログを設定します。
必要なロール
テーブルの変更に必要な権限を取得するには、プロジェクトとストレージ バケットに対する次の IAM ロールを付与するよう管理者に依頼してください。
-
認証情報ベンディング モードでテーブルを変更する: BigLake 編集者(
roles/biglake.editor) - プロジェクト -
認証情報ベンディング モード以外でテーブルを変更する:
- BigLake 編集者(
roles/biglake.editor)- プロジェクト - ストレージ オブジェクト ユーザー(
roles/storage.objectUser) - Cloud Storage バケット
- BigLake 編集者(
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
テーブルの機能とサポート
Lakehouse ランタイム カタログでテーブルを使用する場合は、さまざまなテーブル タイプとそのオプトイン機能を理解すると便利です。Apache Iceberg テーブルの使用について詳しくは、Apache Iceberg テーブルの概要をご覧ください。
サポートされている Iceberg テーブル
Apache Iceberg V2(一般提供版)テーブルと V3(プレビュー版)テーブルのみがサポートされています。Iceberg V1 テーブルはサポートされていません。既存の V1 テーブルをアップグレードするには、Iceberg V1 テーブルを V2 にアップグレードするをご覧ください。
テーブル オプションを使用する(プレビュー)
特定のテーブル プロパティを構成することで、BigQuery データ操作言語(DML)や自動テーブル管理などの BigQuery マネージド機能を使用できます。これらの機能は、テーブルの作成場所に応じて異なる方法で有効になります。
- BigQuery から: BigQuery DML と自動テーブル管理はデフォルトで有効になっています。
- オープンソース エンジンから: オプトインするには、テーブル プロパティを明示的に構成する必要があります。詳細については、テーブル オプションを構成するをご覧ください。
詳しい手順については、テーブル オプションを構成するをご覧ください。
テーブルを変更する
テーブルに列を追加します。
コンソール
Google Cloud コンソールで、[Lakehouse] に移動します。
既存のカタログを選択するか、まだ作成していない場合は新しいカタログを作成します。
[Namespace details] テーブルで、テーブルを選択してメニュー オプションを開きます。
[編集] をクリックします。
ダイアログでテーブルの値を更新します。
[保存] をクリックします。
Spark
spark.sql("ALTER TABLE TABLE_NAME ADD COLUMNS ( desc string);")
spark.sql("DESCRIBE NAMESPACE_NAME.TABLE_NAME").show()
読み取り/書き込みの相互運用性とテーブル管理を有効にするには、SET TBLPROPERTIES 句を使用してプロパティを設定します。
SET TBLPROPERTIES (
'gcp.biglake.bigquery-dml.enabled' = true,
'gcp.biglake.table-management.enabled' = true
)
Trino
ALTER TABLE TABLE_NAME ADD COLUMN desc varchar;
DESCRIBE SCHEMA_NAME.TABLE_NAME;
読み取り/書き込みの相互運用性とテーブル管理を有効にするには、次のテーブル プロパティを構成します。
'gcp.biglake.bigquery-dml.enabled' = true'gcp.biglake.table-management.enabled' = true
gcloud
gcloud を使用してテーブルのプロパティを更新するには、gcloud biglake iceberg tables update コマンドを実行します。
gcloud biglake iceberg tables update TABLE_NAME \ --project="PROJECT_ID" \ --catalog="CATALOG_ID" \ --namespace="NAMESPACE_NAME" \ --update-properties="KEY=VALUE,..."
次のように置き換えます。
TABLE_NAME: Iceberg テーブルの名前。PROJECT_ID: 実際の Google Cloud プロジェクト ID。CATALOG_ID: カタログの ID。NAMESPACE_NAME: カタログ Namespace の名前。KEY=VALUE,...: 追加または更新するテーブル プロパティ。
BigQuery
BigQuery から Lakehouse ランタイム カタログ内の Apache Iceberg テーブルのテーブル プロパティ(BigQuery DML や自動テーブル管理の有効化など)を更新するには、次の GoogleSQL ALTER TABLE ステートメントを使用します。
ALTER TABLE `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME`
SET OPTIONS (`properties.gcp.biglake.table-management` = "enabled");
BigQuery から Lakehouse ランタイム カタログの Apache Iceberg テーブルのスキーマを更新して列を追加するには、次の GoogleSQL ALTER TABLE ステートメントを使用します。
ALTER TABLE `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME`
ADD COLUMN new_column STRING;
次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。CATALOG_ID: Lakehouse ランタイム カタログ ID。NAMESPACE: Iceberg Namespace の名前。TABLE_NAME: Iceberg テーブルの名前。
REST
REST API を使用して Iceberg テーブルに変更を commit するには、UpdateIcebergTable(CommitTable)エンドポイントに POST リクエストを行います。
POST /iceberg/v1/restcatalog/v1/projects/PROJECT_ID/catalogs/CATALOG_ID/namespaces/NAMESPACE_NAME/tables/TABLE_NAME
リクエストの本文には、基本要件と適用するメタデータ更新のリストを定義する有効な Iceberg CommitTableRequest JSON ペイロードを含める必要があります。
次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。CATALOG_ID: カタログの ID。NAMESPACE_NAME: カタログ Namespace の名前。TABLE_NAME: Iceberg テーブルの名前。
次のステップ
- テーブルを削除する方法を学習する。