1

我有一张跨部门工资支付的表(“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

如何创建正确计算每个月的更正以及使总数正确的度量?

(所以基本上它会查看每个部门(或其他维度)的最后一次更正,并使用这些总和而不是所有维度的最后一次更正)

4

1 回答 1

2

您基本上需要遍历部门。

Salary (corr.) cum := 
SUMX (
    Departments,
    CACLULATE(MAX([Correction]); LASTNONBLANK([Date]; MAX([Correction])
)

这应该够了吧。

阿尔贝托

于 2016-09-02T06:37:44.370 回答