Используйте SELECTEDVALUE вместо VALUES
В качестве моделира данных иногда может потребоваться написать выражение DAX, которое проверяет, фильтруется ли столбец по определенному значению.
В более ранних версиях DAXэто требование было безопасно достигнуто с помощью шаблона с участием трех функций DAX; IF, HASONEVALUE и VALUES. В следующем определении меры представлен пример. Он вычисляет сумму налога на продажу, но только для продаж, сделанных австралийским клиентам.
Australian Sales Tax =
IF(
HASONEVALUE(Customer[Country-Region]),
IF(
VALUES(Customer[Country-Region]) = "Australia",
[Sales] * 0.10
)
)
В этом примере функция HASONEVALUE возвращает TRUE только в том случае, если в текущем контексте фильтра отображается одно значение столбца "Страна-регион". При TRUEфункция VALUES сравнивается с литеральным текстом "Австралия". Когда функция
Использование HASONEVALUE является оборонительным методом. Это необходимо, так как возможно, что несколько значений фильтруют столбец Страна-Регион. В этом случае функция VALUES возвращает таблицу нескольких строк. Сравнение таблицы нескольких строк со скалярным значением приводит к ошибке.
Рекомендация
Рекомендуется использовать функцию SELECTEDVALUE. Он достигает того же результата, что и шаблон, описанный в этой статье, еще более эффективно и элегантно.
Используя функцию SELECTEDVALUE, теперь будет перезаписан пример определения меры.
Australian Sales Tax =
IF(
SELECTEDVALUE(Customer[Country-Region]) = "Australia",
[Sales] * 0.10
)
Совет
Можно передать альтернативное результата
Связанное содержимое
- Путь обучения: Использование DAX в Power BI Desktop
- Вопросы? попробуйте обратиться к сообществу Power BI
- Предложения? Вносите идеи для улучшения Power BI