Power BI中实现购物篮分析详解

一、购物篮分析简介

相信,很多人都听过沃尔玛购物篮分析的故事---“啤酒和尿布湿“,即分析购买尿布湿的顾客最喜欢购买的商品是什么?(啤酒)。在零售终端经营中,通过购物篮分析,分析不同商品之间销售的关联性,对于零售终端的商品布局摆放,有着非常重要的意义。下面就介绍一下,在Power BI中如何完成购物篮分析。

二、数据源表

两张数据源表,一张《销售单据》,一张《商品表》,如下图

表《销售单据》

流水单号

商品

数量

价格

金额

A0001

中华

1

45

45

A0002

中华

2

45

90

A0002

脉动

1

5

5

A0003

中华

1

45

45

A0003

脉动

2

5

10

A0003

打火机

1

1

1

A0004

奥利奥

1

10

10

A0004

脉动

1

5

5

A0004

打火机

1

1

1

A0004

口香糖

1

5

5

表《商品表》

商品

中华

脉动

打火机

奥利奥

口香糖

三、数据分析过程

步骤一、获取数据

1、将两张表添加到Power BI中,并将《商品表》,重新命名为《商品表(A)》

步骤二、建立关系

1、通过复制《商品表(A)》,新建一张表,并命名为《商品表(B)》

   商品表(B)=’商品表(A)’

2、在“模型视图”中,《商品表(A)》通过字段“商品”与《销售单据》建立1对多的关系(实线);《商品表(B)》通过字段“商品”与《销售单据》建立1对多的关系,但是此关系状态设置为未激活(虚线)。

步骤三、创建可视化对象

1、在“报表视图”中创建可视化对象---矩阵,并将《商品表(A)》中的“商品”设置为行,重命名为“商品A”。

2、创建可视化对象---切片器,并将《商品表(B)》中的“商品”设置为字段,重命名为“商品B”。

步骤四、创建度量值

1、新建度量值---客户数量

  客户数量 = DISTINCTCOUNTNOBLANK('销售单据'[流水单号])

  将“客户数量”设置为矩阵的值,矩阵中则显示出购买不同商品A的客户数量。

2、新建度量值---购买商品B的客户数量

购买商品B的客户数量 =

 // 取消《商品表(A)》的筛选功能,激活《商品表(B)》和《销售单据》之间的1对多关系,进而统计出购买商品B的客户数量

 VAR table1=CALCULATETABLE(VALUES('销售单据'[流水单号]),USERELATIONSHIP('商品表(B)'[商品],'销售单据'[商品]),ALL('商品表(A)'))

 VAR result1=CALCULATE('度量值表'[客户数量],table1)

 // 如果显示为空,则客户数量显示为0

 VAR result2=IF(ISBLANK(result1),0,result1)

 // 如果矩阵中行值(商品A)与切片器-商品B中勾选的商品相同,则客户数量显示为空

 VAR result=IF(SELECTEDVALUE('商品表(A)'[商品])=SELECTEDVALUE('商品表(B)'[商品]),BLANK(),result2)

 RETURN result

3、将度量值“购买商品B的客户数量”设置为矩阵的值,并重命名为“同时购买商品B的客户数量。

如果单独看度量值“购买商品B的客户数量”,它统计显示就只是购买商品B的客户数量,但是将其放入矩阵后,受到矩阵行(商品A)值的筛选影响,显示的就是购买商品A

同时购买了商品B的客户数量。如,将切片器-商品B中勾选“中华“,矩阵中第一行显示的就是购买商品A-脉动的客户数量为3个,其中有2个同时购买了商品B-中华。(矩阵中”同时购买商品B的客户数量按降序排列)

4、新建度量值---客户占比

客户占比 = DIVIDE('度量值表'[购买商品B的客户数量],'度量值表'[客户数量])

即购买了商品A同时购买商品B的客户占比。

5、将度量值“客户占比”设置为矩阵的值

6、新建度量值---购买商品B的金额

购买商品B的金额 =

// 取消《商品表(A)》的筛选功能,激活《商品表(B)》和《销售单据》之间的1对多关系,进而统计出购买商品B的金额

CALCULATE(SUM('销售单据'[金额]),USERELATIONSHIP('商品表(B)'[商品],'销售单据'[商品]),ALL('商品表(A)'))

7、新建度量值---同时购买商品B的金额

