Part2-某零售公司年度销售情况分析项目

此部分用于展示某零售公司2015年销售情况分析项目的数据分析部分。

该篇文章目录如下

  1. 数据建模
    1.1 加载数据
    1.2 创建关系
    1.3 整理模型
  2. 确定分析思路
    2.1 整理分析思路
    2.2 确定分析步骤
  3. 模型分析
    3.1 确定分析指标
    3.2 根据RFM模型对客户分组
    3.3 根据订单销售额对订单分组
    3.4 根据订单准时情况对订单分组
    3.5 销售人员排名
  4. 模型整理
    4.1 创建层次结构
    4.2 创建KPI考核指标
    4.3 按列排序
    4.4 隐藏列

一. 数据建模

1. 加载数据

  • 销售记录:通过Power Query查询加载到模型。
  • 其他Excel文件:通过Power Pivot加载到模型。

2. 创建关系

通过Power Pivot 关系图视图创建关系如下,红框中的2015年销售人员任务额日期表两张表原始数据中并不具有包含匹配值的列,通过在2015年销售人员任务额中增加列来创建关系。

3. 整理模型

3.1 将日期表标记为日期表
3.2 建立事实表

建立事实表:将之后生成的度量值都放在事实表中,使模型结构更加清晰。

二、确定分析思路

1. 整理分析思路

该数据分析项目从人、货、场三个方面对销售情况进行分析,具体见下图。

2. 确定分析步骤

  • 确定分析指标
  • 根据RFM模型对客户分组
  • 根据订单销售额对订单分组
  • 根据订单准时情况对订单分组
  • 确定销售人员排名

三、模型分析

1. 确定分析指标

根据分析思路,在模型事实表中创建指标的度量值。

度量值 公式
总销售额 SUMX('销售记录','销售记录'[单价]*'销售记录'[数量])
2014年销售额 CALCULATE([总销售额],'日期表'[年份]=2014)
2015年销售额 CALCULATE([总销售额],'日期表'[年份]=2015)
2015年增长销售额 [2015年销售额]-[2014年销售额]
总任务额 SUM('2015年销售人员任务额'[任务额])
任务额完成率 DIVIDE([2015年销售额],[总任务额])
年累计YTD TOTALYTD([总销售额],'日期表'[日期])
季度累计QTD TOTALQTD([总销售额],'日期表'[日期])
月累计MTD TOTALMTD([总销售额],'日期表'[日期])
去年销售额 CALCULATE([总销售额],DATEADD('日期表'[日期],-1,YEAR))
同比YOY DIVIDE([总销售额]-[去年销售额],[去年销售额])
上月销售额 CALCULATE([总销售额],DATEADD('日期表'[日期],-1,MONTH))
环比MOM DIVIDE([总销售额]-[上月销售额],[上月销售额])
去年YTD销售额 CALCULATE([年累计YTD],DATEADD('日期表'[日期],-1,YEAR))
YTDYOY DIVIDE([年累计YTD]-[去年YTD销售额],[去年YTD销售额])
总客户数 COUNTA('客户'[客户ID])
已购买客户数 DISTINCTCOUNT('销售记录'[客户ID])
客户渗透率 DIVIDE([已购买客户数],[总客户数])
客单价 DIVIDE([总销售额],[已购买客户数])
总订单数 DISTINCTCOUNT('销售记录'[订单编号])
总销售量 SUM('销售记录'[数量])
平均订单数量 DIVIDE([总销售量],[总订单数])
平均订单金额 DIVIDE([总销售额],[总订单数])
总销售人员数 COUNTA('销售人员架构'[销售ID])
人效 DIVIDE([总销售额],[总销售人员数])

2. 根据RFM模型对客户分组

2.1 分组依据
  • 使用RFM模型对客户分组的依据见下表。
  • R F M 三个指标表达的含义见下表。
度量值 含义 判断标准
R 最近一次消费 最近一次消费比平均最近一次消费近则R为近,反之为远
F 消费频率 消费频率比平均消费频率高则F为高,反之为低
M 消费金额 消费金额比平均消费金额高则M为高,反之为低
  • 将RFM定义表格加载到Power Pivot模型中,创建近度计算列和R F M三个度量值。
