文章 查看内容

用窗口函数实现累计计算

用窗口函数实现累计计算

140 0 函数专题 2024-7-18 11:50 发布者: 观小凡

案例一:月累计销售额计算; 案例二:按销量排名计算商品小类的累计销量占比。
 

       用户有一张销售明细表,想计算出每月累计销售额,来衡量年度目标完成度。

图片.png

      ETL 和卡片里都可以实现,以下以卡片实现为例。

1. 在卡片里新建计算字段:

「年」: year([日期])
     --以年为分组累计求和,需要提取“年”; 如果以月为分组计算日累计,需要提取“年月”。
「累计销售额」:sum([销售金额])over(partition by [大区],[年] order by [日期])
     --使用开窗函数来根据特定维度计算累计销售金额。

图片.png

2. 把开窗函数里 partition by 后面的维度字段按照顺序加进维度栏,日期可用需要的日期颗粒度,把「累计销售额」加到数值栏,聚合方式改为“最大值”,对日期字段设置升序排列。如果有总计行,则该字段 “小计/总计” 需单独设置「以原始数据计算」或者「以聚合数据计算-最大值」(可参考下图)。

图片.png

1.  依次新建字段:

「月」:          month([日期])
「月累计销售额」:  max([累计销售额])over(partition by [大区],[年],[月])
「年度目标完成率」:[月累计销售额]/[年度目标]

2.  把「年度目标完成率」加入数值栏,聚合方式选“最大值”,“小计/总计”设置「以原始数据计算」或者「以聚合数据计算--最大值」。最终效果如下图。

图片.png

       用一张门店日交易明细表,计算商品小类的累计销量占比。累计销量占比=累计销量/总销量。

       累计销量是按照商品小类的销量从高到低排列后依次累加得到。例如商品小类C1在本年销量为4081,在所有小类中排名第1,累计销量就是C1的销量;商品小类A3本年销量在所有小类中排名第2,累计销量就是C1+A3的销量;以此类推。

       总销量为所有商品销量的合计销量。

图片.png

       计算商品销量的累计占比后,可以对商品进行分类。例如根据二八原则,将累计占比前80%的商品分为一类。

1.  在卡片里依次新建以下计算字段:

「商品小类销量」:sum([销量]) over(partition by [商品大类],[商品小类])
    --因为数据集中还有商品、日期、会员等维度,需要使用窗口函数计算商品小类的销量,用于下一步对聚合后的商品小类销量做排序。
「商品小类销量排名」:dense_rank() over(partition by 1 order by [商品小类销量] desc)
    --因为数据集中还有商品、日期、会员等维度,实际计算层级不只是卡片上显示的商品大类和商品小类,所以使用dense_rank来排名。
「累计销量」:sum([销量]) over(partition by 1 order by [商品小类销量排名])
「总销量」:  sum([销量]) over(partition by 1)
「累计占比」:[累计销量]/[总销量]

2.  将新建的字段中需要展示的字段添加到数值栏,并选择聚合方式为“最大值”;把「销量」拖入排序栏,降序排列即可。


路过

雷人

握手

鲜花

鸡蛋

评论

您需要登录后才可以发表言论 登录立即注册
微信服务号
联系我们
电话:400-880-0750
邮箱:hello@guandata.com
Copyright © 2001-2024 观远社区 版权所有 All Rights Reserved. 浙 ICP 备15006424号-3
去评论 去发文 返回顶部
返回顶部