带过滤器的DAX SUMMARIZE() - Powerpivot

时间:2015-10-19 19:41:51

标签: powerpivot dax

在进一步研究后重述上一个问题。我有一个非规范化的案例层次结构,每个案例都有一个ID,对其父(或他们自己)的引用和一个关闭日期。

Cases
ID | Client    | ParentMatterName | MatterName | ClaimAmount | OpenDate | CloseDate
1  | Mr. Smith | ABC Ltd          | ABC Ltd    | $40,000     | 1 Jan 15 | 4 Aug 15
2  | Mr. Smith | ABC Ltd          | John       |      $0     |20 Jan 15 | 7 Oct 15
3  | Mr. Smith | ABC Ltd          | Jenny      |      $0     | 1 Jan 15 | 20 Jan 15
4  | Mrs Bow   | JQ Public        | JQ Public  |  $7,000     | 1 Jan 15 | 4 Aug 15

在greggyb的帮助下,我还有另一列,例如[LastClosed],如果当前行已关闭,则为真,并且是父组的最后一次关闭。

还有第二个与案例[ID]相关的付款表。这些付款可以在父母或子女事务中收到。我将收到的款项汇总如下:

Recovery All Time:=CALCULATE([Recovery This Period], ALL(Date_Table[dateDate]))

我正在寻找一个新的衡量标准,如果我们正在考虑的财政年度 - 截至6月30日结束日期,该组中的最后一个已结束的事项已经关闭,那么它将计算唯一的ParentMatterName的已恢复总数。

我现在正在查看SUMMARIZE()函数来完成第一部分,但我不知道如何过滤它。计算层次令人困惑。我查看了This MSDN blog但似乎过滤了只会显示上次关闭的事项的总付款(不添加相关子项)。

我目前的公式是:

Recovery on Closed This FY :=
CALCULATE (
    SUMX (
        SUMMARIZE (
            MatterListView,
            MatterListView[UniqueParentName],
            "RecoveryAllTime", [Recovery All Time]
        ),
        [RecoveryAllTime]
    )
)

所有帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

同样,通过添加模型可以更轻松地解决您的解决方案。请记住,存储空间很便宜,最终用户也不耐烦。

只需在您的Cases表中存储一个包含每个父项的LastClosedDate的列,该列指示与上次关闭的子事项关联的日期。然后,它是一个简单的过滤器,仅返回当前会计年度中具有LastClosedDate的那些付款/事项。或者,如果你确定你只关心年份,你可以只存储LastClosedFiscalYear,以使你的过滤谓词更简单。

如果您需要有关特定度量的帮助或如何实现其他字段,请告诉我们(我建议在源处添加这些字段,或者在源查询中派生它们而不是使用计算列)。