AVERAGE TOTALYTD给出错误的结果。 Power BI DAX

问题描述 投票:0回答:1

我需要为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"
    )
)

enter image description here

但如果我使用TOTALYTD函数然后由于某种原因我得到了不同的结果$ 4,702.31:

AVG_YTD_Indemn_Closed1 =
CALCULATE (
    TOTALYTD ( AVERAGE ( fact_Losses[PaidIdemnity] ), dim_Date[Date] ),
    fact_Losses[ClaimStatus] = "Closed"
)

enter image description here

为什么会有这么大的差异?函数TOTALYTD如何计算与FILTER不同的结果?

powerbi dax powerbi-desktop
1个回答
1
投票

正如here所解释的那样,

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无法容纳你将来可能需要的额外过滤器,如here所述:

AVG_YTD_Indemn_Closed1 =
CALCULATE (
    AVERAGE ( fact_Losses[PaidIdemnity] ),
    DATESYTD( dim_Date[Date] ),
    fact_Losses[ClaimStatus] = "Closed"
)
© www.soinside.com 2019 - 2024. All rights reserved.