BigQuery - 在读取多个表时选择分区键

时间:2018-05-31 02:25:20

标签: google-bigquery partition

我的表按日分区,如table_20180501table_20180502,... 它们没有日期列,因为它隐含了分区。我想在几个表中选择并在我的选择中获取日期。

这样的东西
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

1 个答案:

答案 0 :(得分:1)

以下是BigQuery Standard 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  

两个示例都会返回类似

的内容
Row dt          cnt  
1   20170717    2923     
2   20170718    3072     

希望这能为你提供正确的方向