数据可视化之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天, ...
随机推荐
- Python中的队列
参考资料: https://www.cnblogs.com/yhleng/p/9493457.html 问:我们为什么想使用队列? 答:为了方便,我就想喂给队列一堆object,就想让它们先进先出(F ...
- 这一次搞懂Spring自定义标签以及注解解析原理
前言 在上一篇文章中分析了Spring是如何解析默认标签的,并封装为BeanDefinition注册到缓存中,这一篇就来看看对于像context这种自定义标签是如何解析的.同时我们常用的注解如:@Se ...
- cc32a_demo-32dk2j_cpp_纯虚函数与抽象类-txwtech
//32dk2j_cpp_纯虚函数与抽象类cc32a_demo-txwtech//纯虚函数是用来继承用的//纯虚函数//抽象类-抽象数据类型//*任何包含一个或者多个纯虚函数的类都是抽象类//*不要/ ...
- C语言副本机制
1.除了数组外,其他都有副本机制(包括结构体数组) 2.结构体作为参数具有副本机制,结构体返回值也有副本机制 . 3.函数的参数和返回值都有他的副本机制. #include<stdio.h> ...
- 一文读懂:GBDT梯度提升
先缕一缕几个关系: GBDT是gradient-boost decision tree GBDT的核心就是gradient boost,我们搞清楚什么是gradient boost就可以了 GBDT是 ...
- 解决github打不开问题
2020.06.22 使用以下方式: 在https://github.com.ipaddress.com/找到: 在https://fastly.net.ipaddress.com/github.gl ...
- es性能调优---写优化操作
ES 的默认配置,是综合了数据可靠性.写入速度.搜索实时性等因素.实际使用时,我们需要根据公司要求,进行偏向性的优化. 写优化 假设我们的应用场景要求是,每秒 300 万的写入速度,每条 500 字节 ...
- 10TB级日志的秒级搜索
- 尚硅谷spring 事物管理
接下来我们重点来学习spring中的事务管理 接下来我们通过代码来实现 spring实现事物我们采用aop的方式来实现 获得连接和手动设置事物相当于@before标注的前置通知,conn.commit ...
- mac Pycharm 导入jieba报错解决
背景 新买的mac 用的还不是太熟,在用jieba做分词的时候,pycharm import说是没有安装,那我就直接点击安装呗,结果失败,说是当前渠道不能识别,ok,那我就开始一步一步来解决了. 正文 ...