计算Power Bi中的行差异

时间:2019-06-14 17:36:53

标签: powerbi dax

我正在寻求帮助来计算上一行与后一行之间的差异,以便在Power Bi中建立漏斗。

enter image description here

你能帮我吗?

1 个答案:

答案 0 :(得分:4)

我使用下表为解决方案建立了原型:

表名称:“数据”

enter image description here

(列名略有不同,以使度量的命名更加容易;请根据需要更改它们)。

创建第一个度量:

Total Amount = SUM(Data[Amount])

创建第二个度量:

Accumulated Difference =
VAR Current_Index = MAX ( Data[Index] )
VAR Initial_Amount =
    CALCULATE ( 
        MAX ( Data[Amount] ), 
        FILTER ( ALL ( Data ), Data[Index] = 1 ) )
VAR Accumulated_Reductions =
    CALCULATE (
        [Total Amount],
        FILTER ( ALL ( Data ), Data[Index] > 1 && Data[Index] <= Current_Index ) )
RETURN
    Initial_Amount - Accumulated_Reductions

创建第三个度量:

% Previous =
VAR Current_Index = MAX ( Data[Index] )
VAR Current_Difference =
    CALCULATE (
        [Accumulated Difference],
        FILTER ( ALL ( Data ), Data[Index] = Current_Index ) )
VAR Previous_Difference =
    IF (Current_Index > 1,
        CALCULATE (
            [Accumulated Difference],
            FILTER ( ALL ( Data ), Data[Index] = Current_Index - 1 ) ) )
RETURN
    DIVIDE ( Current_Difference, Previous_Difference )

结果:

enter image description here

说明:

第一个度量只是为了方便起见,以避免多次编写相同的求和运算。

第二个措施: 首先,我们发现索引在当前行中可见,并将其保存在变量中。 然后,我们找到初始金额(索引= 1的金额),因为我们需要它作为起点。 ALL是必需的,以忽略应用于行的过滤器。 然后,使用类似的模式,我们计算当前行与初始行之间的累积减少量(例如,对于步骤D,我们需要对索引(4、3、2)的总和进行求和 最后,所需结果只是初始数量-累计减少量。

第三项措施: 使用非常相似的技术,我们首先为当前行找到累积差异,然后为上一行找到累积差异。唯一的区别是测试起始条件的前一行(如果它是索引为1的初始行,则不计算先前的值)。一旦知道当前和以前的差异,我们就将它们分开。