如何在 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 中的多个列上执行模式功能