一文搞懂半累加度量 | PowerBI星球

开始半累加的计算之前,我们先看看什么是累加、半累加以及不可累加数据。

在含有大量行的数据表中,各种数据处理语言,包括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,顺畅的进行各种半累加度量的计算并不会成为问题。


(0)

相关推荐

  • PBI | 如何获取最新报价日期和价格

    聊一下如何通过DAX度量值来获取最新单价!~ ▼ 数据源 问题:如何利用透视表来获取对应商品的最新报价日期和最新价格? 直接使用透视表,我们可以获取到最新的日期,但是最近价格却无法处理!使用我们需要借 ...

  • JavaScript - 认识对象

    什么是对象? 什么是对象: 其实就是一种类型,即[引用]类型.而对象就是[引用类型]的实例.在ECMAScript 中引用类型是一种[数据结构],用于将[数据和功能]组织在一起. 分析数据存储的历程: ...

  • 收藏!一文搞懂“顺周期”概念股!(名单)

    2020-11-17 19:01 导读 周期股近期表现抢眼,那到底什么是周期行业?为何被追捧?相关概念股有哪些? 近期热点涣散之下,"煤飞色舞钢花溅"行情再现.今日盘面上,煤炭.有 ...

  • 一文搞懂爬架如何管理

    愿    景:让天下没有难做的工程! 使    命:推动工程管理的创新和技术变革! 价 值 观:成就他人.成长自己! 宗旨目的:致力于成为工程人的知识共享平台,让沟通无障碍.让学习更快捷!  觉得文章 ...

  • 一文搞懂黎曼假设,解析数论的里程碑,质数理论的珠穆朗玛

    还记得质数吧?这是一个3000年前的问题: 2.3.5.7 .11.13 .17 .19 .23 .29. p.p是什么?31.下一个p是什么?这是37.后面的p呢?41..然后呢?43.但是,你怎么 ...

  • 一文搞懂麦克斯韦方程,现代科技的总基石,人类文明的加速器

    在我们开始之前,请注意,以任何有意义的方式讨论电磁学就意味着要讨论向量演算.请不要害怕,即使你不知道任何符号和术语的意思.向量微积分很难,但它的核心思想是直观的,我会在接下来的过程中解释一切. 在国际 ...

  • 一文搞懂“子午流注”与经气运行的关系

    人与自然界息息相关,就是说人体时时刻刻都在与自然界进行交流.所以<素问·六节藏象论>中指出:"天食人以五气,地食人以五味--气和而生,津液相成,神乃自生".说明了天供人 ...

  • 电缆BV、BLV、VV、VLV、KVV分别代表什么意思?一文搞懂!

    学造价网 建筑工程造价学习.交流知识平台公众号来源:电气圈如有侵权,请联系删除 1 电线电缆中BV.BLV等符号含义这些符号都是电线的一些型号,B系列归类属于布电线,所以开头用B,电压:300/500 ...

  • 中医:一文搞懂三焦辨证的主要内容

    吴鞠通沿用了<内经><难经>三焦之名,参照三焦的生理功能和病理变化,借用的是<灵枢·营卫生会><难经·三十一难>的三焦分部概念(即上焦病为手太阴肺和手厥 ...

  • 一文搞懂肾精、肾气与肾阴阳之间的联系与区别

    点击加载图片 一.肾精 肾为脏腑之本,生命之源,是因其具有藏精功能所决定的.肾所藏之精叫做肾精,精又能化气,而肾之精气的盛衰,关系到人体生长发育及衰老.换言之.人的生,长.壮.老规律是由肾的精气盛衰所 ...

  • 中医:一文搞懂人体的诸气之首

    宗气,是由经脾胃消化.吸收而来的水谷精微之气与从自然界吸入的清气结合而成.宗气在胸中积聚之处,称作"上气海",又名膻中.向下赖肺之肃降而蓄于丹田(下气海),并注人足阳明之气街(相当 ...