#powerbi #dax
Вопрос:
Я создаю таблицу из оригинала с условием фильтра, где мое значение фильтра-от SELECTEDVALUE
Таблица не фильтруется по выбранному значению, если я заменю ее реальным значением, то это сработает.
Код (не работает)
TransGt5 = var seletectedQuanity = SELECTEDVALUE(QuantityFilter[Quantity]) return CALCULATETABLE( Transactions, FILTER( ALL(Transactions), Transactions[Quantity] gt;= seletectedQuanity ))
Код работает файл с жестко закодированным значением:
TransGt5 = var seletectedQuanity = SELECTEDVALUE(QuantityFilter[Quantity]) return CALCULATETABLE( Transactions, FILTER( ALL(Transactions), Transactions[Quantity] gt;= 3 ))
что я делаю не так?
Ответ №1:
Концептуально Power BI работает не так.
DAX можно использовать 2 способами: для запроса данных и для определения данных (аналогично SQL).
- Для запросов вы можете создавать меры DAX. Они выполняются во время выполнения и могут реагировать на срезы и другие действия пользователя.
- Для вычисляемых таблиц и столбцов вы также можете написать код DAX, но он выполняется только во время разработки, когда вы создаете код или обновляете данные. Он не запускается как запрос и не может отвечать на действия пользователя. Тот факт, что вы использовали DAX для создания таблицы, не имеет значения — результатом является статическая таблица, идентичная импортированным таблицам.
Единственный способ заставить его работать-это создать меру. Внутри мер вы можете вычислять таблицы, хранить их в переменных, использовать их для вычисления всего, что вам нужно, а затем публиковать результат. Результат будет реагировать на слайсеры.
Например, это может быть что-то вроде:
Example = VAR seletectedQuanity = SELECTEDVALUE ( QuantityFilter[Quantity] ) VAR FilteredTable = CALCULATETABLE ( Transactions, Transactions[Quantity] gt;= seletectedQuanity ) VAR Result = SUMX ( FilteredTable, Transactions[Quantity] ) RETURN Result
(хотя для этого примера существуют более простые способы достижения тех же результатов без расчетной таблицы)