テーブルを変更する

テーブルを変更すると、スキーマの進化(列の追加など)が可能になり、テーブルのメタデータ プロパティを更新できます。

変更は Lakehouse ランタイム カタログ によって管理され、オープンソースの Iceberg REST カタログ API 仕様(CommitTable/UpdateIcebergTablePOST /v1/{prefix}/namespaces/{namespace}/tables/{table})を介してコミットされます。

始める前に

テーブルの概要で、 さまざまな種類のテーブルと、それらを使用する場合の影響について確認してください。

  1. プロジェクト Google Cloud に対して課金が有効になっていることを確認します

  2. BigLake API を有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。

    API の有効化

必要なロール

テーブルを変更するために必要な権限を取得するには、プロジェクトとストレージ バケットに対する次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタム ロールや他の事前定義 ロールから取得することもできます。

テーブルを変更する

テーブルに列を追加します。

コンソール

  1. コンソールで、[Lakehouse] に移動します。 Google Cloud

    [Lakehouse] に移動

  2. 既存のカタログを選択するか、カタログがない場合は作成します。

  3. [Namespace details] テーブルでテーブルを選択し、メニュー オプションを開きます。

  4. [編集] をクリックします。

  5. ダイアログでテーブルの値を更新します。

  6. [保存] をクリックします。

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 テーブルに変更をコミットするには、UpdateIcebergTableCommitTable)エンドポイントに 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: Lakehouse ランタイム カタログの ID。
  • NAMESPACE_NAME: カタログ Namespace の名前。
  • TABLE_NAME: Iceberg テーブルの名前。

次のステップ