Power BI DAX:关于累计计算上一年收入的措施问题

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

我正在尝试创建一个折线图来比较三种不同的度量。 浅蓝色线 - 指截至当月的累计收入。

深蓝色线 - 指截至当月的累计目标。

橙色线应该是上一年实现的收入,但我在应用其他月份不显示相同值的条件时遇到困难。

我的图表

对于本年度的累计收入,我采用了以下措施

    Faturamento Realizado = 
    
    CALCULATE(
        SUM(tb_Base_Faturamento[FATURAMENTO LÍQUIDO])
        ,'tb_Base_Faturamento'[VISÃO] = "REAL"
    )

    Faturamento Yeartodate Atual = 
    VAR FinalMesAtual = 
    [Final Mes Atual]
    
    RETURN
    CALCULATE(
        TOTALYTD(
            [Faturamento Realizado],
            tb_Calendario_Faturamento[Data],
            "30/06"
        ),
    
            FILTER(
                tb_Calendario_Faturamento,
                tb_Calendario_Faturamento[Data] <= FinalMesAtual
            )
            
    )

并且工作正常

当我尝试对上一年应用相同的逻辑时,我无法实现仅将橙色线限制到当前月份的条件。

    AnoAnteriorFaturamentoYeartodate = 
    VAR FinalMesAtualAnoAnterior =
        CALCULATE(
            MAX(tb_Calendario_Faturamento[Data]),
            MONTH(tb_Calendario_Faturamento[Data]) = MONTH(TODAY()) &&
            YEAR(tb_Calendario_Faturamento[Data]) = YEAR(TODAY()) - 1
        )
    
    RETURN
    CALCULATE(
        [Faturamento Realizado],
        FILTER(
            ALL(tb_Calendario_Faturamento),
            tb_Calendario_Faturamento[Data] <= FinalMesAtualAnoAnterior
        ),
        SAMEPERIODLASTYEAR(DATESYTD(tb_Calendario_Faturamento[Data],"30/06"))
    )
    

我尝试了各种方法,但总是得到相同的结果,要么没有计算任何东西。

有什么建议吗?

powerbi dax
1个回答
0
投票

您需要计算与今年同月但在上一年的最大日期。 使用 FILTER,仅对上一年到当前年份同月的日期进行计算。 然后 TOTALYTD 将计算上一年的年初至今总数,并且过滤器会将其限制为计算出的 FinalMesAtualAnoAnterior 之前的日期:

AnoAnteriorFaturamentoYeartodate = 
VAR FinalMesAtualAnoAnterior = 
    CALCULATE(
        MAX(tb_Calendario_Faturamento[Data]),
        YEAR(tb_Calendario_Faturamento[Data]) = YEAR(TODAY()) - 1 &&
        MONTH(tb_Calendario_Faturamento[Data]) <= MONTH(TODAY()) 
    )
RETURN
CALCULATE(
    TOTALYTD(
        [Faturamento Realizado],
        tb_Calendario_Faturamento[Data],
        "30/06"
    ),
    FILTER(
        ALL(tb_Calendario_Faturamento),
        tb_Calendario_Faturamento[Data] <= FinalMesAtualAnoAnterior &&
        YEAR(tb_Calendario_Faturamento[Data]) = YEAR(TODAY()) - 1
    )
)
© www.soinside.com 2019 - 2024. All rights reserved.