DAX альтернатива для функции IN - PullRequest
1 голос
/ 30 апреля 2020

У меня есть таблица в табличной модели SSAS с датой поставки транспортных средств.

Delivery_data

Есть таблица размеров со значениями возраста -

Dim_Age

Мне нужно написать DAX для отображения количества поставок за каждый год.

В отчете PowerBI, который подключается к табличной модели пользователь может выбрать возраст (несколько) из фильтра, который находится на Dim_Age. Таким образом, если пользователь выбирает возраст 1, он должен показать количество поставок 2019 года к 2020 году.

Result count

Теперь проблема в том, что я работаю над SSAS Версия сборки 2016 13.0.5426.0. Эта версия не поддерживает функцию «IN». Я пробовал ниже, и это не работает.

VAR selecteyear =
    IF ( HASONEVALUE ( Dim_Cal[year] ); VALUES ( Dim_cal[year] ) )
CALCULATE (
    COUNT ( Delivery_Data[Vechile] );
    ( selectedyear - Delivery_Data[DeliveryYear] )
        IN VALUES ( Dim_Age[Age] )
)

Пожалуйста, помогите узнать альтернативное решение.

1 Ответ

0 голосов
/ 30 апреля 2020

В общем, функция CONTAINS - это обходной путь в старых версиях, которые не поддерживают IN.

Вот как вы можете использовать его в вашей ситуации:

AgedCount = 
VAR selectyear =
    IF ( HASONEVALUE ( Dim_Cal[year] ), VALUES ( Dim_Cal[year] ) )
RETURN
    CALCULATE (
        COUNT ( Delivery_Data[Vechile] ),
        FILTER (
            ALL ( Dim_Cal ),
            CONTAINS ( Dim_Age, Dim_Age[Age], selectyear - Dim_Cal[year] )
        )
    )

Это повторяет всю таблицу Dim_Cal и для каждой строки проверяет, является ли selectyear - Dim_Cal[year] одним из значений, выбранных из фильтра Dim_Age[Age].

...