Расчет инфляции из года в год для конкретной модели данных - PullRequest
0 голосов
/ 24 мая 2019

Я знаю, что это может быть повторяющийся вопрос, но мне не удалось найти решение моей проблемы примерно через 5 часов поиска.Заранее извините, если это так.

Данные У меня есть три таблицы в режиме хранения DIrectQuery.Один называется LINE_ITEM, он имеет отношение один ко многим с другой таблицей INVOICE.Таблица INVOICE имеет отношение один ко многим с другой таблицей CONTRACT.Каждый КОНТРАКТ имеет один СЧЕТ в год.Каждый СЧЕТ имеет одну или несколько позиций, каждая из которых имеет N_PAID_AMOUNT.

Screenshot of relevant Data Model as it appears in the power bi relationship view.

Цель Я рассчитываю рассчитатьпроцентное увеличение суммы, выплачиваемой за каждый год СЧЕТА.

Ограничения Этот же файл pbix будет использоваться для выполнения многих других задач и должен быть очень отзывчивым.Я не хочу каким-либо образом манипулировать запросами или отношениями, если это возможно, ради скорости и простоты.Я хотел бы решить эту проблему с помощью измеренного или рассчитанного столбца.

Где я застрял на У меня есть формула, которую я использую в мере

Previous Paid Amount = CALCULATE(SUM(LINE_ITEM[N_PAID_AMOUNT]), YEAR(INVOICE[DT_START]) = YEAR(INVOICE[DT_START])-1)

Выдает ошибку «Не удается найти имя '[DT_START]'».только для второго вхождения в выражении фильтра.Если я заменю формулу на

Previous Paid Amount = CALCULATE(SUM(LINE_ITEM[N_PAID_AMOUNT]), YEAR(INVOICE[DT_START]) = NOW())

Она не выдаст ошибки, но, очевидно, не поможет мне рассчитать, что мне нужно.

Другие вещи, которые я пробовал Я пытался использовать функцию EARLIER DAX, я пытался перевести данные в режим импорта, я пробовал множество других формул и функций.Я перепробовал все виды быстрых мер, в том числе тот, который должен был выполнить этот точный расчет, и ни один из них не был успешным.

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

Ответы [ 2 ]

1 голос
/ 24 мая 2019

Попробуйте использовать функцию PreviousYear DAX,

Previous Paid Amount =
CALCULATE (
    SUM ( LINE_ITEM[N_PAID_AMOUNT] ),
    PREVIOUSYEAR( INVOICE[DT_START] )
)

Проверьте эту ссылку для справки

0 голосов
/ 30 мая 2019
Paid Amount LY = 
CALCULATE(
    INVOICE[Paid Amount],
    FILTER(
        ALLSELECTED('INVOICE'[Year]),
        ISONORAFTER('INVOICE'[Year], MAX('INVOICE'[Year])-1, DESC)
    )
) -
CALCULATE(
    INVOICE[Paid Amount],
    FILTER(
        ALLSELECTED('INVOICE'[Year]),
        ISONORAFTER('INVOICE'[Year], MAX('INVOICE'[Year])-2, DESC)
    )
)

Эта формула решила мою проблему.Однако это ужасно.Если у кого-то есть понимание того, как я могу сделать это лучше, пожалуйста, дайте мне знать.

...