查询给定日期范围内的BigQuery表

时间:2016-08-11 11:50:44

标签: google-bigquery

在Google BigQuery中,我有以下格式的表:daily_records_yyyy_mm_dd。我需要在给定的日期范围内对多个表运行查询。 TABLE_DATE_RANGE函数要求表名称的格式为[prefix] [day],其中[day]的格式为YYYYMMDD。 我可以在我的情况下使用TABLE_DATE_RANGE还是有其他方法?

由于

1 个答案:

答案 0 :(得分:3)

不,你不能在这里使用TABLE_DATE_RANGE,因为它需要特定的格式

在您的情况下(对于BigQuery Legacy SQL) - 您应该使用TABLE_QUERY,您可以使用任何表达式来选择表格

另外 - 对于BigQuery Standard SQL - 您可以使用_TABLE_SUFFIX伪列来处理任何表名格式

示例:

旧版SQL

SELECT *  
FROM (
  TABLE_QUERY(YourDataset, 'LEFT(table_id, 14) = "daily_records_" 
                            AND LENGTH(table_id) = length("daily_records_") + 10
                            AND DATE(REPLACE(RIGHT(table_id, 10), "_", "-")) 
                            BETWEEN DATE("2015-11-01") AND DATE("2016-01-30")')
)  

标准SQL

SELECT * 
FROM `YourDataset.daily_records_*` 
WHERE REPLACE(_TABLE_SUFFIX, "_", "-")
      BETWEEN "2015-11-03" AND "2016-01-05"