Передача переменной в DAX - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь передать переменную в функцию DATEADD с помощью PowerBI Desktop DAX, чтобы она изменила интервал.

Я использую

Sales Comparison = CALCULATE( [SALES], DATEADD('CALENDAR'[DATE],-1,YEAR)) 

, чтобы показать продажи втот же период в прошлом году, но я бы хотел, чтобы функция YEAR была переменной.

Идея состоит в том, чтобы изменить его, чтобы пользователь мог сравнивать его с прошлым месяцем, последним кварталом и т. Д.

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

        Sales Comparison = 
        CALCULATE( [SALES],
 DATEADD('CALENDAR'[DATE],-1,VALUES(PERIOD[PERIOD])
        )
    )

Ошибка показывает, что «Последний аргумент должен быть одним из следующих ключевых слов: ДЕНЬ, МЕСЯЦ, КВАРТАЛ или ГОД.

Я заменялЦЕННОСТИ с SELECTEDVALUE и VALUE, все из которых терпят неудачу на мне.

Помощь по этому вопросу будет принята с благодарностью.

1 Ответ

0 голосов
/ 14 февраля 2019

DAX может быть действительно разочаровывающим языком - таким новым и сырым, но в то же время таким ограничительным ...

Я бы продублировал DATEADD 4 раза (для ДНЯ, МЕСЯЦА, КВАРТАЛА и ГОДА) и завернул весь процесс обработки паром.беспорядок в функции переключателя.Что-то вроде:

Sales Comparison =
SWITCH (
    VALUES ( PERIOD[PERIOD] ),
    "DAY", CALCULATE ( [SALES], DATEADD ( 'CALENDAR'[DATE], -1, DAY ) ),
    "MONTH", CALCULATE ( [SALES], DATEADD ( 'CALENDAR'[DATE], -1, MONTH ) ),
    "QUARTER ", CALCULATE ( [SALES], DATEADD ( 'CALENDAR'[DATE], -1, QUARTER ) ),
    "YEAR", CALCULATE ( [SALES], DATEADD ( 'CALENDAR'[DATE], -1, YEAR ) )
)

Тогда мне нужен душ.

...