我的表按日分区,如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
)
答案 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
希望这能为你提供正确的方向