DAX/PowerBI系列 - 累计总计(Cumulative Total, Running Total)
DAX/PowerBI系列 - 累计总计(Cumulative Total)
2017/07/23 更新:B列公式(见最后)
2019/08/08 更新:在可视化数据的时候,一定要选择日期维度的日期列来作显示不然会得不到期望的结果。
难度: ★★☆☆☆(2星)
适用: ★★☆☆☆(2星)
概况:
这个模式普遍适用对业务/操作基于时间进行累计统计度量,例如:计算年度累计,月度累计,库存量,库存价值。
正文:
上个图来个直观感受:已知一个表中库存变动,想知道当前库存是多少,这个模式就能够搞定。
你猜猜哪一列才是对的呢?
瞅瞅第四列【Cumulative Quantity】,再瞅瞅第三列非粗体部分:
欢迎转载,请保留原文链接和作者信息。O(∩_∩)O谢谢。
DAX/PowerBI系列 - 累计总计(Cumulative Total)
作者:马丁叔叔
链接:http://www.cnblogs.com/lizardbi/p/DAX-PATTERN-POWERBI-Cumulative-Total.html
应用场景:
以下是几个应用场景:
- 库存分析
- 每月月底库存,今日库存
- 资产负债表
- 统计资产,负债,权益
- 累计余额
欢迎交流与骚扰
最终PowerBI效果显示如下:(耐心等待PowerBI 出来,噔噔噔噔~~~)
数据模型:
要点:
- 如何得到有业务数据的最后日期
- CACULATE中SUM计算
回头看看开篇的图:
- 瞅瞅C列【Cumulative Quantity】,再瞅瞅B列,还有其他列(非粗体部分)
- D列没有check最后的Transactions.DateKey,所以显示到了Date的最后一个日期,这个当然不是想要的。
- S1, S2自己看看公式理解一下
B列 | C列 | |
Cumulative Quantity := IF ( MIN ( 'Date'[DateKey] ) <= CALCULATE ( MAX ( Transactions[DateKey] ), ALL ( Transactions ) ), CALCULATE ( SUM ( Transactions[Quantity] ), FILTER ( ALL ( 'Date'[Date] ), 'Date'[Date] <= MAX ( 'Date'[Date] ) ) ) )
|
Cumulative Quantity Unchecked := CALCULATE ( SUM ( Transactions[Quantity] ), FILTER ( ALL ( 'Date'[Date] ), 'Date'[Date] <= MAX ( 'Date'[Date] ) ) )
|
2017/07/23 更新:
B列公式可以为:
1 Cumulative Quantity := 2 CALCULATE ( 3 SUM ( Transactions[Quantity] ), 4 FILTER ( 5 ALL ( 'Date'[Date] ), 6 'Date'[Date] <= MAX ( 'Date'[Date] ) 7 ) 8 ,Transactions 9 )
这个效果跟上面的结果是一样的,原理是跟FilterContext有关,日期表根据Transactions表过滤掉没有数据的日期。
玩起来:
要把玩上面的PowerBI请戳上(最终PowerBI效果)
扩展:
如何评估库存总价值,请见:DAX/PowerBI系列 - 累计总计(Cumulative Total) - 库存总价值
参考文章: