简体   繁体   中英

Querying all partition table

I have around 600 partitioned tables called table.ga_session. Each table is separated by 1 day, and for each table it has its own unique name, for example, table for date (30/12/2021) has its name as table.ga_session_20211230. The same goes for other table, the naming format would be like this table.ga_session_YYYYMMDD.

Now, when I try to call all partitioned table, I cannot use command like this:. The error showed that _PARTITIONTIME is unrecognized.

SELECT 
*,
_PARTITIONTIME pt

FROM `table.ga_sessions_20211228` 

where _PARTITIONTIME 

BETWEEN TIMESTAMP('2019-01-01') 

AND TIMESTAMP('2020-01-02')

I also tried this and does not work

select *
from between `table.ga_sessions_20211228` 
and 
`table.ga_sessions_20211229`

I also cannot use FROM 'table.ga_sessions' to apply WHERE clause to take out range of time as the table does not exist. How do I call all of these partitioned table? Thank you in advance!

You can query using wildcard tables. For example:

SELECT max
FROM `bigquery-public-data.noaa_gsod.gsod*`
WHERE _TABLE_SUFFIX = '1929'

This will specifically query the gsod1929 table, but the table_suffix clause can be excluded if desired.

In your scenario you could do:

select *
from table.ga_sessions_*`
WHERE _TABLE_SUFFIX BETWEEN '20190101' and '20200102'

For more information see the documentation here: https://cloud.google.com/bigquery/docs/reference/standard-sql/wildcard-table-reference

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM