数据可视化之PowerQuery篇(十五)如何使用Power BI计算新客户数量?
https://zhuanlan.zhihu.com/p/65119988
每个企业的经营活动都是围绕着客户而开展的,在服务好老客户的同时,不断开拓新客户是每个企业的经营目标之一。
开拓新客户必然要付出一定的费用支出,费用支出除以新客户数,就是新客成本,新客成本的高低也决定了企业的盈利水平。
客户拓展费用支出相对容易衡量,而新客户的数量如何计算呢?
表面上感觉计算起来并不难,但如何从数万笔的订单数据中,快速计算任意一个时间段有多少新客户?使用传统的Excel函数并不是那么容易计算的。
本文就来尝试在PowerBI中,使用度量值来快速计算出新客户数量,以及更进一步,计算出新客户的购买金额。
示例数据模型中有一个订单表和一个日期表,通过订单日期建立关系,先建立两个简单的度量值如下:
客户数 = DISTINCTCOUNT('订单'[客户姓名])
销售金额 = SUM('订单'[销售额])
然后直接写出新客户数量的度量值:
新客户数 =
VAR FirstOrderDate=
ADDCOLUMNS (
ALL ('订单'[客户姓名]),
"首次购买日期",
CALCULATE(
MIN('订单'[订单日期]),
ALLEXCEPT('订单','订单'[客户姓名])
)
)//计算每一个客户的首次购买日期
VAR NewCustomers=
FILTER (
FirstOrderDate,
CONTAINS(
VALUES ('日期表'[日期]),
'日期表'[日期], [首次购买日期]
)
)//返回新客户列表
RETURN
CALCULATE([客户数],NewCustomers)
看起来很长,其实主要就是两个VAR定义的虚拟表,第一个虚拟表FirstOrderDate返回的是所有客户名称以及每一个客户首次购买日期。
这其中只有一个函数之前的文章中没有使用过:ALLEXCEPT,关于该函数的含义和用法可以参考这个函数卡片:
知识星球中每日函数卡片
VAR定义的第二个虚拟表NewCustomers,返回的是任意时间段内,新客户的列表。
然后使用COUNTROWS(NewCustomers)就计算出了新客户的数量,总客户数减去新客户数量就是老客户数量。

从上表数据中可以看到,第一个月全部是新客户(这里假设是从1月开始经营),到4月开拓的新客户达到峰值,虽然总体客户数量一直在增长,但新客户开拓速度明显下降,后期主要靠老客户的重复购买。

更进一步地,使用度量值来计算新客户的销售金额。
新客户购买金额 =
VAR FirstOrderDate=
ADDCOLUMNS (
ALL ('订单'[客户姓名]),
"首次购买日期",
CALCULATE(
MIN('订单'[订单日期]),
ALLEXCEPT('订单','订单'[客户姓名])
)
)//计算每一个客户的首次购买日期
VAR NewCustomers=
FILTER (
FirstOrderDate,
CONTAINS(
VALUES ('日期表'[日期]),
'日期表'[日期], [首次购买日期]
)
)//返回新客户列表
RETURN
CALCULATE([销售金额],NewCustomers)
这段代码和计算新客户数量的DAX,只有最后一行不一样,计算新客户数量时,使用COUNTROWS返回新客户列表的行数,而这里使用CALCULATE([销售金额],NewCustomers)来计算新客户的销售额。
所以,无论是计算新客户数量还是求新客户的销售额,重点就是如何获得新客户的列表。
同样,总销售金额减去新客户的购买金额,就是老客户的重复购买金额。

