数据可视化之DAX篇(二十七)半累加度量,在Power BI 中轻松处理
https://zhuanlan.zhihu.com/p/96823622
开始半累加的计算之前,我们先看看什么是累加、半累加以及不可累加数据。
在含有大量行的数据表中,各种数据处理语言,包括DAX,为了性能考虑,不太可能总是检索表的每一行,更常见的情形是,一次性检索成千上万行,处理如此多行数据的最有效操作就是将它们加到一起,也就是累加汇总。
可以累加的数据类型就是可累加数据,比如订单表中的销售额,就是这种类型,无论是按照客户维度还是按照时间维度,都可以将每行的销售额直接汇总,并且这种汇总的结果都是有效的、有意义的。
但有些数据是不可累加的,比如价格,虽然是数值,但无论如何累加都是没有意义的,这就是不可累加数据,这类数据最常用的操作是计数或者取平均值。
还有些数据在某些情况下可以累加,但在特定情况下不可累加,比如银行账户的资金余额,可以按照客户维度进行汇总,但并不能按照时间维度进行每日资金余额的汇总操作,每日余额的汇总是没有意义的,这样的数据类型就称为半累加数据。
在这三种类型中,最灵活最有用的当然是完全可累加数据,也是我们最常用的;而不可累加数据是最不灵活的,甚至可以当成是文本类型来看待。
居于其中的就是半累加数据,下面根据一个小例子来理解半累加度量,并看看如何在Power BI中进行它的计算。
假设每日库存余额的数据如下:
新建一个基础度量值:
库存 = SUM('库存表'[库存余额])
半累加度量的可累加属性
当计算每日的库存合计余额时,结果是这样的,
每日的库存余额合计,实际上是在商品维度上汇总,此时体现的是它在商品维度的可累加属性。
半累加度量的不可累加属性
如果上下文是月份,把这个[库存]度量值放进去,结果是这样的,
这个结果实际上是每日的库存余额简单相加,明显是无意义的数字,这时就体现了库存余额在时间维度的不可累加属性。
对于这个不可累加属性,库存更常见的计算是期末余额,实际上就是最后一天的余额,建个度量值如下:
期末库存余额 = CALCULATE([库存],LASTDATE('日期表'[日期]))
结果如下:
这样1月和2月的结果就正确了,但有个问题是3月份竟然返回了空值?
这是因为LASTDATE返回的当前月份的最后一天,如果每日的库存数据都很完整,这样没有问题,但实际情况是有些数据只显示工作日的库存,比如上面的例子,3月31日是周末,3月份库存余额记录的最后一天是3月29日。
因此需要计算最后一个有数据的日期的库存余额,修改度量值如下,
期末库存余额 优化= CALCULATE([库存],FILTER(ALL('日期表'),'日期表'[日期]=MAX('库存表'[日期])))
这样就计算出了正确的结果,
还有个更简单的写法是利用LASTNONBLANK函数,找到最后一个有余额的日期,然后再计算该日期的库存余额,
期末库存余额 优化2= CALCULATE([库存],LASTNONBLANK('日期表'[日期],[库存]))
上面DAX的计算原理,就是先找出最后一天的日期,然后在这个日期,计算所有商品的累计库存余额。
通过这个计算过程就能很清晰的理解半累加度量在时间维度上不可累加、在其他维度上可累加的属性。
半累加度量的计算应注意细节,因为是数值型,在任一维度上累加都不会报错,但某些结果很可能是无效的;不过当你清晰的认识到这个属性以后,利用灵活的DAX,顺畅的进行各种半累加度量的计算并不会成为问题。
数据可视化之DAX篇(二十七)半累加度量,在Power BI 中轻松处理的更多相关文章
- 数据可视化之 图表篇(四) 那些精美的Power BI可视化图表
之前使用自定义图表,每次新打开一个新文件时,都需要重新添加,无法保存,在PowerBI 6月更新中,这个功能得到了很大改善,可以将自定义的图表固定在内置图表面板上了. 添加自定义图表后,右键>固 ...
- 数据可视化之DAX篇(十七)Power BI表格总计行错误的终极解决方案
https://zhuanlan.zhihu.com/p/68183990 我在知识星球收到的问题中,关于表格和矩阵(以下统称表格)总计行错误算是常见的问题之一了,不少初学者甚为不解,在Excel透视 ...
- 数据可视化之PowerQuery篇(十五)如何使用Power BI计算新客户数量?
https://zhuanlan.zhihu.com/p/65119988 每个企业的经营活动都是围绕着客户而开展的,在服务好老客户的同时,不断开拓新客户是每个企业的经营目标之一. 开拓新客户必然要付 ...
- 数据可视化之DAX篇(一)Power BI时间智能函数如何处理2月29日的?
https://zhuanlan.zhihu.com/p/109964336 今年是闰年,有星友问我,在Power BI中,2月29日的上年同期是怎么计算的? 这是个好问题,正好梳理一下,Power ...
- 数据可视化之DAX篇(二)Power BI中的度量值和计算列,你搞清楚了吗?
https://zhuanlan.zhihu.com/p/75462046 对于初学者,总是会把度量值和计算列搞混,我也经常碰到这样的问题,有些星友用文章中的代码总是报错,发给我一看,才知道TA把本来 ...
- 数据可视化之DAX篇(二十一)连接表的几个DAX函数,一次全掌握
https://zhuanlan.zhihu.com/p/67015995 编写DAX代码进行业务分析时,经常会用到表与表之间的连接计算,比如在之前的产品关联分析一文中(如何用Power BI分析产品 ...
- 数据可视化之DAX篇(二十八)Power BI时间序列分析用到的度量值,一次全给你
https://zhuanlan.zhihu.com/p/88528732 在各种经营分析报告中,我们常常会看到YTD,YOY这样的统计指标,这样的数据计算并不难,尤其是在PowerBI中,因为有时间 ...
- 数据可视化之DAX篇(十一)Power BI度量值不能作为坐标轴?这个解决思路送给你
https://zhuanlan.zhihu.com/p/79522456 对于PowerBI使用者而言,经常碰到的一个问题是,想把度量值放到坐标轴上,却发现无法实现.尤其是初学者,更是习惯性的想这么 ...
- 数据可视化之DAX篇(二十)Think in DAX 之报表自动化实践
https://zhuanlan.zhihu.com/p/107672198 本文来自星友袁佳林的实践分享,他参加了PowerBI星球中的DAX圣经第二版100天学习打卡活动,已持续分享近100天, ...
随机推荐
- uni-app热更新
开发工具HbuilderX开发框架 uni-app.h5+1.生成 App 资源升级包1.1.修改版本号1.2.首先,更新 manifest.json 中的版本号.比如之前是 1.0.0,那么新版本应 ...
- JavaScript常用项目(更新至19.11.17)
目录 项目一:鼠标拖动方块 项目二:网页显示键入字母 项目三:实现滚播图 项目四: 本地数据记事本 项目一:鼠标拖动方块 代码: <!DOCTYPE html> <html> ...
- Flume-1.4.0和Hbase-0.96.0整合
在使用Flume的时候,请确保你电脑里面已经搭建好Hadoop.Hbase.Zookeeper以及Flume.本文将以最新版的Hadoop-2.2.0.Hbase-0.96.0.Zookeeper-3 ...
- LR脚本信息函数-lr_user_data_point
Loadrunner中lr_user_data_point.lr_user_data_point_instance两个函数可以用来记录一条自定义的Vuser运行数据,并将其输出到测试结果中,最后可以通 ...
- Elasticsearch去重查询/过滤重复数据(聚合)
带家好,我是马儿,这次来讲一下最近遇到的一个问题 我司某个环境的es中被导入了重复数据,导致查询的时候会出现一些重复数据,所以要我们几个开发想一些解决方案,我们聊了聊,相出了下面一些方案: 1.从源头 ...
- vue+ajax的实现
html <tr> <td>用户名</td> <td id="t01"><input type="text" ...
- C++ 基于多态的职工管理系统
职工管理系统 1.管理系统需求 职工管理系统可以用来管理公司内所有员工的信息 本教程主要利用C++来实现一个基于多态的职工管理系统 公司中职工分为三类:普通员工.经理.老板,显示信息时,需要显示职工编 ...
- 让apk可调试
一定是这个 <application android:debuggable="true" 不是这个玩意, debugaable, 也不是debugable这个玩意
- mapper.xml文件映射配置
一.导入约束 为全局配置文件绑定dtd约束: 1)联网会自动绑定 2)没网的时候[/org/apache/ibatis/builder/xml/mybatis-3-mapper.dtd]:解压myba ...
- Win10搭建VM12.0.1虚拟机,虚拟机网络同宿主机ping不通的解决办法
准备系统学习Linux系统,在电脑搭建了一个CentOS虚拟机,希望能从宿主机连接至虚拟机. 尝试了很多办法,碰到各种坑,最后这个方法成功了! 分享给大家,希望有所帮助. 一.环境 1.宿主机:Win ...