建立資料表

建立 Apache Iceberg 資料表時,系統會在 Lakehouse 執行階段目錄的命名空間中,初始化新的資料表中繼資料和儲存空間。

如要在目錄中提供現有的 Apache Iceberg 資料表,請參閱「註冊資料表」。

如果在建立資料表時,未在命名空間或資料表層級指定明確的儲存空間位置,系統會自動在目錄的預設位置 (衍生自目錄的基礎 Cloud Storage 值區) 下,建構資料表的中繼資料和資料目錄,並附加命名空間和資料表 ID。

事前準備

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

  2. 如果尚未啟用 BigLake API,請先啟用。

    啟用 API 時所需的角色

    如要啟用 API,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。

    啟用 API

  3. 使用 Apache Iceberg REST 目錄端點設定 Lakehouse 執行階段目錄。

必要的角色

如要取得建立表格所需的權限,請要求管理員授予您專案和儲存空間 bucket 的下列 IAM 角色:

  • 建立表格:
    • BigLake 管理員 (roles/biglake.admin) - 您的專案
    • 儲存空間管理員 (roles/storage.admin) - 目標 Cloud Storage bucket

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

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

表格功能和支援

在 Lakehouse 執行階段目錄中使用資料表時,建議瞭解不同資料表類型及其選擇加入功能。如要進一步瞭解如何使用 Apache Iceberg 資料表,請參閱 Apache Iceberg 資料表總覽。

支援的 Iceberg 資料表

系統僅支援 Apache Iceberg V2 (正式發布版) 和 V3 (預先發布版) 資料表。不支援 Iceberg V1 資料表。如要升級現有的 V1 資料表,請參閱「將 Iceberg V1 資料表升級至 V2」。

使用表格選項 (預覽版)

您可以設定特定資料表屬性,選擇使用 BigQuery 管理功能,例如 BigQuery 資料操縱語言 (DML) 和自動資料表管理。啟用這些功能的方式會因表格建立位置而異:

  • 從 BigQuery:BigQuery DML 和自動表格管理功能預設為啟用。
  • 開放原始碼引擎:如要啟用這項功能,您必須明確設定表格屬性。詳情請參閱「設定表格選項」。

建立資料表

建立 Iceberg 資料表。

控制台

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

    前往 Lakehouse

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

  3. 選取現有命名空間,或建立新的命名空間 (如果沒有的話)。

  4. 在選單列中,按一下「+ 建立資料表」。

  5. 在「Table format」(資料表格式) 中選取「Iceberg」。

  6. 在「Table name」(資料表名稱) 部分輸入不重複的資料表名稱。

  7. 選用:在「屬性」部分,設定表格屬性。 系統會列出 gcp.biglake.bigquery-dml.enabled 和 gcp.biglake.table-management.enabled 等預先定義的屬性。

    舉例來說,您可以將這些值變更為 true,啟用 BigQuery DML 或自動資料表管理。詳情請參閱「設定表格選項」。

  8. 點選「建立」。

表格會顯示在「命名空間詳細資料」頁面。

Spark

spark.sql("CREATE TABLE NAMESPACE_NAME.TABLE_NAME (id int, data string) USING ICEBERG;")

替換下列值:

  • NAMESPACE_NAME:命名空間的名稱。
  • TABLE_NAME:資料表名稱。

如要啟用讀取/寫入互通性和資料表管理 (預覽版),請將屬性新增至 TBLPROPERTIES 子句:

TBLPROPERTIES (
  'gcp.biglake.bigquery-dml.enabled' = true,
  'gcp.biglake.table-management.enabled' = true
)

Trino

CREATE TABLE SCHEMA_NAME.TABLE_NAME (id int, data varchar);

替換下列值:

  • SCHEMA_NAME:結構定義的名稱。
  • TABLE_NAME:資料表名稱。

如要啟用讀取/寫入互通性和表格管理 (預覽版),請在 WITH 子句中加入下列屬性:

WITH (
  "gcp.biglake.bigquery-dml.enabled" = 'true',
  "gcp.biglake.table-management.enabled" = 'true'
)

gcloud

如要使用 gcloud 建立資料表,請執行 gcloud biglake iceberg tables create 指令。

gcloud biglake iceberg tables create \
    --project="PROJECT_ID" \
    --catalog="CATALOG_ID" \
    --namespace="NAMESPACE_NAME" \
    --create-from-file="TABLE_DEFINITION_FILE"

更改下列內容:

  • PROJECT_ID:您的 Google Cloud 專案 ID。
  • CATALOG_ID:目錄 ID。
  • NAMESPACE_NAME:目錄命名空間的名稱。
  • TABLE_DEFINITION_FILE:包含 Iceberg 資料表定義的 JSON 檔案路徑。

BigQuery

如要從 BigQuery 在 Lakehouse 執行階段目錄中建立 Apache Iceberg 資料表,請使用下列 GoogleSQL CREATE TABLE 陳述式。從 BigQuery 建立資料表時,系統預設會啟用 BigQuery DML 和自動資料表管理功能。

CREATE TABLE `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME` (id int, data string);

更改下列內容:

  • PROJECT_ID:您的 Google Cloud 專案 ID
  • CATALOG_ID:您的 Lakehouse 執行階段目錄 ID
  • NAMESPACE:您的 Iceberg 命名空間名稱
  • TABLE_NAME:Iceberg 資料表的名稱

REST

如要使用 REST API 建立 Iceberg 資料表,請向 CreateIcebergTable 端點發出 POST 要求:

POST /iceberg/v1/restcatalog/v1/projects/PROJECT_ID/catalogs/CATALOG_ID/namespaces/NAMESPACE_NAME/tables

要求主體必須包含有效的 Iceberg CreateTableRequest JSON 酬載,定義表格結構定義、分割區規格和初始屬性。

更改下列內容:

  • PROJECT_ID:您的 Google Cloud 專案 ID。
  • CATALOG_ID:目錄 ID。
  • NAMESPACE_NAME:目錄命名空間的名稱。

後續步驟