ВЫЧИСЛЯЕМАЯ МОЩНОСТЬ, ФИЛЬТР с ВЫБРАННЫМ ЗНАЧЕНИЕМ

#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  

(хотя для этого примера существуют более простые способы достижения тех же результатов без расчетной таблицы)