使用變更記錄
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 角色已包含這項權限。
如果表格設有資料欄層級安全防護機制,您只能查看自己有權存取資料欄的變更記錄。
變更記錄功能
您可以使用下列函式瞭解資料表的變更記錄:
APPENDS: 傳回附加至指定時間範圍內資料表的所有資料列。下列作業會將資料列新增至
APPENDS變更記錄:CHANGES: 傳回指定時間範圍內資料表的所有變更資料列。如要在資料表上使用CHANGES函式,您必須將資料表的enable_change_history選項設為TRUE。下列作業會將資料列新增至
CHANGES變更記錄:CREATE TABLEDDL 陳述式INSERTDML 陳述式- 透過
MERGEDML 陳述式附加或變更的資料 UPDATEDML 陳述式DELETEDML 陳述式- 將資料載入 BigQuery
- 串流擷取
TRUNCATE TABLEDML 陳述式- 設定的工作具有
writeDispositionWRITE_TRUNCATE - 個別刪除資料表分區
價格和費用
呼叫變更記錄函式會產生 BigQuery 計算費用。APPENDS 和 CHANGES 函式都需要處理在指定時間範圍內寫入資料表的所有資料。這項處理程序適用於所有寫入作業,包括附加和異動作業。將資料表的 enable_change_history 選項設為 FALSE,不會減少 APPENDS 處理的資料量。
在資料表上將 enable_change_history 選項設為 TRUE,即可使用 CHANGES 函式,BigQuery 會儲存資料表變更中繼資料。儲存這些中繼資料會產生額外的 BigQuery 儲存費用和 BigQuery 運算費用。帳單金額取決於表格的變更數量和類型,通常不會太高。如果資料表有許多變更作業 (尤其是大量刪除作業),最有可能產生明顯費用。