2017-01-19 1 views
0

Я пытаюсь использовать функцию All(), чтобы отфильтровать поле под названием CycleName, а затем использовать функцию FILTER() для фильтрации с использованием моего поля Moment. По какой-то причине, однако объединение двух функций возвращает ошибку в PowerBI.Unfilter одно поле и фильтр другим не работает

Это моя функция DAX:

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

И ошибка: «Столбец„Момент“не может быть найден или не могут быть использованы в этом выражении.»

Что я нахожу странным, что если я пытаюсь фильтровать только PowerBI обнаруживает свою колонку Moment правильно:

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

Почему я не могу unfilter CycleName, а затем отфильтровать данный момент?

ответ

0

Причина, по которой вы не можете использовать столбец [Moment], состоит в том, что первым аргументом FILTER является таблица или функция, возвращающая таблицу. С

ALL(PowerBIHeadcount[CycleName]) 

вы возвращаете таблицу в один столбец, который содержит только CycleName и так как вы не указали ссылку таблицы в ваших условиях фильтрации функция пытается использовать столбец из представленной таблицы. И нет init [Moment] init. Попробуйте указать явно

PowerBIHeadCount[Moment] = "Current forecast" 

Это наилучшая практика всегда указывать полные квалификационные имена. Таким образом, окончательный будет:

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

Другой вариант, что вы удалите фильтры из колонки CycleName в качестве еще одного аргумента в функции исчисляют и оставить ФИЛЬТР. Например:

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

Попробуйте использовать ALL(PowerBIHeadcount).

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

Использование ALL функции на всей таблицы будет отключить любой explit фильтр применяется к любому столбцу в таблице, если вы хорошо с этим вы можете использовать это решение, в противном случае вы можете захотеть использовать ALLEXCEPT().

Дайте мне знать, если это поможет.

Смежные вопросы