DAX-期末余额计算

期末余额计算比较常见,比如,存货。DAX功能十分强大,丝毫不逊色MDX。

下面以一个实例说明,分别计算四种情况期末余额:

基本情况,地区表,商店表,数量表,日期表。

第一种情况,

2012

东城:5+3=8 (3/25/2012)

北城:0

南城:0

西城:8 (2/25/2012)

合计:5+3=8 (3/25/2012)

这种计算比较简单,

CALCULATE(SUM(Facts[Amount]),FILTER(DATE,'Date'[Date]=MAX(Facts[Date])))
CALCULATE(SUM(Facts[Amount]),LASTDATE(Facts[Date]))


类似MDX的LASTCHILD。

见下图,注意合计。

第二种情况,

2012

东城:5+3=8 (3/25/2012)

北城:0

南城:0

西城:21+8=29 (1/25/2012,2/25/2012)

合计:8+29=37

这种计算也不复杂,

SUMX(VALUES(Store[StoreId]),CALCULATE(SUM(Facts[Amount]),LASTDATE(Facts[Date])))


第三种情况,

2012

东城:5+3=8 (3/25/2012)

北城:14 (12/25/2012)

南城:11 (12/25/2012)

西城:8 (2/25/2012)

合计:8+14+11+8=41

这种计算很复杂,但是DAX足够强大,

SUMX(ADDCOLUMNS(ADDCOLUMNS(VALUES(Area[Name]),"LENEDate",CALCULATE(MAX(Facts[Date]),'Date'[Year]<=VALUES('Date'[Year]))),"Quantity",CALCULATE(SUM(Facts[Amount]),FILTER(ALL(DATE),'Date'[Date]=[LENEDate]))),[Quantity])


看下图,特别是合计和总计。

第四种情况,

2012

东城:5+3=8 (3/25/2012)

北城:14+7=21

南城:9+11=20

西城:21+8=29

合计:8+21+20+29=78

这种计算更加复杂,DAX表现非常出色。

SUMX(ADDCOLUMNS(ADDCOLUMNS(CROSSJOIN(VALUES(Store[Name]),VALUES(Area[Name])),"LENEDate",CALCULATE(MAX(Facts[Date]),'Date'[Year]<=VALUES('Date'[Year]))),"Quantity",CALCULATE(SUM(Facts[Amount]),FILTER(ALL(DATE),'Date'[Date]=[LENEDate]))),[Quantity])


最后,我们把这四种情况放在一起,作个比较,清晰明了,也可以体会DAX的强大和魅力。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值