同时购买商品B的金额 =

 // 统计筛选出购买商品A的流水单号

 VAR tableA=CALCULATETABLE(VALUES('销售单据'[流水单号]))

 //  取消《商品表(A)》的筛选功能,激活《商品表(B)》和《销售单据》之间的1对多关系,进而统计出购买商品B的流水单号

 VAR tableB=CALCULATETABLE(VALUES('销售单据'[流水单号]),USERELATIONSHIP('商品表(B)'[商品],'销售单据'[商品]),ALL('商品表(A)'))

 // 购买商品A的流水单号与购买商品B的流水单号的交集,即为同时购买了商品A和商品B的流水单号,或者说是够买了商品A同时购买了商品B的流水单号

 VAR AandB=NATURALINNERJOIN(tableA,tableB)

 // 根据同时购买了商品A和商品B的流水单号,统计出同时购买商品B的金额

 VAR result=CALCULATE('度量值表'[购买商品B的金额],AandB)

 RETURN result

8、将度量值“同时购买商品B的金额” 设置为矩阵的值

在切片器-商品B中勾选“中华”,矩阵中显示商品A-脉动的客户数量为3个,其中有2个购买了商品B-中华,客户占比66.67%,同时购买商品B的金额为135。

步骤五、可视化图表优化

1、当切片器-商品B中勾选了某个商品比如“中华”,在矩阵商品A下方就不再显示该商品“中华”

选中可视化对象矩阵,打开“筛选器”对话框,在“同时购买商品B的客户数量”下方,将“显示值为以下内容的项”设置为“不为空”,点击右下角“应用筛选器”。最终效果显示如下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/66398.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CD4029计数器实测仿真及BCD转七段码

