首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DAX SUMMARIZE() with filter - Powerpivot

DAX SUMMARIZE() with filter - Powerpivot
EN

Stack Overflow用户
提问于 2015-10-20 03:41:51
回答 1查看 2.9K关注 0票数 0

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

代码语言:javascript
复制
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的帮助下,我还有另一个列CasesLastClosed,如果当前行是关闭的,它将为真,并且是父组的最后一个关闭的列。

还有第二个支付表,与CasesID相关。这些付款可以在父母或孩子的事务中收到。我将收到的付款合计如下:

代码语言:javascript
复制
Recovery All Time:=CALCULATE([Recovery This Period], ALL(Date_Table[dateDate]))

我正在寻找一种新的措施,将计算总恢复的唯一ParentMatterName,如果在此组的最后一个结案事项是在财政年度,我们正在寻找-6月30日结束日期。

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

我现在的公式是:

代码语言:javascript
复制
Recovery on Closed This FY :=
CALCULATE (
    SUMX (
        SUMMARIZE (
            MatterListView,
            MatterListView[UniqueParentName],
            "RecoveryAllTime", [Recovery All Time]
        ),
        [RecoveryAllTime]
    )
)

感谢大家的帮助。

EN

回答 1

Stack Overflow用户

发布于 2015-10-20 22:06:05

同样,通过添加模型来解决您的解决方案要容易得多。记住,存储是便宜的,你的最终用户是没有耐心的。

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33222579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档