BigQuery - Select 读取多个表时的分区键

BigQuery - Select partition key when reading across several tables

我的表按天分区,例如 table_20180501table_20180502、... 它们没有日期列,因为它隐含在分区中。我想 select 跨多个表并在我的 selection 中获取日期。

类似

SELECT
    _TABLE_SUFFIX as date,
    *
FROM (TABLE_DATE_RANGE(
    [table_],
    TIMESTAMP(DATE_ADD(TIMESTAMP(CONCAT(CURRENT_DATE(), ' 00:00:00')), -39, 'DAY')),
    TIMESTAMP(DATE_ADD(DATE_ADD(DATE_ADD(TIMESTAMP(CONCAT(CURRENT_DATE(), ' 00:00:00')), -39, 'DAY'), 40, 'DAY'),-1, 'SECOND'))
))

那行不通 (Field '_TABLE_SUFFIX' not found)

以下是 BigQuery 标准的示例 SQL

#standardSQL
SELECT
  _TABLE_SUFFIX AS dt,
  COUNT(1) cnt
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE _TABLE_SUFFIX BETWEEN '20170718' AND '20170719'
GROUP BY dt   


#standardSQL
SELECT
  _TABLE_SUFFIX AS dt,
  COUNT(1) cnt
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 318 DAY)) 
  AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 317 DAY))
GROUP BY dt  

两个例子都会 return 类似于

Row dt          cnt  
1   20170717    2923     
2   20170718    3072     

希望这能给你正确的方向