如何在 Google Big Query 中总结月份?

Posted

技术标签:

【中文标题】如何在 Google Big Query 中总结月份?【英文标题】:How to sum month in Google Big Query? 【发布时间】:2020-12-03 18:09:42 【问题描述】:

我正在使用 Google Big Query,我正在尝试汇总每个月的数据(每天提供)。

SELECT sum(EXTRACT(MONTH FROM date)) as month, region_name, avg(stringency_index) as stringency_index, sum(deaths) as deaths FROM `bigquery-public-data.covid19_govt_response.oxford_policy_tracker`
WHERE (stringency_index is not null) and (region_name = "New York" OR region_name = "Florida") AND (date BETWEEN '2020-05-01' AND '2020-12-30')
GROUP BY region_name, date
ORDER BY EXTRACT(MONTH FROM date);

但它仍然每个月显示 30 多行,让我相信它不是对月份求和,但仍然按数据向我提供数据。我会使用 TRUNC 函数吗?问题是这个数据集中日期的列标签是日期,所以如果日期既是列名又是变量,我不知道如何 TRUNC(MONTH as date)。

感谢任何帮助。

谢谢你, 女阴

【问题讨论】:

mysql 与 BigQuery 不同,您的问题是 GROUP BY 按日期分组,而不是按月份分组。尝试GROUP BY EXTRACT(MONTH FROM date) 保持一致。 【参考方案1】:

首先,我建议截断日期。那么:

SELECT date_trunc(date, month) as month, region_name, 
       avg(stringency_index) as stringency_index,
       sum(deaths) as deaths
FROM `bigquery-public-data.covid19_govt_response.oxford_policy_tracker`
WHERE stringency_index is not null and 
      region_name IN ('New York', 'Florida') AND
       date BETWEEN '2020-05-01' AND '2020-12-30'
GROUP BY region_name, month
ORDER BY month;

您的查询的问题是您按date 聚合。您可以通过按月汇总来修复它;我认为完整的日期更安全——尽管 COVID 数据尚未存在整整一年,所以现在,您不必担心不同年份的几个月的数据。

【讨论】:

@yonikasz,我已经测试了 Gordon 的解决方案,它回答了你的问题。请考虑accepting他的回答,这有助于其他社区成员在遇到相同问题时找到答案。

以上是关于如何在 Google Big Query 中总结月份?的主要内容,如果未能解决你的问题,请参考以下文章

Big Query-如何在 Big Query 中按浏览量、用户每周比较数据

如何将 Google Cloud SQL 与 Google Big Query 集成

如何通过 Google 表格中的二维数组通过 Apps 脚本插入 Big Query?

如何在 Google Big Query 中的多个列上执行模式功能

如何在 google Big Query 上添加页面浏览量维度?

使用 Google Big Query 在 Google App 脚本上超过最大执行时间