在Google BigQuery中,我使用以下格式的表格:daily_records_yyyy_mm_dd。我需要在给定的日期范围内对多个表运行查询。TABLE_DATE_RANGE函数期望表名的格式为[prefix] [day],其中[day]的格式为YYYYMMDD。我仍然可以使用TABLE_DATE_RANGE还是有其他方法吗?
谢谢
不,您不能在此处使用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)
| 归档时间: |
|
| 查看次数: |
8949 次 |
| 最近记录: |