Мне нужно рассчитать Average Year To Date
только для Closed
претензий.
Если я использую функцию FILTER
, она дает мне правильный результат: 3 507,74 доллара США.
AVG_YTD_Indemn_Closed =
CALCULATE (
AVERAGE ( fact_Losses[PaidIdemnity] ),
FILTER (
fact_Losses,
fact_Losses[DateEntered].[Year] = YEAR ( TODAY () )
&& fact_Losses[ClaimStatus] = "Closed"
)
)
Но если я использую функцию TOTALYTD
, то по какой-то причине я получаю другой результат $4702,31:
AVG_YTD_Indemn_Closed1 =
CALCULATE (
TOTALYTD ( AVERAGE ( fact_Losses[PaidIdemnity] ), dim_Date[Date] ),
fact_Losses[ClaimStatus] = "Closed"
)
Почему такая большая разница? Как функция TOTALYTD
вычисляет результат, отличный от FILTER
?
Спасибо, что указали мне правильное направление. Я посмотрел исходный код и обнаружил, что DateEntered нужна дополнительная логика. После модификации я получил правильный номер. Спасибо
Рад, что это сработало. Я начал писать ответ, прежде чем спросить об этом, поэтому я все равно опубликовал его, поскольку он может быть полезен для будущих читателей.
Как объяснил здесь,
TOTALYTD (
<EXPRESSION>,
<DATES>
[, <FILTER>]
[, <YEARENDDATE>]
)
эквивалентно
CALCULATE (
<EXPRESSION>,
DATESYTD ( <DATES> [, <YEARENDDATE>] )
[, <FILTER>]
)
Таким образом, ваша TOTALYTD
мера эквивалентна
AVG_YTD_Indemn_Closed1 =
CALCULATE (
CALCULATE(
AVERAGE ( fact_Losses[PaidIdemnity] ),
DATESYTD( dim_Date[Date] )
),
fact_Losses[ClaimStatus] = "Closed"
)
Если вы исправите свои отношения с датами, я бы порекомендовал эту версию, поскольку TOTALYTD
не может вместить дополнительные фильтры, которые могут вам понадобиться в будущем, как отмечено здесь:
AVG_YTD_Indemn_Closed1 =
CALCULATE (
AVERAGE ( fact_Losses[PaidIdemnity] ),
DATESYTD( dim_Date[Date] ),
fact_Losses[ClaimStatus] = "Closed"
)
dim_Date
связано сfact_Losses
на[DateEntered] <--- [Date]
?