数据可视化之分析篇(五)如何使用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时苦于没有数据,可以在公众号回复关键字"数据"获取我整理的近百个数据集。
数据可视化之分析篇(五)如何使用Power BI计算新客户数量?的更多相关文章
- 数据可视化之分析篇(二)Power BI 数据分析:客户购买频次分布
https://zhuanlan.zhihu.com/p/100070260 商业数据分析通常都可以简化为对数据进行筛选.分组.汇总的过程,本文通过一个实例来看看PowerBI是如何快速完成整个过程的 ...
- 数据可视化之PowerQuery篇(十五)如何使用Power BI计算新客户数量?
https://zhuanlan.zhihu.com/p/65119988 每个企业的经营活动都是围绕着客户而开展的,在服务好老客户的同时,不断开拓新客户是每个企业的经营目标之一. 开拓新客户必然要付 ...
- 数据可视化之分析篇(十)Power BI应用:如何计算在职员工数量?
https://zhuanlan.zhihu.com/p/128652582 经常碰到的一类问题是,如何根据起止日期来计算某个时间点的数量,比如: 已知合同的生效日期和到期日期,特定日期的有效合同有 ...
- 数据可视化之分析篇(三)Power BI总计行错误,这个技巧一定要掌握
https://zhuanlan.zhihu.com/p/102567707 前一段介绍过一个客户购买频次统计的案例: Power BI 数据分析应用:客户购买频次分布. 我并没有在文章中显示总计行 ...
- 数据可视化之分析篇(八)Power BI数据分析应用:结构百分比分析法
https://zhuanlan.zhihu.com/p/113113765 PowerBI数据分析02:结构百分比分析法 作者:海艳 结构百分比分析法,又称纵向分析,是指同一期间财务报表中不同项目间 ...
- 数据可视化之分析篇(七)Power BI数据分析应用:水平分析法
https://zhuanlan.zhihu.com/p/103264851 首先,以财务报表分析为例,介绍通用的分析方法论,整体架构如下图所示: (点击查看大图) 接下来我会围绕这五种不同的方法论, ...
- 数据可视化之DAX篇(十一)Power BI度量值不能作为坐标轴?这个解决思路送给你
https://zhuanlan.zhihu.com/p/79522456 对于PowerBI使用者而言,经常碰到的一个问题是,想把度量值放到坐标轴上,却发现无法实现.尤其是初学者,更是习惯性的想这么 ...
- 数据可视化之DAX篇(二)Power BI中的度量值和计算列,你搞清楚了吗?
https://zhuanlan.zhihu.com/p/75462046 对于初学者,总是会把度量值和计算列搞混,我也经常碰到这样的问题,有些星友用文章中的代码总是报错,发给我一看,才知道TA把本来 ...
- 数据可视化之DAX篇(一)Power BI时间智能函数如何处理2月29日的?
https://zhuanlan.zhihu.com/p/109964336 今年是闰年,有星友问我,在Power BI中,2月29日的上年同期是怎么计算的? 这是个好问题,正好梳理一下,Power ...
随机推荐
- Scrum Master教你四招,瓦解团队内部刺头
摘要:<Scrum精髓>一书中将Scrum Master的职责总结为六类:敏捷教练,服务型领导,“保护伞”,“清道夫”,过程权威,“变革代言人”.作为“保护伞“,Scrum Master应 ...
- docker 容器命令
语法docker run [OPTIONS] IMAGE [COMMAND] [ARG...] OPTIONS说明: -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/ST ...
- Spring AOP学习笔记03:AOP的核心实现之获取增强器
上文讲了spring是如何开启AOP的,简单点说就是将AnnotationAwareAspectJAutoProxyCreator这个类注册到容器中,因为这个类最终实现了BeanPostProcess ...
- linux服务器安装宝塔以及一些坑
首先在linux 下运行这一步命令yum install -y wget && wget -O install.sh http://download.bt.cn/install/ins ...
- SpringBoot 构建 Docker 镜像的 3 种方式
本文将介绍3种技术,通过 Maven 把 SpringBoot 应用构建成 Docker 镜像. (1)使用 spring-boot-maven-plugin 内置的 build-image. (2) ...
- C++ 公有继承、保护继承和私有继承的对比
在c++的继承控制中,有三种不同的控制权限,分别是public.protected和private.定义派生类时,若不显示加上这三个关键字,就会使用默认的方式,用struct定义的类是默认public ...
- docker 镜像删除
(我们以删除 php-fpm 这个镜像为例子) 一.查看镜像的 ID [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED ...
- docker在配置tomcat和spring boot远程调试
服务器部署项目后又时可能与本地开发效果不一致,怎么实现远程调试配置? docker中怎么进行配置? docker中tomcat实现远程调试配置 1. 配置docker-compose.yml CATA ...
- SpringMVC拦截器使用
源码地址 拦截器interceptor 拦截器是URL请求的第一道门,所有请求会先经过拦截器interceptor,然后再进入controller: 下面,记录一种通过注解方法拦截所有需要登录才能发起 ...
- 弹性盒模型中flex-grow 和flex的区别
在flex弹性盒模型体系中,flex-grow和flex都有对子元素进行放大的作用,但是这两个属性在放大时的计算方法不同,在使用时候要注意,使用正确的放大属性,从而达到自己想要的效果. 先来看下两个属 ...