Power BI:季度比季度变化

时间:2018-08-15 00:06:45

标签: powerbi dax

首先,这是我正在使用的Power BI:

Power BI Table

我要计算季度成本比季度变化的百分比。

如上表所示,我在Total Cost by Quarter Column中具有Q1,Q2,Q3和Q4的费用总计,我使用以下公式计算得出:

Total Cost By Quarter =
IF (
    [Quarters] = "Q1",
    CALCULATE (
        SUM ( CR_Months_ByMonth[Cost] ),
        FILTER ( CR_Months_ByMonth, [Quarters] = "Q1" )
    ),
    IF (
        [Quarters] = "Q2",
        CALCULATE (
            SUM ( CR_Months_ByMonth[Cost] ),
            FILTER ( CR_Months_ByMonth, [Quarters] = "Q2" )
        ),
        IF (
            [Quarters] = "Q3",
            CALCULATE (
                SUM ( CR_Months_ByMonth[Cost] ),
                FILTER ( CR_Months_ByMonth, [Quarters] = "Q3" )
            ),
            IF (
                [Quarters] = "Q4",
                CALCULATE (
                    SUM ( CR_Months_ByMonth[Cost] ),
                    FILTER ( CR_Months_ByMonth, [Quarters] = "Q4" )
                )
            )
        )
    )
)

但是,由于重复的值([Total Cost By Quarter]中的多个Q1,Q2等),我无法弄清楚如何使用另一个Calculated列来计算季度之间的%Change。

因此,我尝试使用小节来计算%Change。 我使用以下公式对第一季度成本,第二季度成本,第三季度成本和第四季度成本进行了度量:

Q1Sum =
CALCULATE (
    SUM ( CR_Months_ByMonth[Cost] ),
    FILTER ( CR_Months_ByMonth, [Quarters] = "Q1" )
) 

然后,我使用一种类似于以下公式的公式进行了新的计算,以计算Q12%Change,Q23%Change和Q34%Change:

Q12%Change =
 ( DIVIDE ( [Q2Sum] - [Q1Sum], [Q1Sum] ) )
    * 100

这是我使用计算得出的度量结果:

%Change Quarter over Quarter Attempt

此结构无法产生良好的视觉效果,我敢肯定,有一种更简单,更有效的方法来实现季度比季度变化。

这是我想要的结果:

Correct Structure

最后一点,我有一个日期表,如下所示:

Date Table

谢谢!

1 个答案:

答案 0 :(得分:3)

如果将

[Total Cost by Quarter]放到在行/列上有四分之一的矩阵中,则应该与SUM(CR[Cost])一样简单。

棘手的部分是参考上一季度以获取百分比变化。看起来像这样:

% Change =
    VAR PrevQtrCost = CALCULATE(SUM(CR[Cost]), PREVIOUSQUARTER(DateTable[Date]))
    RETURN DIVIDE(SUM(CR[Cost]), PrevQtrCost) - 1

VAR行可能会有所不同,具体取决于您DateTableCR表的关联程度。


也看看这个类似的问题:Power BI: Percent Change Formula


如果您不链接日期,请尝试以下方法:

% Change =
    VAR PrevQtr = MOD(MAX(DateTable[FiscalQuarterNumber]) - 2, 4) + 1
    VAR PrevQtrCost = CALCULATE(SUM(CR[Cost]), DateTable[FiscalQuarterNumber] = PrevQtr)
    RETURN DIVIDE(SUM(CR[Cost]), PrevQtrCost) - 1