DAX — фильтровать таблицу по условию множественного выбора фильтра

#powerbi #dax

#пауэрби #дакс

Вопрос:

Я пытаюсь отфильтровать таблицу с помощью фильтра с несколькими выборками.

DAX: Для выбора значений в выбранном фильтре (Multi)

 SelectedEnvironments =
CONCATENATEX (
    VALUES ( Environments[ShortEnvName] ),
    Environments[ShortEnvName],
    ", "
)
 

Результат:

введите описание изображения здесь

Но при попытке отфильтровать таблицу на основе приведенной выше переменной фильтра ничего не возвращает.

ДАКС:

 Aggregated Usage =
VAR __SelectedEnvironments =
    CONCATENATEX (
        VALUES ( Environments[ShortEnvName] ),
        Environments[ShortEnvName],
        ", "
    )
RETURN
    CALCULATETABLE (
        LastestDBUsage,
        LastestDBUsage[Environment] IN { __SelectedEnvironments }
    )
 

Если я жестко закодирую значения внутри IN operator, это будет работать нормально. Что я делаю не так? Нужно ли мне форматировать строку для IN operator

DAX (отлично работает с жесткими значениями кода)

Совокупное использование =

 VAR __SelectedEnvironments =
    CONCATENATEX (
        VALUES ( Environments[ShortEnvName] ),
        Environments[ShortEnvName],
        ", "
    )
RETURN
    CALCULATETABLE (
        LastestDBUsage,
        LastestDBUsage[Environment] IN { "DEV", "TST" }
    )
 

Ответ №1:

На самом деле IN оператор работает с таблицами, CONCATENATEX возвращает строку.

 { __SelectedEnvironments }
 

возвращает таблицу с одной строкой, состоящей из одного столбца, например, «DEV, TST»

чтобы заставить код работать, его можно было бы изменить, чтобы вместо него использовалась таблица, например

 Aggregated Usage =
VAR __SelectedEnvironments = VALUES ( Environments[ShortEnvName] )
RETURN
    CALCULATETABLE (
        LastestDBUsage,
        LastestDBUsage[Environment] IN __SelectedEnvironments
    )