Альтернатива функции LOOKUPVALUE для использования внутри меры? - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть мера, которая успешно рассчитывает совокупную сумму запланированного дохода за каждый месяц:

Revised Revenue :=
CALCULATE (
    SUM ( Rev_Revised[Revenue] ),
    Data_Types[Data Types] = "Projected"
)
Cumulative Revised Revenue :=
IF (
    MIN ( MonthDate[MonthDate] )
        <= CALCULATE ( MAX ( Rev_Revised[MonthDate] ), ALL ( Rev_Revised ) ),
    CALCULATE (
        [Revised Revenue],
        FILTER (
            ALL ( MonthDate[MonthDate] ),
            MonthDate[MonthDate] <= MAX ( MonthDate[MonthDate] )
        )
    )
)

При использовании в сводной таблице в сочетании с Запуск итогового в ... она выглядит как это:

image 1

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

image 2

Использование LOOKUPVALUE в качестве меры очевидно, выдает ошибку, потому что это не приводит к одному значению. Я мог бы просто создать свою собственную дополнительную строку под сводной таблицей, которая выполняет эти вычисления, но мне бы очень хотелось, чтобы это выполнялось в модели данных. Любые идеи?

Редактировать: Ближайшее решение, к которому я могу прийти сейчас, - это вычисленный столбец в моем наборе данных плана расходов, который ищет% для каждой строки:

Monthly Rev Capture :=
LOOKUPVALUE (
    Rev_Capture[Revenue Capture],
    Rev_Capture[MonthDate], Rev_Revised[MonthDate]
)

А затем мера из этого:

Rev Capture Amount :=
[Cumulative Revised Revenue] * AVERAGE ( Rev_Revised[Monthly Rev Capture] )

Но это не правильно рассчитать в сводной таблице. Вот как это выглядит, также с правильными ручными вычислениями, отображаемыми под таблицей для проверки:

enter image description here

Мне нужна мера, похожая на одну из это, но, конечно, они терпят неудачу:

Rev Capture Total:=
[Cumulative Revised Revenue]*RELATED(Rev_Capture[Revenue Capture])
Rev Capture Total v2:=
     [Cumulative Revised Revenue]*LOOKUPVALUE(Rev_Capture[Revenue Capture],
MonthDate[MonthDate],
Rev_Capture[MonthDate])

1 Ответ

1 голос
/ 21 февраля 2020

Ваша мера v2 выглядит близко, но поскольку это не вычисляемый столбец, вы не можете просто ссылаться на столбец, не используя агрегирующую функцию, такую ​​как AVERAGE или MAX или VALUES, поскольку для функции поиска требуется одно значение для ищите.

Попробуйте это так:

Rev Capture Total v2 :=
[Cumulative Revised Revenue]
    * LOOKUPVALUE (
        Rev_Capture[Monthly Rev Capture],
        Rev_Capture[MonthDate], SELECTEDVALUE ( MonthDate[MonthDate] )
    )

Если у контекста вашего фильтра один месяц, SELECTEDVALUE будет возвращать то же, что и другие агрегаторы, такие как SUM / MAX / AVERAGE / VALUES, но вернет пустое значение, если в контексте фильтра есть несколько значений, поскольку не только один параметр.

...