递归DAX累计总计

时间:2016-05-23 08:38:47

标签: powerpivot dax cumulative-sum

我有一个衡量标准,它将债务价值的百分比减少乘以前一个月的销售额,以获得$ $。这是:

Gross Benefit:= [Change in 0-30 %] * [Ent Prior Month Credit Sales]

对于每个财政月(例如“01 - 7月”),可以计算毛利。净收益将是该月的总收益减去前几个月的净收益之和(因此我不会重复计算收益)。这是我们系统的一个令人困惑的概念和方面,我们需要YTD的快照视图。它旨在输出如下表格:

       | Jun 15 | Jul 15 | Aug 15 | Sep 15 |
Gross  |   0.7  |   0.7  |  0.4   |  0.2   |
Net    |   0.7  |   0.0  | (0.3)  | (0.1)  |

我尝试创建此代码的代码是:

Net Benefit :=[Gross Benefit]
- CALCULATE (
    SUMX ( VALUES ( Calendar[FiscalMonth] ), [Gross Benefit] ),
    FILTER (
        ALL ( Calendar ),
        Calendar[FiscalMonth] < MAX ( Calendar[FiscalMonth] )
    )
)

这只会返回空白。我该怎么办?

2 个答案:

答案 0 :(得分:0)

我认为这是因为这一行

  

SUMX(VALUES(日历[FiscalMonth]),[毛利]]

SUMX尝试从表 VALUES(日历[FiscalMonth])汇总[毛利],该表只有一列且不是总收益,因此它总和为空白。

这可能会改为

Net Benefit := [Gross Benefit] - CALCULATE (
                  [Gross Benefit],
                  FILTER (
                         ALL ( Calendar ),
                         Calendar[FiscalMonth] < MAX (Calendar[FiscalMonth])
                  )
               )

Summarize可用于投影必要的列,而VALUES仅投影一列

该解决方案假设FiscalMonth和Gross Benefit位于同一个表中。总结不会起作用。让我知道这个是否奏效。

答案 1 :(得分:0)

我通过打破公式来接近解决方案。 [净收益]是:

  

[毛利]减去以前每个月所有[净收益]的总和。

所以我创造了三个措施。 1 - [毛利]

Gross Wave Benefit 0-30 YTD:=( [Change in 0-30 %] * [Ent Prior Month Credit Sales] )

这两个都是在给定环境中计算的度量。该措施产生了正确的结果。 2. - [以前的福利金额]

[Sum of Previous Benefits]:=CALCULATE (
SUMX (
    FILTER (
        ALL ( Calendar ),
        Calendar[FM] < MAX ( Calendar[FM] )
            && Calendar[FY] = MAX ( Calendar[FY] )
    ),
    [Gross Wave Benefit 0-30 YTD]
))

摘要度量是[净收益]

Net Wave Benefit 0-30 YTD:=[Gross Wave Benefit 0-30 YTD]-[Sum of previous benefit]

这是对问题的更纯粹的描述,但仍然遇到递归/循环引用错误。