Я управляю корпоративной стратегией, которая перемещает людей и недвижимость в разных регионах. Стратегия состоит из большого количества проектов, которые можно считать независимыми друг от друга и объединять их в совокупности со стратегией. Объекты, которые мы собираем, включают в себя существующие затраты на рабочую силу и стоимость недвижимости, и мы сравниваем их с рабочей силой, недвижимостью и инвестиционными затратами на переезды. Каждый из этих элементов содержится в отдельных таблицах фактов, и все они связаны через таблицу измерений.
Мне удалось определить переменную, которая использует UNION и SELECTCOLUMNS для создания консолидированной таблицы для вычисления NPV, и это сработало отлично. Когда я использовал тот же подход для расчета XIRR, он работает для большинства проектов, но выдает ошибку для тех, у которых дата инвестирования больше года. Я пытался применить CALCULATE с ФИЛЬТРОМ, где Дата больше или равна дате Первой инвестиции для этого проекта, но это не сработало.
IRR:=VAR CashFlowTable =
UNION (
SELECTCOLUMNS (
LaborComponent,
"Date", LaborComponent[Date],
"Values", LaborComponent[Base vs Deploy],
"Index", LaborComponent[Index]
),
SELECTCOLUMNS (
RealEstateCosts,
"Date", RealEstateCosts[Date],
"Values", RealEstateCosts[Base vs Deploy],
"Index", RealEstateCosts[Index]
),
SELECTCOLUMNS (
HRCosts,
"Date", HRCosts[Date],
"Values", HRCosts[Base vs Deploy],
"Index", HRCosts[Index]
)
)
RETURN
IFERROR (
CALCULATE (
XIRR ( CashFlowTable, [Values], [Date] ),
FILTER(CashFlowTable, [Date] >= [First Investment Date] )),
BLANK ()
)
, где
First Investment Date :=
CALCULATE (
MIN ( 'Calendar'[Date] ),
FILTER ( ALL ( 'Calendar'[Date] ), [Total Investment] < 0 )
)
и
Total Investment := SUM ( HRCosts[Value] )