PowerBI如何进行行之间的差异计算?

您看看需不需要 2024-06-30 03:26:48

PowerBI是按照字段进行分析的,所以计算列与列之间的差异很简单,但有时也会有计算行之间差异的需求,这种在Excel中也很简单,但是用PowerBI就有点麻烦,不过也不是不能计算,这篇文章就介绍几种方法。

以下面这个数据为例,如何计算每一行的订单金额与上一行订单金额的差异呢?

由于要计算行之间的差异,需要确定行的位置,所以先添加一列索引是必要的。

关于添加索引的各种方式,可参考:PowerQuery添加索引,这几种情况你应该知道怎么做

下面通过M和DAX,分别来看看如何实现这个需求。

M函数法

在PowerQuery中添加自定义列:

与上一行的金额差异=

[订单金额]-

List.Sum(

Table.SelectRows(

已添加索引,

(x)=>x[索引]=[索引]-1

)[订单金额]

)

结果如下:

对于第一行,由于没有上一行的数据,返回空值,下面做法也同样按照这个逻辑。

DAX计算列法

与上一行差异 =

VAR X=[索引]

VAR Y=

CALCULATE(

SUM('订单表'[订单金额]),

FILTER('订单表','订单表'[索引]=X-1)

)

RETURN IF(Y<>BLANK(),[订单金额]-Y)

上面DAX的计算思路与M函数一样,只是这里需要添加个判断条件让第一行返回空值。

DAX度量值法

度量值同样可以按照计算列的思路来实现,不过这里换个方式,利用窗口函数会更加简单。

与上一行的差异 度量值 =

VAR lastorder=

CALCULATE(

SUM('订单表'[订单金额]),

OFFSET(-1,ALLSELECTED('订单表'),ORDERBY('订单表'[索引]))

)

RETURN IF(lastorder<>BLANK(),SUM('订单表'[订单金额])-lastorder)

关于窗口函数的用法可参考:Power BI本月正式推出的DAX新函数:OFFSET、INDEX、WINDOW

以上几种方式,重点都是如何计算出上一行的数据,然后相减即可,理解了计算逻辑,你也可以灵活地进行上一行、下一行、或者各种有规律的行之间的偏移计算了。

PowerBI星球的最新版内容合辑,值得你收藏学习:

PowerBI星球

.

0 阅读:0

您看看需不需要

简介:感谢大家的关注