BigQuery - выберите ключ раздела при чтении по нескольким таблицам - PullRequest
0 голосов
/ 31 мая 2018

Мои таблицы разбиты по дням, как table_20180501, table_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 голосов
/ 31 мая 2018

Ниже приведены примеры для 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     

Надеюсь, это даст вам правильное направление

...