取消过滤一个字段并按另一个字段过滤不起作用

Unfilter one field and filter by another not working

我正在尝试使用 All() 函数取消过滤名为 CycleName 的字段,然后使用 FILTER() 函数使用我的 Moment 字段进行过滤。但是出于某种原因,将这两个函数组合在一起会在 PowerBI 中返回错误。

这是我的 DAX 函数:

CurrentForecastVar = CALCULATE(SUM([Amount]), FILTER(ALL(PowerBIHeadcount[CycleName]), [Moment] = "Current Forecast"))

错误是:"Column 'Moment' cannot be found or may not be used in this expression."

我觉得奇怪的是,如果我尝试仅过滤,PowerBI 会正确检测到我的 Moment 列:

CurrentForecastVar = CALCULATE(SUM([Amount]), FILTER(PowerBIHeadcount, [Moment] = "Current Forecast"))

为什么我不能取消对 CycleName 的筛选,然后再按 Moment 进行筛选?

尝试使用 ALL(PowerBIHeadcount)

CurrentForecastVar =
CALCULATE ( SUM ( [Amount] ), FILTER ( ALL ( 'PowerBIHeadcount' ), [Moment] = "Current Forecast" ) )

在整个 table 上使用 ALL 函数将禁用应用于 table 中任何列的任何显式过滤器,如果您同意,您可以使用此解决方案,否则你可能想使用 ALLEXCEPT().

如果有帮助请告诉我。

不能使用 [Moment] 列的原因是 FILTER 的第一个参数是 table 或 return 是 table 的函数。有

ALL(PowerBIHeadcount[CycleName])

你 return 一列 table 只包含 CycleName 并且由于你没有在过滤条件中指定 table 引用,函数尝试使用提供的列table。并且没有 [Moment] 列初始化。尝试明确指定

PowerBIHeadCount[Moment] = "Current forecast"

最好始终指定完整的限定名称。 所以最后的是:

CurrentForecastVar = CALCULATE(SUM([Amount]), FILTER(ALL(PowerBIHeadcount[CycleName]), PowerBIHeadcount[Moment] = "Current Forecast"))

另一种选择是从 CycleName 列中删除过滤器作为 CALCULATE 函数中的另一个参数并保留 FILTER。例如:

CurrentForecastVar = 
CALCULATE(
SUM([Amount]),
ALL(PowerBIHeadcount[CycleName]), 
FILTER(PowerBIHeadcount, [Moment] = "Current Forecast")
)