【问题标题】:Querying all partition table查询所有分区表
【发布时间】:2021-12-29 10:01:34
【问题描述】:

我有大约 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 子句来取出时间范围,因为表不存在。我如何调用所有这些分区表?提前谢谢!

【问题讨论】:

    标签: sql google-bigquery


    【解决方案1】:

    您可以使用通配符表进行查询。例如:

    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

    【讨论】:

    • 有效!!谢谢你,先生。我不会通过谷歌搜索发现这一点。
    猜你喜欢
    • 2019-05-05
    • 1970-01-01
    • 2017-04-25
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多