テーブルを変更すると、スキーマを進化させ(列の追加など)、テーブル メタデータ プロパティを更新できます。
変更は Lakehouse ランタイム カタログ によって管理され、オープンソースの Iceberg REST カタログ API 仕様(CommitTable/UpdateIcebergTable の POST /v1/{prefix}/namespaces/{namespace}/tables/{table})を介してコミットされます。
サポートされているテーブル形式
Apache Iceberg V2 テーブルのみがサポートされています。Iceberg V1 テーブルはサポートされていません。既存の Iceberg V1 テーブルがある場合は、Lakehouse ランタイム カタログで変更または管理する前に、V2 にアップグレードする必要があります(たとえば、ALTER TABLE catalog.schema.table SET TBLPROPERTIES ('format-version'='2'); を実行するか、同様のエンジン オペレーションを使用します)。
始める前に
さまざまな種類のテーブルと、それらを使用する場合の影響については、テーブルの概要をご覧ください。
-
BigLake API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。
必要なロール
テーブルを変更するために必要な権限を取得するには、プロジェクトとストレージ バケットに対する次の IAM ロールを付与するよう管理者に依頼してください。
-
認証情報ベンディング モードでテーブルを変更する: BigLake 編集者(
roles/biglake.editor) - プロジェクト -
認証情報ベンディング モード以外でテーブルを変更する:
- BigLake 編集者(
roles/biglake.editor) - プロジェクト - Storage オブジェクト ユーザー(
roles/storage.objectUser) - Cloud Storage バケット
- BigLake 編集者(
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタム ロールや他の事前定義 ロールから取得することもできます。
テーブルを変更する
テーブルに列を追加します。
コンソール
コンソールで、[Lakehouse] に移動します。 Google Cloud
既存のカタログを選択します。カタログがない場合は、作成します。
[名前空間の詳細] テーブルでテーブルを選択し、メニュー オプションを開きます。
[編集] をクリックします。
ダイアログでテーブル値を更新します。
[保存] をクリックします。
Spark
spark.sql("ALTER TABLE TABLE_NAME ADD COLUMNS ( desc string);")
spark.sql("DESCRIBE NAMESPACE_NAME.TABLE_NAME").show()
Trino
ALTER TABLE TABLE_NAME ADD COLUMN desc varchar;
DESCRIBE SCHEMA_NAME.TABLE_NAME;
REST
REST API を使用して Iceberg テーブルに変更をコミットするには、POST リクエスト
UpdateIcebergTable(CommitTable)エンドポイントに送信します。
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: Lakehouse ランタイム カタログの ID。NAMESPACE_NAME: カタログ名前空間の名前。TABLE_NAME: Iceberg テーブルの名前。
次のステップ
- テーブルを削除する方法を学習する。