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度量值和新建表,有什么异同?的更多相关文章

  1. 数据可视化之powerBI基础(十)快速度量值,帮你更快的进行数据分析

    https://zhuanlan.zhihu.com/p/64414831 刚开始学习PowerBI,最头疼的可能就是度量值了,毕竟用了Excel这么多年,只相信自己眼睛看到的,对于这个"虚 ...

  2. 数据可视化之powerBI基础(十二)PowerBI导入Excel数据有哪几种方式?

    https://zhuanlan.zhihu.com/p/64999937 Excel作为使用最频繁.应用最广泛.用户最庞大的数据处理工具,当然也应该是PowerBI最常用的数据获取方式,本文介绍一下 ...

  3. 数据可视化之powerBI基础(十四)Power BI中创建联动切片器

    https://zhuanlan.zhihu.com/p/67564062 进行数据分析时,每个分析维度并不总是独立的,比如省份是一个维度,城市也是一个维度,而这两个维度之间是有逻辑关系的,那么在进行 ...

  4. 数据可视化之powerBI基础(十九)学会使用Power BI的参数,轻松搞定动态分析

    https://zhuanlan.zhihu.com/p/55295072 静态的分析经常不能满足实际分析的需要,还需要引入动态分析,通过调节某个维度的增减变化来观察对分析结果的影响.在PowerBI ...

  5. 数据可视化之powerBI基础(十八)Power BI度量值的格式如何修改?这里有三种方式

    https://zhuanlan.zhihu.com/p/99818030 ​在知识星球遇到的问题中,有不少朋友问如何修改数值型度量值的格式,比如,新建的度量值如何显示为百分比或者千分位等等,这篇文章 ...

  6. 数据可视化之powerBI技巧(十)利用度量值,轻松进行动态指标分析

    在一个图表中,可以将多项指标数据放进去同时显示,如果不想同时显示在一起,可以根据需要动态显示数据吗?在 PowerBI 中当然是可以的. 下面就看看如何利用度量值进行动态分析. 假如要分析的指标有销售 ...

  7. 数据可视化之powerBI基础(十五)Power BI同步切片器,你知道怎么用吗?

    https://zhuanlan.zhihu.com/p/67932754 在PowerBI报表中,切片器绝对是最常用的控件了,利用它可以进行各种维度的动态切换,同一个页面中的所有图表可以同步响应:利 ...

  8. 数据可视化之powerBI基础(十六)PowerQuery的这个小功能,让你轻松发现数据质量问题

    https://zhuanlan.zhihu.com/p/64418072 源数据常常包含各种差错值,为了进行下一步的分析,我们必须先找出并更正这些差错,做这些工作几乎不会有什么快乐感可言,但却往往需 ...

  9. 数据可视化之powerBI入门(十)认识Power BI的核心概念:度量值

    https://zhuanlan.zhihu.com/p/64150720 本文学习PowerBI最重要的概念:度量值 初学Power BI一般都会对度量值比较困惑,毕竟对长期接触Excel的人来说, ...

随机推荐

  1. TensorFlow从0到1之TensorFlow多层感知机函数逼近过程(23)

    Hornik 等人的工作(http://www.cs.cmu.edu/~bhiksha/courses/deeplearning/Fall.2016/notes/Sonia_Hornik.pdf)证明 ...

  2. 记linux vsftpd配置遇到的错误

    环境:centos 7 yum安装 yum install -y vsftpd 增加用户 # 家目录为/www 并设置nologin useradd -d /www -s /sbin/nologin ...

  3. 个人工作用SQL短句,不定时更新

    表字段操作 --一.修改字段默认值 alter table 表名 drop constraint 约束名字 ------说明:删除表的字段的原有约束 alter table 表名 add constr ...

  4. 笨办法学python - 专业程序员的养成完整版PDF免费下载_百度云盘

    笨办法学python - 专业程序员的养成完整版PDF免费下载_百度云盘 提取码:xaln  怎样阅读本书 由于本书结构独特,你必须在学习时遵守几条规则 录入所有代码,禁止复制粘贴 一字不差地录入代码 ...

  5. AOF文件的写入与同步

    在 Redis 中客户端向服务器发送相关写命令请求,这时服务器中有个用于处理这些命令的事件循环进程,对这些命令进行处理,并将相关信息处理的结果反馈给客户端,如:"OK",等.同时, ...

  6. Centos7下的MySQL5.6安装

    yum install wget yum install perl perl-devel cd /usr/local/src wget https://cdn.mysql.com//Downloads ...

  7. linuxshell编程之环境变量配置文件 Tony Linux系统工程师

    视频参考慕课网 如果修改了环境变量的配置文件,要使得修改的环境变量生效可以使用下面的两个命令 下面是点后面加上了一个空格然后再加上配置文件,这里一定要注意下 这里要注意和隐藏文件的区别: 在linux ...

  8. 如果人生也能存档——C#中的备忘录模式

    大家好,老胡又和大家见面了.首先承认今天的博客有点标题党了,人生是没有存档,也没有后悔药的.有存档和后悔药的,那是游戏,不知道这是不是游戏让人格外放松的原因之一. 今天恰逢端午放假,就让我们来试着做一 ...

  9. python文件处理-将图像根据坐标画矩形标记

    内容涉及:文件遍历,选取csv后缀文件,用cv操作图片 import csv import os import sys import numpy as np import copy import sh ...

  10. npm安装加速

    1.通过config命令 npm config set registry https://registry.npm.taobao.org npm info underscore (如果上面配置正确这个 ...