【发布时间】:2016-09-01 12:14:36
【问题描述】:
我有一张跨部门工资支付的表格(“Y 的天数”= 年初以来的天数,“M 的天数”= 月末的天数)
Department | Salary | Date | Type | Days from Y | Days to M
-----------+--------+------------+-----------------+-------------+-----------
Finance | 71 | 01-01-2016 | Regular payment | 1 | 30
Sales | 3000 | 20-01-2016 | Regular payment | 20 | 11
Sales | -300 | 21-01-2016 | Correction | 21 | 10
Finance | 2000 | 01-02-2016 | Regular payment | 32 | 27
Sales | 3100 | 15-02-2016 | Regular payment | 46 | 12
对于定期付款,需要更正工资以显示为一整月。但是,下个月不能包括上个月的更正(因为新的工资已经规定了)——只包括上个月的更正!
对于销售,那将是:
Date | Salary | Salary (cum.) | Correction | Salary (corr.) cum.
---------------------------------------------------------------------------
2016 | 5800 | 5800 | |
2016-01 | 2700 | 2700 | 1650 | 4350
2016-01-20 | 3000 | 3000 | 1650 | 4650
2016-01-21 | -300 | 2700 | | 4350
2016-02 | 2550 | 5250 | 2040 | 7290
2016-02-15 | 2550 | 5250 | 2040 | 7290
计算更正本身非常简单:如果是定期付款,则使用该日期计算给定月份-部门组合的更正。
使用LASTNONBLANK 表达式,我可以做出适用于单个部门的正确累积度量:
Salary (corr.) cum := CACLULATE(MAX([Correction]); LASTNONBLANK([Date]; MAX([Correction])
但是,这不适用于跨部门 - 对于 2016-01,这将导致错误的总计数器:
Department | Salary | Salary (cum.) | Correction | measure | should be
-----------------------------------------------------------------------
(Total) | 2771 | 3071 | | 4721 | 6851
Finance | 71 | 71 | 2130 | 2201 | 2201
Sales | 2700 | 3000 | 1650 | 4650 | 4650
如何创建一个可以正确计算每个月的更正以及使总数正确的度量?
(所以基本上它会查看每个部门的最后一次校正(或其他维度),并使用这些总和而不是所有维度的最后一次校正)
【问题讨论】:
标签: ssas dax ssas-tabular