我正在设计一个BigQuery表,这是一个永不过期的表。 它更多是基于产品ID在其中存储行的表。 可能会每天插入一次,并且可能会再次插入相同的产品ID(例如维护历史数据)。
此表上将有一个VIEW,它会根据最后插入的时间戳读取最新版本的产品ID。
SELECT ARRAY_AGG(PRODUCTS ORDER BY INSERT_TIMESTAMP DESC LIMIT 2)[OFFSET(0)] from dataset1.PRODUCTS
group by PRODUCTID
将基于INSERT_TIMESTAMP对该表进行分区会有所帮助吗?我不这么认为。请确认。
答案 0 :(得分:1)
您提供的查询不会从分区中获得任何好处。为了减少查询和运行时的成本,您应该添加一个过滤器(如果可能)以将A
限制为特定的时间段,例如最近的7天。
答案 1 :(得分:1)
这取决于您偏爱使用表的方式。如果数据没有按指数增长,那么您可以遵循当前使用的相同结构。如果您认为持久化数据将来会变得越来越庞大,那么对表进行分区并在指定时间范围内进行查询是一种很好的计划方法。您还可以创建每天/每周/每月(由您自己决定)的物化视图,以维护所有产品ID的最新汇总日期,以便您可以将物化视图和arr_agg
查询与确定的范围{{1} }获取所有产品ID
insert_timestamp