Функции DAX Time Intelligence - Расчет данных о производительности - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь использовать функции DAX Time Intelligence в табличной модели в Analysis Services в Visual Studio 2017.

У меня есть следующие требования к вычислениям:

  1. Дата ((DateTime)
  2. Ежемесячная производительность (в процентах)
  3. Счет

Для каждой учетной записи мы хотели бы рассчитать производительность с начала года, 1Y, 2Y, 3M, 5Mметрики ...

с использованием следующей формулы производительности:

Perf for 3M =
(1 + CurrentMonthPerf/100)*(1 + PriorMonth/100)*(1 + PriorPriorMonth/100) - 1

Perf for 1Y =
(1 + CurrentMonthPerf/100)*(1 + {1MonthAgoPerf}/100)*...* (1 + {12MonthsAgoPerf}/100) - 1

Perf для YTD = Те же вычисления, что и выше, но только для месяцев с января по текущую ячейку таблицы.Каждая строка будет рассчитывать Продукт в цикле: (1 + X) ... (1 + Y)) - 1

Я новичок в синтаксисе DAX, поэтому не знаю, как выполнитьэтот расчет с использованием DAX в SSDT 2017.

Пожалуйста, посоветуйте, как я могу выполнить более сложные вычисления даты.

1 Ответ

0 голосов
/ 28 ноября 2018

Я написал свою ежемесячную привязку доходов в моих собственных отчетах примерно так (при условии, что у меня есть месячный временной ряд возвратов):

Performance = 
VAR StartDate = <...>
VAR EndDate = <...>
RETURN -1 +
PRODUCTX(
    FILTER( ALL( Table1[Date] ),
        Table1[Date] <= EndDate &&
        Table1[Date] > StartDate
    ),
    1 + Table1[MonthReturn]
)

В основном вы используете продукт на отфильтрованной таблицевместо написания цикла.


Это очень упрощенная форма, в которой я оставил определение даты начала и окончания неопределенным и предполагая, что у вас есть только одно возвращаемое значение в месяц, но это должно помочьнаправить вас в правильном направлении.

...