【问题标题】:BigQuery Date-Partitioned ViewsBigQuery 日期分区视图
【发布时间】:2017-11-30 14:17:00
【问题描述】:

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

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

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

【问题讨论】:

    标签: sql google-bigquery


    【解决方案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'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多