You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BigQuery中能否为表记录设置TTL自动过期删除规则?

问题解答

1. 是否支持为BigQuery列设置存活时间(TTL)?

BigQuery目前不支持为单个列设置存活时间(TTL),现有的TTL能力仅覆盖三个维度:表级TTL(整表到期自动删除)、分区级TTL(分区到期自动删除该分区所有数据)、行级TTL(符合条件的行到期自动删除)。如果有列到期自动删除的需求,目前只能通过定时调度查询任务执行ALTER TABLE DROP COLUMN命令实现。

2. 是否支持按timestamp字段自动删除90天前的对应记录?

完全支持,该场景可以直接使用BigQuery的行级TTL功能实现,无需额外编写定时删除任务。


配置方法

你可以通过DDL命令快速为payment_details表配置行级TTL,假设用来判断过期的时间字段名为timestamp,配置语句如下:

-- 给已有表添加行级TTL规则
ALTER TABLE `你的项目ID.你的数据集ID.payment_details`
ADD ROW RETENTION POLICY
OPTIONS (
  ttl_filter_column = 'timestamp',
  ttl_expiration_after_days = 90
);

如果是创建新表时直接配置,语法如下:

CREATE TABLE `你的项目ID.你的数据集ID.payment_details`
(
  -- 其他字段定义
  timestamp TIMESTAMP NOT NULL,
  amount FLOAT64,
  order_id STRING
)
OPTIONS (
  ttl_filter_column = 'timestamp',
  ttl_expiration_after_days = 90
);

补充说明
  • 行级TTL的删除操作是BigQuery后台异步执行的,规则配置完成后不需要手动操作,过期数据一般会在24小时内被自动清理,清理过程不消耗你的查询配额。
  • 行级TTL可以和表级、分区级TTL同时生效,多条规则同时存在时,数据会按最早的过期时间被清理。
  • 如果你的过期判断逻辑更复杂(不是简单的时间字段加90天),也可以自定义ttl_filter参数实现定制化的过期过滤规则。

内容的提问来源于stack exchange,提问作者Bhawna Joshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 22:21:00