嵌套的CALCULATE()表达式,用于汇总符合条件的相关项目

时间:2015-10-12 00:50:05

标签: dax

this question开始,我想要计算非规范化层次结构中物质组的费用/付款比率。时间方面很棘手,我希望一直看到事实摘要,但仅限于最后一个事项在本财政年度(截至6月30日)结束的事项。每个项目都有一个指标,表明它是否是其父事项组中的最后一个关闭,以及关闭日期。

这样做的第一步是计算在当前财务年初至今关闭事项的所有事项中收到的总数。这个伪代码就像:

  • 过滤仅显示当前FY&&amp ;;是他们小组中最后一次关闭
  • 删除所有具有相同[UniqueParentName]
  • 的过滤器和总结事实表(此示例中的付款)
  • 将所有这些款项加在一起。

这听起来像是SUMX()的主要机会,但是CALCULATE()和过滤器管理的分层让我转过身来。我使用的试用代码如下:

Recovered on closed this FY :=CALCULATE (
CALCULATE (
    [Recovery All Time],
    ALLEXCEPT (
        MatterListView,
        MatterListView[UniqueParentName]
    )
),
MatterListView[LastClosed] = TRUE (),
USERELATIONSHIP ( MatterListView[ClosureDate], Date_Table[dateDate] ),
DATESYTD ( Date_Table[dateDate], "30 June" ))

这依赖于[恢复所有时间],这是一个简单的:

=CALCULATE (
SUM ( MatterPayment[Payment Amount] ),
ALL ( Date_Table[DateDate] ))

1 个答案:

答案 0 :(得分:0)

不知道但过滤器/计算是我总是误解它正在做什么的地方。

免责声明,我自己仍在学习DAX,但您是否尝试过使用FILTER()而不是嵌套的CALCULATE()?事实上,你需要第二次计算吗? (这假设上面的试用代码不起作用,如果这不是你的问题,请道歉。)

Recovered on closed this FY :=
CALCULATE (
    [Recovery All Time],
    ALLEXCEPT (
        MatterListView,
        MatterListView[UniqueParentName]
    ),
    MatterListView[LastClosed] = TRUE (),
    USERELATIONSHIP ( MatterListView[ClosureDate], Date_Table[dateDate] ),
    DATESYTD ( Date_Table[dateDate], "30 June" )
)

据我所知,测量结果包含在计算中,因此实际上是三次计算,这可能是结果看起来不合逻辑的原因。

(Rep不够高,否则我会发表评论)