變更資料表

變更資料表可讓您更新結構定義 (例如新增資料欄),以及更新資料表中繼資料屬性。

修改作業由 Lakehouse 執行階段目錄管理,並透過開放原始碼 Iceberg REST 目錄 API 規格 (POST /v1/{prefix}/namespaces/{namespace}/tables/{table}適用於 CommitTable/UpdateIcebergTable) 提交。

事前準備

請參閱表格總覽,瞭解不同類型的表格,以及使用這些表格的影響。

  1. 確認專案已啟用計費功能 Google Cloud

  2. 啟用 BigLake API。

    啟用 API 時所需的角色

    如要啟用 API,您需要服務使用情形管理員 IAM 角色 (roles/serviceusage.serviceUsageAdmin),其中包含 serviceusage.services.enable 權限。瞭解如何授予角色

    啟用 API

必要的角色

如要取得變更資料表所需的權限,請要求管理員在專案和儲存空間 bucket 中授予您下列 IAM 角色:

  • 憑證販售模式中變更資料表: BigLake 編輯者 (roles/biglake.editor) - 專案
  • 在非憑證臨時配發模式下變更資料表:
    • BigLake 編輯者 (roles/biglake.editor) - 專案
    • Storage 物件使用者 (roles/storage.objectUser) - Cloud Storage 值區

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

變更資料表

在表格中新增資料欄:

控制台

  1. 前往 Google Cloud 控制台的「Lakehouse」Lakehouse

    前往 Lakehouse

  2. 選取現有目錄,或建立目錄 (如果沒有)。

  3. 在「命名空間詳細資料」表格中,選取資料表並展開選單選項。

  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 表格,請對 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:Lakehouse 執行階段目錄的 ID。
  • NAMESPACE_NAME:目錄命名空間名稱。
  • TABLE_NAME:Iceberg 資料表的名稱。

後續步驟