【发布时间】:2021-08-10 14:00:25
【问题描述】:
我有一个表 logs 包含这些列:
时间戳 sessionID elementID 值
logs 表在 timestamp 列上进行分区。
我用它创建了一个物化视图:
create materialized view X
partition by date(new_timestamp)
as
select min(timestamp) as new_timestamp, sessionID, elementID, sum(value) as sumvalue
from logs
group by sessionID, elementID
我收到错误消息“实体化视图的分区列必须与基表的分区列或伪列匹配,或者是它之上的 TIMESTAMP_TRUNC。”
BigQuery 文档说对物化视图进行分区的唯一方法是使用与主表完全相同的分区列,即使列上的 min() 运算符也不被接受。你知道尽管有这个限制,我怎样才能达到我想要的结果吗?
【问题讨论】:
-
你试过
partition by TIMESTAMP_TRUNC(new_timestamp, DAY)吗?如果您只想获取日期值(而不是小时、分钟、秒...),则相当于将其转换为 Date。 -
您好,感谢您的评论。 Timestamp_trunc 现在也可以工作,因为 new_timestamp 不是母表的分区列。我应该用来对物化视图进行分区的分区列是时间戳,但我不能直接将它用于我的用例。我需要每个组的所有时间戳的最小值。
-
您找到解决问题的方法了吗?与基表分区列相比,我想在 MV 中使用不同的(计算的)列。
-
很遗憾我还没有找到解决方案
标签: google-cloud-platform google-bigquery partition materialized-views