上表中外部上下文是每月,实际上,可以选择任意时间段,比如想看看国庆促销期间增加的新客户,只要选择10月1日到10月7日这个期间,上面度量值会立即计算出这7天里增加的新客户和新客户的购买金额。
如果你刚接触并打算学习PowerBI,我整理了一本从零开始学习PowerBI的电子书,微信公众号「PowerBI星球」后台回复关键字“PowerBI”可免费获取这本电子书,看完这本书,你基本上就入门了,使用PowerBI进行简单的数据处理和分析没有问题。
如果你学习PowerBI时苦于没有数据,可以在公众号回复关键字"数据"获取我整理的近百个数据集。
数据可视化之PowerQuery篇(十五)如何使用Power BI计算新客户数量?的更多相关文章
- 数据可视化之分析篇(六)使用Power BI进行流失客户分析
https://zhuanlan.zhihu.com/p/73358029 为了提升销量,在不断吸引新客户的同时,还要防止老客户离你而去,但每一个顾客不可能永远是你的客户,不可避免的都会经历新客户.活 ...
- 数据可视化之分析篇(五)如何使用Power BI计算新客户数量?
https://zhuanlan.zhihu.com/p/65119988 每个企业的经营活动都是围绕着客户而开展的,在服务好老客户的同时,不断开拓新客户是每个企业的经营目标之一. 开拓新客户必然要付 ...
- 数据可视化之PowerQuery篇(十一)使用Power BI进行动态帕累托分析
https://zhuanlan.zhihu.com/p/57763423 上篇文章介绍了帕累托图的用处以及如何制作一个简单的帕累托图,在 PowerBI 中可以很方便的生成,但若仅止于此,并不足以体 ...
- 数据可视化之powerBI技巧(五)在Power BI中写出优雅的度量值是什么体验?
之前的文章(采悟:连接表的几个DAX函数,一次全掌握)介绍了产品A的客户与产品B的客户的各种交叉关系,其中最常用的应该是找出A和B的共同客户,以便进行产品关联分析. 之前的思路是计算出两个产品的共同客 ...
- 数据可视化之 图表篇(三)体验Power BI最新发布的AI图表:分解树
在刚刚发布的11月更新中,PowerBI界面全新改版,采用和Office套件相似的Ribbon风格,除了这个重大变化,还发布了一个AI黑科技图表:分解树(Decomposition Tree). 无论 ...
- 数据可视化之PowerQuery篇(五)PowerQuery文本处理技巧:移除和提取
https://zhuanlan.zhihu.com/p/64419762 每当拿到原始数据,不如意十有八九,快速准确的清洗数据也是必备技能,数据清洗正好是 PowerQuery 的强项,本文就来介绍 ...
- 数据可视化之分析篇(一)使用Power BI进行动态帕累托分析
https://zhuanlan.zhihu.com/p/57763423 通过简单的点击交互,就能进行动态分析发现见解,才是我们需要的,恰好这也是 PowerBI 所擅长的. 就帕累托分析来说,能从 ...
- 数据可视化之PowerQuery篇(十六)使用Power BI进行流失客户分析
https://zhuanlan.zhihu.com/p/73358029 为了提升销量,在不断吸引新客户的同时,还要防止老客户离你而去,但每一个顾客不可能永远是你的客户,不可避免的都会经历新客户.活 ...
- 数据可视化之PowerQuery篇(十四)产品关联度分析
https://zhuanlan.zhihu.com/p/64510355 逛超市的时候,面对货架上琳琅满目的商品,你会觉得这些商品的摆放,或者不同品类的货架分布是随机排列的吗,当然不是. 应该都听说 ...
随机推荐
- 代码点(code point)和代码单元(code units)
1. 解释一 char:Java中,char类型为16个二进制位,原本用于表示一个字符.但后来发现,16位已经不够表示所有的字符,所以后来发展出了代码点表示字符的方法. 代码点(code point) ...
- 授权函数-web_set_certificate_ex
设置证书和密钥文件属性. int web_set_certificate_ex(const char * option_list,LAST); 该函数与Loadrunner 录制设置属性中的Recor ...
- view中显示部分区域
在android中有时候要求只显示view的部分区域,这个时候就需要对当前的view进行剪裁的操作.在android中剪裁当前的view的有两种方法:一种是直接截取view,第二种是通过Outline ...
- 果然学习好是有道理的,学习Mysql与正则表达式笔记
正则表达式是用来匹配文本的特殊的字符集合,将一个正则表达式与文本串进行比较,Mysql中用where子句提供支持,正则表达式关键字:regexp1.使用‘|’匹配两个串中的一个 2.使用‘[]’匹配几 ...
- 03.DRF-设计方法
RESTful设计方法 1. 域名 应该尽量将API部署在专用域名之下. https://api.example.com 如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下. https:/ ...
- 基于SSM框架的新生报到可视化系统
1.本课题的目的及意义 新生报到数据一直是困扰着各大高校的管理性问题,人数多.工作量大,这无疑是一个挑战,也因此加快了高校的信息化建设步伐.随着互联网的普及与发展,日常生活中人们接触到的数据正以惊人的 ...
- WeChair项目Beta冲刺(10/10)
团队项目进行情况 1.昨日进展 Beta冲刺第十天 昨日进展: 项目完工 2.今日安排 对小程序进行测试,同时对项目进行总结,并整理博客材料等 3.燃尽图 4.展示Git当日代码记录 详情 ...
- 谈谈spring-boot-starter-data-redis序列化
在上一篇中springboot 2.X 集成redis中提到了在spring-boot-starter-data-redis中使用JdkSerializationRedisSerializerl来实现 ...
- 都在讲DevOps,但你知道它的发展趋势吗?
根据最近的一项集体研究,DevOps的市场在2017年创造了约29亿美元的产值,预计到2022年,这个数字将达到约66亿美元.人工智能的融入和安全性的融入,加上向自动化的巨大转变,可合理预测,在202 ...
- mysql无限级分类
第一种方案: 使用递归算法,也是使用频率最多的,大部分开源程序也是这么处理,不过一般都只用到四级分类. 这种算法的数据库结构设计最为简单.category表中一个字段id,一个字段fid(父id).这 ...