使用變更記錄
BigQuery 變更記錄可讓您追蹤 BigQuery 資料表的變更記錄。您可以使用 GoogleSQL 函式,查看在指定日期範圍內進行的特定類型變更,以便處理資料表的增量變更。瞭解資料表有哪些變更,有助於您在 BigQuery 外部逐步維護資料表副本,同時避免高昂的複製費用。
所需權限
如要查看資料表的變更記錄,您必須具備該資料表的 bigquery.tables.getData 權限。下列預先定義的 Identity and Access Management (IAM) 角色包含這項權限:
roles/bigquery.dataViewerroles/bigquery.dataEditorroles/bigquery.dataOwnerroles/bigquery.admin
如果資料表有或曾有資料列層級存取權政策,則只有資料表管理員可以存取資料表的歷來資料。您必須具備資料表的 bigquery.rowAccessPolicies.overrideTimeTravelRestrictions 權限,這項權限包含在預先定義的 roles/bigquery.admin IAM 角色中。
如果資料表設有資料欄層級安全性,您只能查看有權存取的資料欄變更記錄。
如要查看 Apache Iceberg 代管資料表的 APPENDS 變更記錄,您也必須具備下列權限:
- 與資料表相關聯的 Google Cloud 資源連線
bigquery.connections.delegate權限,包含在 BigQuery 連線使用者 (roles/bigquery.connectionUser) 角色中 - 在基礎 Cloud Storage bucket 上,授予連線服務帳戶
roles/storage.objectUser和roles/storage.legacyBucketReader角色
詳情請參閱「在 Lakehouse 中使用變更記錄」。
變更記錄功能
您可以使用下列函式瞭解資料表的變更記錄:
APPENDS:傳回指定日期範圍內附加至資料表的所有資料列。下列作業會在
APPENDS變更記錄中新增資料列:CHANGES:傳回資料表中指定日期範圍內變更的所有資料列。如要在資料表上使用CHANGES函式,您必須將資料表的enable_change_history選項設為TRUE。下列作業會在
CHANGES變更記錄中新增資料列:CREATE TABLEDDL 陳述式INSERTDML 陳述式- 在
MERGEDML 陳述式中附加或變更的資料 UPDATEDML 陳述式DELETEDML 陳述式- 將資料載入 BigQuery
- 串流擷取
TRUNCATE TABLEDML 陳述式writeDisposition為WRITE_TRUNCATE的工作- 個別資料表分區刪除
定價和費用
呼叫變更記錄函式會產生 BigQuery 運算費用。APPENDS 和 CHANGES 函式都需要處理在指定日期範圍內寫入資料表的所有資料。這項處理作業適用於所有寫入作業,包括附加和異動作業。將資料表的 enable_change_history 選項設為 FALSE,並不會減少 APPENDS 處理的資料量。
將資料表的 enable_change_history 選項設為 TRUE,以便使用 CHANGES 函式時,BigQuery 會儲存資料表變更中繼資料。儲存這類中繼資料會產生額外的 BigQuery 儲存費用和 BigQuery 運算費用。計費金額取決於資料表變更的數量和類型,通常金額不高。如果資料表有許多變更作業,尤其是大量刪除作業,最有可能產生明顯費用。