hive计算本月和上月某个统计值的环比

这篇文章旨在解决相邻两个月的统计值环比问题,比如说指标是饭店的自然月客流量指标,这个指标在月初和月中进行数值环比没有一点问题,但是相邻两个月月末一对比就会出现问题:月末应该怎么去对比呢?有的月是31天,有的是30天,有的是28天等等。

 

比如说4月和5月,那么就应该拿5.31号的数据环比4.30号的数据。

比如说2月和3月,月末应该拿3.31号数据对比2.28号数据,3.30号数据对比2.28号数据...3.27号数据对比2.27号数据。

比如说5月和6月数据,月末应该拿6.30号数据对比5.31号数据,6.29号数据对比5.29号数据。

 

基于以上情况,这里提供一个比较完善的解决方案,假如说9.1号统计的是8.31号的数据分区,那么本月的数据分区直接取-1d_分区字段即可。

上月数据分区按照以下逻辑进行获取:

如果今任务版本日期是1号,那么就是需要上月月末指标值和上上月月末指标值进行对比,本月数据的数据分区直接取上月月末分区字段,对比的数据分区取上上月月末数据分区。

如果任务版本日期不是1号且统计日的日期(昨天)的天数数值大于等于上月月末分区的天数数值(比如说3月和2月,3月30大约2月28),那么对比的上月数据分区就取上月月末分区。

如果版本日期不是1号且统计日的日期(昨天)的天数数值小于上月月末分区的天数数值,俩个月同一天数据分区(比如说3月和2月,3月17的17小月2.28的28,所以对比日期就是3.17和2.17的指标数据)。

比如说是22号统计
        where pt= case when '统计日当天天数(格式:22)'='01' then '上上月月末时间分区'
            when concat('上个月月份(格式:202008)','统计日昨天天数(格式:21)')>='上月月末日期(格式:20200831)' then '上月月末时间分区'
            else 上个月月份+统计日昨天天数拼接成时间分区
        end

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值