数据可视化之powerBI基础(二十)Power BI度量值和新建表,有什么异同?
https://zhuanlan.zhihu.com/p/101812525
PowerBI中,有三个地方可以使用DAX,分别是度量值、新建列和新建表,这三个功能并成一排摆放在这里,如图所示,

之前的文章中曾介绍了度量值和计算列的异同(收藏 | Power BI计算列和度量值,一文帮你搞清楚),这篇文章再来带你认识度量值和新表的异同。
度量值和计算列容易混淆,但和新表好像并不会搞混,毕竟一个是值,一个是表,区别还是很大的。
但在实现特定的业务需求上,他们又都可以实现,下面以一个案例来介绍。
该案例来自知识星球中星友的提问,模拟一个订单表,包含客户名称、产品名称以及产品类目等,如下图:

需求:
仅购买过一个产品类目的客户有哪些?
购买过多个产品类目的客户有哪些?分别购买了哪些类目?
下面以新建表和度量值两种方式来实现。
新建表
因为这个需求返回的客户肯定不止一个,所以很自然的想到用新表的方式。
这个问题的关键是先统计出每个客户购买了几个类目,然后分别返回购买了一个和多个类目的客户列表就行了。
用DAX处理很简单,如下图,

先使用SUMMARIZE进行统计,然后FILTER返回等于1的表,只有B和C两个客户仅购买过一个类目的产品。
同理,购买了多个类目产品的客户可以这样写,

对于购买了多个类目的客户,还要列出来购买了哪些类目,可以在上面这个代码的基础上优化一下:

返回的表正好是需要的效果。
但是通过这种方式返回的客户列表是固定的,因为它的上下文已经被固化了,无法根据外部的筛选器返回不同的列表。
如果想要动态的实现需求,比如按照日期切片器,计算不同时间段的客户列表,怎么办呢?
动态的效果还是要靠度量值。
度量值
这种方式比较直接,只需要建两个简单度量值:
类目数量 = DISTINCTCOUNT('订单表'[产品类目])
类目列表 =
CONCATENATEX(SUMMARIZE('订单表','客户表'[客户],'订单表'[产品类目]),'订单表'[产品类目],"、")
这两个度量值的代码是不是要比新建表的DAX简单的多?你可以先思考一下是为什么?
把这两个度量值放入到矩阵中,客户名称作为行标题,就是我们要的效果,

想查看购买过一个类目或者多个类目的客户列表,使用筛选器就可以了,

并且它也可以动态响应外部筛选器,返回不同的结果,

