Ssas DAX-每个维度的最后一个非空值

Ssas DAX-每个维度的最后一个非空值,ssas,dax,ssas-tabular,Ssas,Dax,Ssas Tabular,我有一个跨部门的工资支付表(“从Y开始的天数=年初开始的天数”,“从M开始的天数=月末的天数”) 对于定期付款,需要将工资更正为一个月。但是,在下个月,上个月的更正不得包括在内(因为新的薪资中已经规定了这一点)-只应包括上个月的更正 对于销售,这将是: Date | Salary | Salary (cum.) | Correction | Salary (corr.) cum. ------------------------------------------------

我有一个跨部门的工资支付表(“从Y开始的天数=年初开始的天数”,“从M开始的天数=月末的天数”)

对于定期付款,需要将工资更正为一个月。但是,在下个月,上个月的更正不得包括在内(因为新的薪资中已经规定了这一点)-只应包括上个月的更正

对于销售,这将是:

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
我如何创建一个能够正确计算每个月的修正值以及正确计算总数的度量值


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

您基本上需要迭代各个部门

Salary (corr.) cum := 
SUMX (
    Departments,
    CACLULATE(MAX([Correction]); LASTNONBLANK([Date]; MAX([Correction])
)
这应该能奏效

阿尔贝托

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