使用更改历史记录
通过 BigQuery 更改历史记录,您可以跟踪 BigQuery 表的更改历史记录。您可以使用 GoogleSQL functions查看指定时间范围内执行的特定更改类型,以便处理对表所做的增量更改。了解对表进行了哪些更改可帮助您在 BigQuery 外部逐步维护表副本,同时避免费用高昂的副本。
所需权限
如需查看某个表的更改历史记录,您需要拥有该表的 bigquery.tables.getData
权限。以下预定义的 Identity and Access Management (IAM) 角色包含此权限:
roles/bigquery.dataViewer
roles/bigquery.dataEditor
roles/bigquery.dataOwner
roles/bigquery.admin
如果表具有或以前具有行级访问权限政策,则只有表管理员可以访问表的历史数据。表需要 bigquery.rowAccessPolicies.overrideTimeTravelRestrictions
权限,它包含在预定义的 roles/bigquery.admin
IAM 角色中。
如果表具有列级安全性,则您只能查看您有权访问的列的更改历史记录。
更改历史记录函数
您可以使用以下函数了解表的更改历史记录:
APPENDS
:返回给定时间范围内附加到表的所有行。以下操作会将行添加到
APPENDS
更改历史记录中:CREATE TABLE
DDL 语句INSERT
DML 语句- 作为
MERGE
DML 语句的一部分附加的数据 - 加载数据到 BigQuery 中
- 流式提取
CHANGES
:返回给定时间范围内表中发生更改的所有行。如需对表使用CHANGES
函数,您必须将表的enable_change_history
选项设置为TRUE
。以下操作会将行添加到
CHANGES
更改历史记录中:CREATE TABLE
DDL 语句INSERT
DML 语句- 在
MERGE
DML 语句中附加或更改的数据 UPDATE
DML 语句DELETE
DML 语句- 加载数据到 BigQuery 中
- 流式提取
TRUNCATE TABLE
DML 语句- 作业的
writeDisposition
配置为WRITE_TRUNCATE
- 个别表分区删除
价格和费用
调用更改历史记录函数会产生 BigQuery 计算费用。
当您将表的 enable_change_history
选项设为 TRUE
以使用 CHANGES
函数时,BigQuery 会存储表更改元数据。这些存储的元数据会产生 BigQuery 存储费用。所产生的费用取决于对表所做的更改数量和类型,通常很小。进行大量更改操作(尤其是大量删除操作)的表最有可能产生明显的费用。