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

raz*_*yed 2 google-bigquery

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

谢谢

Mik*_*ant 5

不,您不能在此处使用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")')
)  
Run Code Online (Sandbox Code Playgroud)

标准SQL

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