【问题标题】:format the timestamp output for TABLE_DATE_RANGE() BigQuery格式化 TABLE_DATE_RANGE() BigQuery 的时间戳输出
【发布时间】:2016-06-17 14:02:11
【问题描述】:

我需要一次查询不同的表以节省我的时间。像

这样的表名

abc_yyyymmdd

可以使用

轻松查询
table_date_range(abc_,timestamp('2016-01-01'),timestamp('2016-03-12'))

但我有不同的格式表名

abc_mm_dd_yyyy

有没有办法使用 table_date_range 在这些表中查询。

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    在旧版 SQL 中,您可以为此使用 TABLE_QUERY

    所以它可以像下面这样

    SELECT *  
    FROM (
      TABLE_QUERY(YourDataset, 'LEFT(table_id, 4) = "abc_" AND LENGTH(table_id) = 14
      AND CONCAT(SUBSTR(table_id,11,4),'-',SUBSTR(table_id,5,2), -",SUBSTR(table_id,8,2)) 
        BETWEEN "2016-01-01" AND "2016-03-12"')
    )  
    

    【讨论】:

      【解决方案2】:

      如果您可以使用标准 SQL,则可以使用 _TABLE_SUFFIX 伪列来处理任何表名格式。

      Is there an equivalent of table wildcard functions in BigQuery with standard SQL?

      在这种情况下,它会是这样的:

      SELECT ... FROM `mydataset.abc_2016_*` WHERE _TABLE_SUFFIX = '01-01' or _TABLE_SUFFIX = '03-12'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-08
        • 1970-01-01
        • 2019-02-17
        相关资源
        最近更新 更多