在Excel中可以很方便的引用单元格,如果你想在PowerBI图表中获取相邻两个类别之间的差异,用之前的DAX是一个较为麻烦的事,因为DAX不能识别图表中数据的相对位置,现在有了可视化计算,这个需求就可以很轻松的实现。
这里继续来学习最近新推出的可视化计算,如果你还不熟悉,可以先看看之前已经介绍的几篇文章:
Power BI重磅更新,先来体验一下可视化计算怎么用?
深入了解Power BI可视化计算(1):RUNNINGSUM运行总和
深入了解Power BI可视化计算(2):MOVINGAVERAGE移动平均
深入了解Power BI可视化计算(3):占比和COLLAPSE 函数
在目前内置的计算模式中,我们来了解一下最后4个:
这个界面翻译有出入,从上到下应该是 与之前、之后、第一个、最后一个相比的差异,其中用到的函数分别是:
PREVIOUS 前一个NEXT 后一个FIRST 第一个LAST 最后一个通过这几个函数,我们就可以灵活地按照位置来引用"单元格"的值。
这几个函数类似,都只能用于可视化计算,这里以PREVIOUS函数来看看它们的基本语法。
PREVIOUS(
表达式,
偏移幅度,//可选,省略时默认为1
轴,//可选,确定移动的方向
空白参数, //可选,排序时如何处理空值
重置 // 可选,控制从哪里开始重新计算
)
NEXT函数的语法与PREVIOUS完全相同(功能相反);而FIRST函数和LAST函数与上面的语法相比,只缺少第二个参数(偏移幅度),其他参数也完全相同。
下面通过几个例子来理解这些函数的作用。
仍然以PowerBI星球案例模型为例,来制作一个矩阵如下图:
如果要引用前一行的值,可以这样写:
前一行 = PREVIOUS([销售额])
如果要获取前面两行的值,第二个参数不要省略:
前两行 = PREVIOUS([销售额],2)
如果要获取前一列的值,就需要用到第三个轴参数:
前一列 = PREVIOUS([销售额],,COLUMNS)
这个结果就是引用左侧单元格,在这个矩阵中也就是得到上年的数据。
关于轴参数,还有ROWS COLUMNS和COLUMNS ROWS,跨行或者跨列时可以继续引用,关于它们的用法,可参考之前RUNNINGSUM的介绍。
如果在产品类别内,引用上一行的值,不跨类别引用,就要用到最后一个重置参数(前面参数省略时,在不产生歧义的情况下,可以不用逗号占位)。
前一行 本类别 =
PREVIOUS([销售额],LOWESTPARENT)
重置参数有效值为:None、LowestParent、HighestParent 或整数,省略时默认值为“None”。
如果要引用下一行,就要用到NEXT函数:
下一行 = NEXT([销售额])
下一列 = NEXT([销售额],COLUMNS)
NEXT其他参数的用法和上面的PREVIOUS完全一样,这里就不再介绍了。
通过PREVIOUS和NEXT函数,搭配偏移幅度和轴参数,我们可以轻松实现引用视觉对象中前、后、左、右的“单元格”数据,非常灵活。
最后,再来看一下类似的FIRST函数和LAST函数,如果要引用第一个数据,可以用FIRST函数:
第一个 = FIRST([销售额])
还可以按列来引用第一个:
引用本类别的第一个:
引用最后一个值用LAST函数:
最后一个 = LAST([销售额])
LAST的其他用法和FIRST完全一样,只是功能相反。
如果与Excel引用单元格做比较,可视化计算中的PREVIOUS和NEXT函数的效果类似于相对引用,而FIRST函数和LAST函数类似于绝对引用。
虽然用之前发布的OFFSET、WINDOW等窗口函数,也可以实现同样的效果,但是利用可视化计算,更简单、更直观、更便于新用户理解使用。
可视化计算刚刚推出,目前关于它的介绍仅仅是针对目前版本的功能,如果后续发布的版本功能有调整,这里也会及时更新的。
PowerBI星球