将连续月份分组在一起以对 HIVE 中的数据进行分类
Posted
技术标签:
【中文标题】将连续月份分组在一起以对 HIVE 中的数据进行分类【英文标题】:Grouping consecutive months together for categorizing data in HIVE 【发布时间】:2018-05-23 11:13:38 【问题描述】:我希望对连续几个月的数据进行分组,以了解趋势。
数据是这样的:
所需的(输出)分组如下:
在这里,我只想在连续 3 个月存在适当分组时才获得这些值(这可以像连续 2 个月或 4 个月那样变化),但没有数据中缺少任何月份值的情况.
例如:用户 1 有 2018-01 月份的值,但在本月的最终所需输出中没有可用的分组,因为 2017-11 到2018-01 或 2017-12 至 2018-02 或 2018-01 至 2018-03 本月分组。
【问题讨论】:
“月”的类型是什么? 【参考方案1】:嗯。 . .这是检查是否有连续三个月然后返回总和的一种方法:
select user, month, month_2, value_3
from (select t.*,
lead(month, 2) over (partition by user order by month) as month_2,
(sum(value) +
lead(value) over (partition by user order by month) +
lead(value, 2) over (partition by user order by month)
) as value_3
from t
) t
where month_2 = add_months(month, 2);
【讨论】:
以上是关于将连续月份分组在一起以对 HIVE 中的数据进行分类的主要内容,如果未能解决你的问题,请参考以下文章
SQL:将时间戳与仅时间参数相匹配,以对多天的唯一时间进行分组和计数