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