度量值 所属表 公式
近度 销售记录 TODAY()-'销售记录'[下单日期]
R1 事实表 MIN('销售记录'[近度])
F1 事实表 DISTINCTCOUNT('销售记录'[订单编号])
M1 事实表 DIVIDE([总销售额],[F1])
2.2 建立链接回表
  • 通过SUMMARIZE函数对于销售记录按照客户ID 和客户名称进行聚合,拿到每个客户ID和客户名称对应的R F M值。将表加载回Power Pivot模型中,命名为链接回表-RFM
  • 增加计算列将RFM数值进行转换
计算列 所属表 公式
R值 链接回表-RFM IF('链接回表-RFM'[R]<AVERAGE('链接回表-RFM'[R]),"近","远")
F值 链接回表-RFM =IF('链接回表-RFM'[F]>AVERAGE('链接回表-RFM'[F]),"高","低")
M值 链接回表-RFM =IF('链接回表-RFM'[M]>AVERAGE('链接回表-RFM'[M]),"高","低")
RFM辅助列 链接回表-RFM ='链接回表-RFM'[R值]&'链接回表-RFM'[F值]&'链接回表-RFM'[M值]
RFM辅助列 RFM定义 ='RFM定义'[R]&'RFM定义'[F]&'RFM定义'[M]
2.3 更新模型关系

新的模型关系见下图。

2.4 判断客户类型
  • 销售记录增加计算列客户RFM类型:使用RELATED函数将RFM定义(关系的一端)中的客户类型列拿到销售记录(关系的多端)中。
  • 销售记录增加计算列是否是重要客户:使用IF函数进行判断,如果客户RFM类型列值为重要价值客户、重要保持客户、重要发展客户或者重要挽留客户,那么是否是重要客户列取值为重要客户,否则为一般客户。