就是这么简单。
总结
通过上面的示例,应该可以看出二者的区别,虽然都能返回一个特定的结果,但度量值更有优势:
代码更加简短,因为无需在代码中指明上下文;
计算更加灵活,因为它可以根据不同的上下文,实现动态的计算。
最根本的区别还是在于上下文,包括之前介绍过的计算列,三者比较,同样如此。
所以当你有了一个分析需求,想用PowerBI实现时,不要一上来就想DAX怎么写,用什么函数,而是先梳理自己的需求,审视自己的数据:
- 想要静态还是动态的效果?
- 是用新建表、计算列还是度量值来实现?
- 不同方式下,能提供的上下文是什么?
- 这个上下文是否有对应的维度表?
- 维度表与事实表是否已经建立了正确的关系?
最终的落脚点还是数据建模!
数据可视化之powerBI基础(二十)Power BI度量值和新建表,有什么异同?的更多相关文章
- 数据可视化之powerBI基础(十)快速度量值,帮你更快的进行数据分析
https://zhuanlan.zhihu.com/p/64414831 刚开始学习PowerBI,最头疼的可能就是度量值了,毕竟用了Excel这么多年,只相信自己眼睛看到的,对于这个"虚 ...
- 数据可视化之powerBI基础(十二)PowerBI导入Excel数据有哪几种方式?
https://zhuanlan.zhihu.com/p/64999937 Excel作为使用最频繁.应用最广泛.用户最庞大的数据处理工具,当然也应该是PowerBI最常用的数据获取方式,本文介绍一下 ...
- 数据可视化之powerBI基础(十四)Power BI中创建联动切片器
https://zhuanlan.zhihu.com/p/67564062 进行数据分析时,每个分析维度并不总是独立的,比如省份是一个维度,城市也是一个维度,而这两个维度之间是有逻辑关系的,那么在进行 ...
- 数据可视化之powerBI基础(十九)学会使用Power BI的参数,轻松搞定动态分析
https://zhuanlan.zhihu.com/p/55295072 静态的分析经常不能满足实际分析的需要,还需要引入动态分析,通过调节某个维度的增减变化来观察对分析结果的影响.在PowerBI ...
- 数据可视化之powerBI基础(十八)Power BI度量值的格式如何修改?这里有三种方式
https://zhuanlan.zhihu.com/p/99818030 在知识星球遇到的问题中,有不少朋友问如何修改数值型度量值的格式,比如,新建的度量值如何显示为百分比或者千分位等等,这篇文章 ...
- 数据可视化之powerBI技巧(十)利用度量值,轻松进行动态指标分析
在一个图表中,可以将多项指标数据放进去同时显示,如果不想同时显示在一起,可以根据需要动态显示数据吗?在 PowerBI 中当然是可以的. 下面就看看如何利用度量值进行动态分析. 假如要分析的指标有销售 ...
- 数据可视化之powerBI基础(十五)Power BI同步切片器,你知道怎么用吗?
https://zhuanlan.zhihu.com/p/67932754 在PowerBI报表中,切片器绝对是最常用的控件了,利用它可以进行各种维度的动态切换,同一个页面中的所有图表可以同步响应:利 ...
- 数据可视化之powerBI基础(十六)PowerQuery的这个小功能,让你轻松发现数据质量问题
https://zhuanlan.zhihu.com/p/64418072 源数据常常包含各种差错值,为了进行下一步的分析,我们必须先找出并更正这些差错,做这些工作几乎不会有什么快乐感可言,但却往往需 ...
- 数据可视化之powerBI入门(十)认识Power BI的核心概念:度量值
https://zhuanlan.zhihu.com/p/64150720 本文学习PowerBI最重要的概念:度量值 初学Power BI一般都会对度量值比较困惑,毕竟对长期接触Excel的人来说, ...
随机推荐
- 【环境安装】Docker安装
[环境安装]Docker安装 CentoOS-7 安装步骤: 1.卸载已经安装的Docker sudo yum remove docker \ docker-client \ docker-clien ...
- S7-200 PLC内部+5VDC电源的负载能力
S7-200 PLC内部+5VDC电源的负载能力 S7-200 CPU模块提供DC5V和24V电源:当有扩展模块时,CPU通过I/O总线为其提供5V电源,所有扩展模块的SV电源消耗之和不能超过该CPU ...
- 利用salt stack pillar安装多组keepalived
利用salt stack pillar安装多组keepalived 环境描述 在生产环境中,需要搭建三套keepalived环境,3个master和3个backup,要安装的软件和配置文件,虽然不是很 ...
- HTTP协议简要
HTTP协议简要 HTTP协议是指超文本传输协议,简单来说就是一种规则,允许将HTML文档从Web服务器传送到Web浏览器. HTTP请求 HTTP请求包括三部分:请求行(请求方法),请求头(消息报头 ...
- TensorFlow中读取图像数据的三种方式
本文面对三种常常遇到的情况,总结三种读取数据的方式,分别用于处理单张图片.大量图片,和TFRecorder读取方式.并且还补充了功能相近的tf函数. 1.处理单张图片 我们训练完模型之后,常常要用图片 ...
- Lens —— 最炫酷的 Kubernetes 桌面客户端
原文链接:https://fuckcloudnative.io/posts/lens/ Kubernetes 的桌面客户端有那么几个,曾经 Kubernetic 应该是最好用的,但最近有个叫 Lens ...
- ant +jmeter+jenkins接口自动化测试二
[Jmeter篇]Jmeter+Ant+Jenkins接口自动化测试集成之半路逆转(二) 橙子探索测试发表于橙子探索测试订阅 72 [Jmeter篇]jmeter+Ant+Jenkins接口自动化测试 ...
- 洛谷 CF1012C Hills (动态规划)
题目大意:有n个山丘 , 可以在山丘上建房子 , 建房子的要求是 : 该山丘的左右山丘严格的矮于该山丘 (如果有的话),你有一架挖掘机,每单位时间可以给一个山丘挖一个单位的高度,问你想要建造 1,2, ...
- 【Model Log】模型评估指标可视化,自动画Loss、Accuracy曲线图工具,无需人工参与!
1. Model Log 介绍 Model Log 是一款基于 Python3 的轻量级机器学习(Machine Learning).深度学习(Deep Learning)模型训练评估指标可视化工具, ...
- 小师妹学JVM之:JIT中的PrintAssembly
目录 简介 使用PrintAssembly 输出过滤 总结 简介 想不想了解JVM最最底层的运行机制?想不想从本质上理解java代码的执行过程?想不想对你的代码进行进一步的优化和性能提升? 如果你的回 ...