我有大约600个分区表,称为table.ga_session。每个表以1天分隔,对于每个表,它有自己的唯一名称,例如,日期表(30/12/2021)的名称为table.ga_session_20211230。对于其他表也是如此,命名格式类似于这个table.ga_session_YYYYMMDD。
现在,当我试图调用所有已分区表时,不能使用以下命令:。错误表明_PARTITIONTIME是不被识别的。
SELECT
*,
_PARTITIONTIME pt
FROM `table.ga_sessions_20211228`
where _PARTITIONTIME
BETWEEN TIMESTAMP('2019-01-01')
AND TIMESTAMP('2020-01-02')我也试过这个,但没有用。
select *
from between `table.ga_sessions_20211228`
and
`table.ga_sessions_20211229`我也不能使用FROM 'table.ga_sessions‘来应用WHERE子句来获取时间范围,因为表不存在。如何调用所有这些分区表?提前谢谢你!
发布于 2021-12-29 11:52:03
可以使用通配符表进行查询。例如:
SELECT max
FROM `bigquery-public-data.noaa_gsod.gsod*`
WHERE _TABLE_SUFFIX = '1929'这将专门查询gsod1929表,但如果需要,可以排除table_suffix子句。
在您的场景中,您可以:
select *
from table.ga_sessions_*`
WHERE _TABLE_SUFFIX BETWEEN '20190101' and '20200102'有关更多信息,请参见此处的文档:https://cloud.google.com/bigquery/docs/reference/standard-sql/wildcard-table-reference
https://stackoverflow.com/questions/70517849
复制相似问题