【问题标题】:With daily tables on BigQuery, how can I query rolling 12 months?使用 BigQuery 上的每日表,我如何查询滚动 12 个月?
【发布时间】:2017-01-19 20:36:07
【问题描述】:

我在 BigQuery 中有每日表格 (table_name_yyyymmdd)。如何编写一个始终查询滚动 12 个月数据的视图?

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    举个例子:

    将下面的查询另存为视图(我们将其命名为 - view_test - 我假设它与表在同一个数据集中)

    #standardSQL
    SELECT PARSE_DATE('%Y%m%d', _TABLE_SUFFIX) as table, COUNT(1) as rows_count
    FROM `yourProject.yourDataset.table_name_*`
    WHERE _TABLE_SUFFIX 
             BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 13 DAY) ) 
                 AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY) )
    GROUP BY 1  
    

    现在你可以像下面这样使用它:

    #standardSQL
    SELECT * 
    FROM `yourProject.yourDataset.view_test` 
    

    因此,此视图参考过去 12 天
    您可以将 DAY 更改为 MONTH 以改为有 12 个月

    希望你有想法

    如果需要,可以轻松地将其“转换”为旧版 SQL(确保调用该视图的视图和查询使用相同的 SQL 版本/方言)
    注意:Google 会尽可能推荐migrate to Standard SQL

    【讨论】:

      【解决方案2】:

      您可以使用根据文档 (https://cloud.google.com/bigquery/docs/reference/legacy-sql#table-date-range) 的函数 TABLE_DATE_RANGE :

      查询跨越一个日期范围的多个每日表格。

      如下:

      SELECT *FROM TABLE_DATE_RANGE(data_set_name.table_name,
                          TIMESTAMP('2016-01-01'),
                          TIMESTAMP('2016-12-31'))
      

      由于目前没有以编程方式参数化视图的选项,因此您需要通过其他工具/代码生成查询/视图

      【讨论】:

        猜你喜欢
        • 2019-10-25
        • 2015-04-09
        • 2019-10-06
        • 1970-01-01
        • 2022-08-02
        • 2013-10-06
        • 1970-01-01
        • 1970-01-01
        • 2012-05-28
        相关资源
        最近更新 更多