BigQuery 日期分区视图

Posted

技术标签:

【中文标题】BigQuery 日期分区视图【英文标题】:BigQuery Date-Partitioned Views 【发布时间】:2017-06-27 13:37:48 【问题描述】:

BigQuery 允许您创建日期分区表: https://cloud.google.com/bigquery/docs/creating-partitioned-tables

我希望能够在日期分区表之上创建视图,并且理想情况下仍能获得性能优势。我读过的所有内容都表明这是不可能的?

还有其他人有什么运气吗?

【问题讨论】:

【参考方案1】:

定义您的视图以公开分区伪列,如下所示:

SELECT *, EXTRACT(DATE FROM _PARTITIONTIME) AS date
FROM Date partitioned table;

现在,如果您使用date 上的过滤器查询视图,它将限制读取的分区。

【讨论】:

谢谢 Elliott - 如果可能的话,你能给我指点这方面的任何文件吗? 我认为我们没有任何明确的内容。我在公共跟踪器上提交了一个问题,你可以关注它:issuetracker.google.com/issues/63056957。 知道在使用显式分区列时是否可以实现这一点吗? 是的,它应该以相同的方式工作。试试看!单击 UI 中的复选标记以查看在运行视图之前查询将处理多少字节。 @ElliottBrossard,如果您在两个 SELECT 语句之间有一个 UNION ALL 并且都公开了两个不同表的分区伪列,这会起作用吗?换句话说,每个 SELECT 都使用 _PARTITIONTIME 并相应地提取它。【参考方案2】:

对于任何尝试使用通配符分区日期表(例如 Firebase 或 Google Analytics)的人:

create view some.view as ( 
    select *, _TABLE_SUFFIX as suffix from 
    `firebase-public-project.analytics_153293282.events_*` 
)


 select * from some.view WHERE suffix = '20180814'

【讨论】:

以上是关于BigQuery 日期分区视图的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery - 使用分区创建视图,但基表没有

BigQuery:使用 DML 原子地替换日期分区

按日期时间 Google BigQuery 分区

列中的 BigQuery 日期分区

BigQuery - 列出日期分区表的分区?

如何在 BigQuery 中使用连接修剪分区?