BigQuery - Select 读取多个表时的分区键
BigQuery - Select partition key when reading across several tables
我的表按天分区,例如 table_20180501
、table_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
希望这能给你正确的方向
我的表按天分区,例如 table_20180501
、table_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
希望这能给你正确的方向