计算列 所属表 公式
客户RFM类型 销售记录 RELATED('RFM定义'[客户类型])
是否是重要客户 销售记录 =IF('销售记录'[客户RFM类型]="重要价值客户"//'销售记录'[客户RFM类型]="重要保持客户"//'销售记录'[客户RFM类型]="重要发展客户"//'销售记录'[客户RFM类型]="重要挽留客户","重要客户","一般客户")
2.5 增加客户分类的度量值
度量值 所属表 公式
重要客户数量 事实表 CALCULATE([已购买客户数],'销售记录'[是否是重要客户]="重要客户")
重要客户占比 事实表 DIVIDE([重要客户数量],[总客户数])

3. 根据订单销售额对订单分组

3.1 分组依据
  • 订单分组依据见下图。
  • 订单分组依据表格加载到Power Pivot模型中。
3.2 建立链接回表
  • 通过SUMMARIZE函数对于销售记录按照订单编号进行聚合,拿到每个订单编号对应的订单销售额。
  • 将表加载回Power Pivot模型中,命名为链接回表-订单
3.3 更新模型关系

新的模型关系见下图。

3.4 判断订单类型
  • 链接回表-订单增加计算列订单分类:根据每个订单编号对应的订单销售额所在的区间返回相应的订单分类
  • 链接回表-订单增加计算列是否是大单:如果订单销售额大于2万,即为大单
  • 销售记录增加计算列是否是大单:使用RELATED函数将是否是大单从链接回表-订单(关系的一端)拿到销售记录(关系的多端)中。
计算列 所属表 公式
订单分类 链接回路-订单 IFERROR(CALCULATE(VALUES('订单分组依据'[订单分类]),FILTER('订单分组依据','事实表'[总销售额]>='订单分组依据'[最小值]&&'事实表'[总销售额]<'订单分组依据'[最大值])),"错误的分类")
是否是大单 链接回路-订单 IF('链接回表-订单'[订单分类]=">10万"//'链接回表-订单'[订单分类]="5万-10万"//'链接回表-订单'[订单分类]="2万-5万","大单","普通订单")
是否是大单 销售记录 =RELATED('链接回表-订单'[是否是大单])
3.5 增加订单分类的度量值
度量值 所属表 公式
大单数量 事实表 CALCULATE([总订单数],'销售记录'[是否是大单]="大单")
大单占比 事实表 DIVIDE([大单数量],[总订单数])

4. 根据订单准时情况对订单分组

4.1 分组依据
  • 根据订单准时情况对订单分组的依据见下表。
订单分类 分类依据
准时订单 每个订单编号对应的实际送货日期都小于预计送货日期
不准时订单 每个订单编号对应的实际送货日期有大于预计送货日期的情况
  • 创建提前送货时间计算列和最小提前送货时间度量值
度量值 所属表 公式
提前送货时间 销售记录 '销售记录'[预计送货日期]-'销售记录'[实际送货日期]
最小提前送货时间 事实表 MIN('销售记录'[提前送货时间])
4.2 更新链接回表
  • 更新链接回表链接回表-订单
  • 在Power Pivot模型中刷新。
4.3 判断订单类型
  • 链接回表-订单增加计算列是否是准时订单:如果最小提前送货时间>0就是准时订单,否则是不准时订单
  • 销售记录增加计算列是否是准时订单:使用RELATED函数将是否是准时订单从链接回表-订单(关系的一端)拿到销售记录(关系的多端)中。
计算列 所属表 公式
是否是准时订单 链接回表-订单 IF('链接回表-订单'[最小平均送货时间]>0,"准时订单","不准时订单")
是否是准时订单 销售记录 RELATED('链接回表-订单'[是否是准时订单])
4.4 增加订单分类的度量值
度量值 所属表 公式
准时交货订单数 事实表 CALCULATE([总订单数],'销售记录'[是否是准时订单]="准时订单")
准时交货率 事实表 DIVIDE([准时交货订单数],[总订单数])

5. 销售人员排名

5.1 排名依据
  • 通过权重求和进行排名
考核指标 权重
任务额完成率 0.6
客户渗透率 0.2
大单占比 0.1
重要客户占比 0.1
  • 增加任务额完成率客户渗透率大单占比重要客户占比计算列。
计算列 所属表 公式
任务额完成率2 销售人员架构 '事实表'[任务额完成率]
客户渗透率2 销售人员架构 '事实表'[客户渗透率]
大单占比2 销售人员架构 '销售人员架构'[大单占比2]
重要客户占比2 销售人员架构 '事实表'[重要客户占比]
5.2 判断销售人员排名
  • 增加销售代表排名分数销售代表排名计算列
计算列 所属表 公式
销售代表排名分数 销售人员架构 RANK.EQ('销售人员架构'[任务完成率],'销售人员架构'[任务完成率])0.6+RANK.EQ('销售人员架构'[客户渗透率2],'销售人员架构'[客户渗透率2])0.2+RANK.EQ('销售人员架构'[大单占比2],'销售人员架构'[大单占比2])0.1+RANK.EQ('销售人员架构'[重要客户占比2],'销售人员架构'[重要客户占比2])0.1
销售代表排名 销售人员架构 RANK.EQ('销售人员架构'[销售代表排名分数],'销售人员架构'[销售代表排名分数],ASC)

四、模型整理

1. 创建层级结构

产品分类表中加入产品层级结构,便于后续进行钻取分析。

2 . 创建KPI考核指标

将任务额完成率设置为KPI,定义目标值为绝对值1。>1为优秀,0.95-1为良好,<0.95不合格。

3. 按列排序

  • 增加两个计算列月份2季度2
计算列 所属表 公式
月份2 日期表 MONTH('日期表'[日期])
季度2 日期表 SWITCH('日期表'[月份2],1,1,2,1,3,1,4,2,5,2,6,2,7,3,8,3,9,3,10,4,11,4,12,4)
  • 月份设置为按照月份2排序,季度设置为按照季度2排序。

4. 隐藏列

隐藏不需要的列,最终的模型关系图视图见下图。

该项目数据分析部分结束。请阅读该项目其他数据分析步骤的文章。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,884评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,212评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,351评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,412评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,438评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,127评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,714评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,636评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,173评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,264评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,402评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,073评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,763评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,253评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,382评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,749评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,403评论 2 358