前面的博文中,我们介绍过CD40110(这是一个常见的直接接7段数码管的计数器,我们这里介绍一款新的计数器CD4029,这也是很常见的计数器,不同的是后者可以输出BCD编码。 文章目录 一、总体效果二、CD4029的管脚和功能介绍1、芯片功能简…

Spring 知识点

Spring 1.1 Spring 简介 1.1.1 Spring 概念 Spring是一个轻量级Java开发框架,最早有Rod Johnson创建为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题Spring最根本的使命是解决企业级应用开发的复杂性,即简化Java开发。使现有的技术更加容易使…

MapTR论文笔记

MAPTR: STRUCTURED MODELING AND LEARNING FOR ONLINE VECTORIZED HD MAP CONSTRUCTION 目的 传统高精地图 通过一些离线的基于 SLAM 的方法生成,需要复杂的流程以及高昂的维护费用。基于 bev 分割的建图方法,缺少向量化 实例级的信息,比如…

2023牛客暑期多校训练营7 I-We Love Strings (分块)

文章目录 题目大意题解参考代码 题目大意 题解 这题给定的 n n n 大小和 s i s_i si​ 的总长度有玄机。 我们发现: 400 2 0 2 40020^2 400202,对于每一组数据 n n n 的个数每增加一个, s i s_i si​ 的平均值就会减小。 处理相同的 l…

nginx 负载均衡

1.环境准备 我使用的说centos7的系统 1.20版本的nginx 另外还有3台虚拟机 主机:192.168.163.142 两台服务器:服务器A--192.168.163.140 服务器B---192.168.163.141 2.配置服务器A和B 找到nginx下的html目录,编辑其中的index.html(在此…

前端懒加载

懒加载的概念 懒加载也叫做延迟加载、按需加载,指的是在长网页中延迟加载图片数据,是一种较好的网页性能优化的方式。在比较长的网页或应用中,如果图片很多,所有的图片都被加载出来,而用户只能看到可视窗口的那一部分…

【Vue+Element-plus】记录后台首页多echart图静态页面

一、页面效果 二、完整代码 Index.vue <template><div><div><DateTime /><!-- {{username}} --></div><el-row :gutter"20"><el-col :span"8"><div class"grid-content bg-purple"><P…

中间件多版本冲突的4种解决方案和我们的选择

背景 在小小的公司里面&#xff0c;挖呀挖呀挖。最近又挖到坑里去了。一个稳定运行多年的应用&#xff0c;需要在里面支持多个版本的中间件客户端&#xff1b;而多个版本的客户端在一个应用里运行时会有同名类冲突的矛盾。在经过询问chatGPT&#xff0c;百度&#xff0c;googl…

Unity之ShaderGraph 节点介绍 Procedural节点

程序化 噪声Gradient Noise&#xff08;渐变或柏林噪声&#xff09;Simple Noise&#xff08;简单噪声&#xff09;Voronoi&#xff08;Voronoi 噪声&#xff09; 形状Ellipse&#xff08;椭圆形&#xff09;Polygon&#xff08;正多边形&#xff09;Rectangle&#xff08;矩形…

一位年薪40W的测试被开除,回怼的一番话,令人沉思

一位年薪40W测试工程师被开除回怼道&#xff1a;“反正我有技术&#xff0c;在哪不一样” 一技傍身&#xff0c;万事不愁&#xff0c;当我们掌握了一技之长后&#xff0c;在职场上说话就硬气了许多&#xff0c;不用担心被炒&#xff0c;反过来还可以炒了老板&#xff0c;这一点…

Flutter:文件读取—— video_player、chewie、image_picker、file_picker

前言 简单学习一下几个比较好用的文件读取库 video_player 简介 用于视频播放 官方文档 https://pub-web.flutter-io.cn/packages/video_player 安装 flutter pub add video_player加载网络视频 class _MyHomePageState extends State<MyHomePage> {// 控制器late…

瑞数系列及顶像二次验证LOGS

瑞数商标局药监局专利局及顶像二次验证 日期&#xff1a;20230808 瑞数信息安全是一个专注于信息安全领域的公司&#xff0c;致力于为企业和个人提供全面的信息安全解决方案。他们的主要业务包括网络安全、数据安全、应用安全、云安全等方面的服务和产品。瑞数信息安全拥有一支…

测试经理应该怎么写测试部门年终总结报告?

年终总结一般对季度、半年度或年度总结的一个整理&#xff0c;我们需要定期对工作中的内容进行定期总结和复盘。将每一次复盘中总结出来的一些收获叠加起来&#xff0c;在针对性地调整一下&#xff0c;就是一份合格的年终总结。具体可以分为如下几个步骤&#xff1a; 1.先把这…

《Zookeeper》源码分析(五)之 ServerCnxnFactory的工作原理(上)

目录 AcceptThread数据结构构造函数run() SelectorThread数据结构processAcceptedConnections()select()processInterestOpsUpdateRequests() 本文开始分析 ServerCnxnFactory的工作原理&#xff0c;按照顺序我们这样分析&#xff1a; 建立连接监听读写事件处理读写就绪的事件…

Jenkins+Docker+SpringCloud微服务持续集成

JenkinsDockerSpringCloud微服务持续集成 JenkinsDockerSpringCloud持续集成流程说明SpringCloud微服务源码概述本地运行微服务本地部署微服务 Docker安装和Dockerfile制作微服务镜像Harbor镜像仓库安装及使用在Harbor创建用户和项目上传镜像到Harbor从Harbor下载镜像 微服务持…

Java中ArrayList常用方法的学习

Java中ArrayList常用方法的学习 需求分析代码实现小结Time 需求分析 ArrayList集合的常用方法学习 代码实现 java.util.ArrayList;/*** Author:LQ* Description:* Date:Created in 16:45 2023/8/9*/ public class ListTest {public static void main(String[] args) {ArrayLis…

QT QLCDNumber 使用详解

本文详细的介绍了QLCDNumber控件的各种操作&#xff0c;例如&#xff1a;新建界面、源文件、设置显示位数、设置进制、设置外观、设置小数点、设置溢出、显示事件、其它文章等等操作。 实际开发中&#xff0c;一个界面上可能包含十几个控件&#xff0c;手动调整它们的位置既费时…

【源码编译并安装RocketMQ Dashboard】

【源码编译并安装RocketMQ Dashboard】 一、环境说明二、源码编译并执行三、小结 一、环境说明 安装环境&#xff1a;虚拟机VMWare Centos7.6 Maven3.6.3 JDK1.8已经安装了RocketMQ-5.1.3 单Master集群&#xff0c;且使用Local模式部署&#xff0c;即Broker和Proxy同进程部署…

springcloud3 bus+springconfig 实现配置文件的动态刷新(了解)

一 springcloud Bus的作用 1.1 springcloud的作用 spring cloud bus是用来将分布式系统的节点与轻量级消息系统链接起来的框架。 它整合了java的事件处理机制和消息中间件的功能。其中目前支持RabbitMQ和kafka 简介&#xff1a; bus实现多个服务的配置文件动态刷新。 1.2 …

Pytorch Tutorial【Chapter 3. Simple Neural Network】

Pytorch Tutorial【Chapter 3. Simple Neural Network】 文章目录 Pytorch Tutorial【Chapter 3. Simple Neural Network】Chapter 3. Simple Neural Network3.1 Train Neural Network Procedure训练神经网络流程3.2 Build Neural Network Procedure 搭建神经网络3.3 Use Loss …