查詢資料表時,系統會使用 Lakehouse 執行階段目錄管理的中繼資料,從底層 Cloud Storage 檔案讀取資料。
您可以從 Spark 和 Trino 等開放原始碼引擎執行查詢,也可以使用四部分資料表名稱語法 (P.C.N.T 語法),直接從 BigQuery 執行查詢。
事前準備
-
啟用 BigLake API。
啟用 API 時所需的角色
如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。 - 使用 Apache Iceberg REST 目錄端點設定 Lakehouse 執行階段目錄。
必要的角色
如要取得查詢資料表所需的權限,請要求管理員在專案和儲存空間 bucket 中授予您下列 IAM 角色:
-
以憑證販售模式讀取資料表資料:
BigLake 檢視者 (
roles/biglake.viewer) - 專案 -
在非憑證臨時配發模式下讀取資料表資料:
- BigLake 檢視者 (
roles/biglake.viewer) - 專案 - Storage 物件檢視者 (
roles/storage.objectViewer) - Cloud Storage 值區
- BigLake 檢視者 (
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
表格功能和支援
在 Lakehouse 執行階段目錄中使用表格時,建議瞭解不同表格類型及其選擇加入功能。如要進一步瞭解如何使用 Apache Iceberg 資料表,請參閱 Apache Iceberg 資料表總覽。
支援的 Iceberg 資料表
系統僅支援 Apache Iceberg V2 (正式發布版) 和 V3 (預先發布版) 資料表。不支援 Iceberg V1 資料表。如要升級現有的 V1 資料表,請參閱「將 Iceberg V1 資料表升級至 V2」。
使用表格選項 (預覽版)
您可以設定特定資料表屬性,選擇使用 BigQuery 管理功能,例如 BigQuery 資料操縱語言 (DML) 和自動資料表管理。啟用這些功能的方式會因表格建立位置而異:
- 從 BigQuery:BigQuery DML 和自動表格管理功能預設為啟用。
- 開放原始碼引擎:如要啟用這項功能,您必須明確設定表格屬性。詳情請參閱「設定表格選項」。
從 BigQuery 查詢資料表時,您可以存取標準 Iceberg 資料表,以及啟用 BigQuery 管理功能的資料表。如需詳細操作說明,請參閱「設定表格選項」。
查詢資料表
選取表格中的所有資料:
Spark
spark.sql("SELECT * FROM TABLE_NAME;").show()
Trino
SELECT * FROM TABLE_NAME;
BigQuery
如要從 BigQuery 查詢 Lakehouse 執行階段目錄中的 Apache Iceberg 資料表,請在查詢中使用四部分資料表名稱,格式如下:PROJECT_NAME.CATALOG_ID.NAMESPACE_OR_SCHEMA_NAME.TABLE_NAME。
SELECT * FROM `PROJECT_NAME.CATALOG_ID.NAMESPACE_OR_SCHEMA_NAME.TABLE_NAME`;
替換下列值:
PROJECT_NAME:Google Cloud 擁有 Lakehouse 執行階段目錄中目錄的專案。系統會向 Google Cloud 控制台中選取的專案 Google Cloud 收取查詢費用。CATALOG_ID:建立目錄時指定的 Lakehouse 執行階段目錄 ID。這個 ID 會在 BigQuery 查詢中做為目錄名稱。這個 ID 也是 Cloud Storage bucket 的名稱。
舉例來說,假設你建立的 bucket 是用來儲存目錄,並將其命名為
iceberg-bucket,則目錄名稱和 bucket 名稱都是iceberg-bucket。稍後在 BigQuery 中使用 P.C.N.T 語法查詢目錄時,就會用到這項資訊。例如:my-project.catalog_id.quickstart_namespace.quickstart_table。NAMESPACE_OR_SCHEMA_NAME:使用 Spark 時的資料表命名空間,或使用 Trino 時的資料表結構定義名稱。TABLE_NAME:資料表名稱。
使用時間回溯查詢
您可以使用時間旅行功能,查詢 Lakehouse Iceberg 資料表的歷史資料。您可以使用 FOR
SYSTEM_TIME AS OF 子句從 BigQuery 進行時空旅行,也可以使用快照 ID、時間戳記、標記或分支,從 Spark 等開放原始碼引擎進行時空旅行。
依時間戳記查詢
如要查詢特定時間戳記的資料,請按照下列步驟操作:
Spark
SELECT * FROM NAMESPACE.TABLE_NAME TIMESTAMP AS OF '2026-02-26 01:21:00';
BigQuery
SELECT * FROM `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME` FOR SYSTEM_TIME AS OF '2026-02-26 01:21:00';
依快照 ID 查詢
如要查詢特定快照 ID 的資料,請按照下列步驟操作:
Spark
SELECT * FROM NAMESPACE.TABLE_NAME VERSION AS OF 10963874102873;
依據標記查詢
如要建立標記並查詢該標記的資料,請按照下列步驟操作:
Spark
-- Create tag 'historical-snapshot'
ALTER TABLE NAMESPACE.TABLE_NAME CREATE TAG 'historical-snapshot' AS OF VERSION 123456789012345;
-- Query by tag
SELECT * FROM NAMESPACE.TABLE_NAME VERSION AS OF 'historical-snapshot';
依分支版本查詢
如要建立分支並查詢該分支的資料,請按照下列步驟操作:
Spark
-- Create branch 'audit-branch'
ALTER TABLE NAMESPACE.TABLE_NAME CREATE BRANCH 'audit-branch' AS OF VERSION 123456789012345;
-- Query by branch
SELECT * FROM NAMESPACE.TABLE_NAME VERSION AS OF 'audit-branch';
後續步驟
- 瞭解如何變更表格。