BigQuery - 跨多个表读取时选择分区键
Posted
技术标签:
【中文标题】BigQuery - 跨多个表读取时选择分区键【英文标题】:BigQuery - Select partition key when reading across several tables 【发布时间】:2018-05-31 02:25:19 【问题描述】:我的表是按天分区的,比如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
)
【问题讨论】:
您是否尝试过将通配符表与标准 SQL 一起使用? *** 上应该已经有很多例子了。 【参考方案1】:以下是 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
两个例子都会返回类似
Row dt cnt
1 20170717 2923
2 20170718 3072
希望这能给你正确的方向
【讨论】:
谢谢!我正在使用 Looker,但我认为我无法控制日期范围查询的格式,但我想这很具体以上是关于BigQuery - 跨多个表读取时选择分区键的主要内容,如果未能解决你的问题,请参考以下文章