格式化 TABLE_DATE_RANGE() BigQuery 的时间戳输出

Posted

技术标签:

【中文标题】格式化 TABLE_DATE_RANGE() BigQuery 的时间戳输出【英文标题】:format the timestamp output for 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 在这些表中查询。

【问题讨论】:

【参考方案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'

【讨论】:

以上是关于格式化 TABLE_DATE_RANGE() BigQuery 的时间戳输出的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery 中的动态 TABLE_DATE_RANGE

Google BigQuery 中的 TABLE_DATE_RANGE 困难

bigquery 数据集名称以数字和 TABLE_DATE_RANGE 开头

在 BigQuery 中使用 TABLE_DATE_RANGE 函数

Google BigQuery:TABLE_QUERY 和 TABLE_DATE_RANGE

使用 TABLE_DATE_RANGE 为 Firebase Analytics 查询多个表中的多个参数