数据可视化之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 逛超市的时候,面对货架上琳琅满目的商品,你会觉得这些商品的摆放,或者不同品类的货架分布是随机排列的吗,当然不是. 应该都听说 ...
随机推荐
- 数据湖&数据仓库,别再傻傻分不清了
摘要:什么是数据湖?它有什么作用?今天将由华为云技术专家从理论出发,将问题抽丝剥茧,从技术维度娓娓道来. 什么是数据湖 如果需要给数据湖下一个定义,可以定义为这样:数据湖是一个存储企业的各种各样原始数 ...
- Pycharm下安装模块
方法一:使用Pycharm的终端安装 一.网络爬虫 1.安装requests包 作用:简洁且简单的处理HTTP请求的第三方库 网址:https://pypi.org/project/requests/ ...
- 数据库(mysql)基础操作
DDL(数据定义语言)------>建库,建表 DML(数据操作语言)------>对表中的记录操作增删改查 DQL(数据查询语言)------>对表中的查询操作 DCL(数据控制语 ...
- 006.OpenShift持久性存储
一 持久存储 1.1 持久存储概述 默认情况下,运行容器使用容器内的临时存储.Pods由一个或多个容器组成,这些容器一起部署,共享相同的存储和其他资源,可以在任何时候创建.启动.停止或销毁.使用临时存 ...
- java创建图片的缩略图
//java创建图片的缩略图private void createThumbnail(String filename, int thumbWidth, int thumbHeight, int qua ...
- 八张图彻底了解JDK8 GC调优秘籍-附PDF下载
目录 简介 分代垃圾回收器的内存结构 JDK8中可用的GC 打印GC信息 内存调整参数 Thread配置 通用GC参数 CMS GC G1参数 总结 简介 JVM的参数有很多很多,根据我的统计JDK8 ...
- 利用EasyMock生成数据库连接简单测试示例
package demo.mock; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.Re ...
- 慕课网 性能优化之MySQL优化--- max 和count的性能优化
注:在执行SQL语句前加上explain可以查看MySQL的执行计划 数据库:MySQL官方提供的sakila数据库 Max优化: 例如:查询最后支付时间 explain select max(pay ...
- Oracle数据库中,误删除或者修改数据恢复方法
在我们实际工作中,误删除或者修改Oracle数据库中的数据,怎么办呢?这里给大家分享一种解决办法.假如你误操作的时间不超过30分钟(数据库默认的回滚保持段里的数据时间,可以在pl/sql执行窗口按ct ...
- P2194 HXY烧情侣【Tarjan】
前言 当时和\(GYZ\)大佬一起做这个题,他表示这个题对他很不友好(手动滑稽) 题目描述 众所周知,\(HXY\) 已经加入了 \(FFF\) 团.现在她要开始喜(sang)闻(xin)乐(bing ...