从当前上下文中删除行

Remove rows from the current context

我有个问题困扰了我几天……

我的问题是关于在某一天 (dimDate) 尝试某事 (dimThing) 的人 (dimSomeOne)。每次尝试都以状态 (dimStatus) 结束。一个不同的人可能在同一天对同一件事进行了 1 次或多次尝试。这可以在 3 月 19 日看到,这里有人 1 已经尝试了 2 次事情 A,并以状态 1 结束。 我正在寻找的是特定日期特定状态下不同 SOMEONES 的数量。如果某人在同一天达到不同的状态,则此人只计算他的 MAX 状态。

对于上下文 dimTraining:A 和 dimDate:20.03.2015 有 5 个活动 rows:theRowNumber 3,4,5,8,11我想删除行 3,4,5 由于事实上,他们 "belong" 给某人 1 以及某人 1 在该日期的最大状态为 3。

我能够生成一个 DAX 查询,returns 结果具有正确的日期和状态

evaluate(
summarize(
filter(
    addcolumns(
        summarize(
            'fact',[aDate],[someone],[aStatus]
            --,[theRowNumber]
        )
    ,"maxstatus"
    ,calculate(max(fact[aStatus]),all(fact[aStatus]))
    )
,fact[aStatus] = [maxstatus]
)
,[aDate],[someone],[aStatus],[maxStatus]
--,[therownumber]
)
)
order by
[aDate],[someone],[aStatus]

,但我无法在计算量度中使用它。 一如既往地感谢任何帮助

顺便说一句,这是一个包含我的示例数据的 xlsx 文件,不幸的是,还有两个措施没有解决我的问题:

https://www.dropbox.com/s/anxn0vmrjzpiewx/TheDistinctSomeOneThing.xlsx?dl=0

最后的诀窍是添加一个计算列,如果当前状态有效(对于某人,在给定日期的某件事上),如果不是这种情况比公式 returns 使用函数 BLANK():

的 NULL 值
validStatus=IF([aStatus]=CALCULATE(MAX([aStatus]); FILTER(fact; [aThing]=EARLIER([aThing]) && [someone]=EARLIER([someone]) && [aDate]=EARLIER([aDate])));[aStatus];blank())

然后我使用一个非常简单的计算度量,该度量使用 DISTINCTCOUNT 事实[某人],并进行了一些过滤。过滤器是必要的,因为当前过滤器上下文的活动行仍然包含状态无效的行 (NULL)

预计

distinctCountSomeOne=calculate(distinctcount(fact[someone])
;not(isblank(fact[ValidStatus])))

这导致以下...

请注意,在这个 post 和我最初的问题之间,我在 table dimSomeOne 和 table 事实([=31= 的 newSomeOne)中添加了一行] 在 dimDate:2015-03-20 上使用 dimStatus:2 演示 DAX 函数 DISTINCTCOUNT.

可能出现的意外行为

这是一个 link to my question on the PowerPivot 论坛,感谢 Imke 提醒我正确使用计算列 ...