分享

深入了解Power BI可视化计算(6):利用EXPAND函数自定义总计

 PowerBI星球 2024-04-17 发布于河南
前面介绍了可视化计算中的COLLAPSE函数,以及如何利用它进行各种占比的计算:深入了解Power BI可视化计算(3):占比和COLLAPSE 函数
其实还有个函数与COLLAPSE的用法相似,但是功能相反,它就是EXPAND函数,这篇文章就来看看它是怎么用的,以及有哪些应用场景。

EXPAND函数也只能用于可视化计算,官方对该函数的介绍是:检索与当前上下文相比具有更多细节级别的上下文。如果提供了表达式,则在新上下文中返回其值,从而允许在层次结构中导航并在更详细的级别进行计算。
简单来说,EXPAND函数展开当前的视觉上下文,向子级也就是更明细级别的上下文中计算;而COLLAPSE函数折叠当前的视觉上下文,从父级也就是更高级别上取数
下面依然以PowerBI星球案例模型制作的这个矩阵为例:
通过几个例子来看看它的用法以及效果。

1. 只有轴作为参数时,检索比当前上下文更低级别的上下文,可以用作CALCULATE函数的调节器。
这里以计算销售额的最大值为例,新建可视化计算:

最大值 = CALCULATE(MAX([销售额]),EXPAND(ROWS))


效果如下:
  • 在产品名称上下文中,由于没有更明细的级别,所以它返回的值还是本产品的销售额。
  • 而在产品类别上下文,返回是它的子级,也就是产品名称销售额的最大值。
  • 最后一行总计,它的子集是产品类别,所以返回的是三个产品类别销售额的最大值。

这里需要注意的是,由于本级别的子级,也就是明细级别,会存在多个值,所以需要使用聚合函数,来对多个值进行聚合,返回多个值的最大值、最小值、平均值、合计值等。
这是不同于COLLAPSE函数的地方,因为每个上下文的一层父级只有一行,不需要使用聚合函数。
并且只有在可视化计算中,才能将度量值直接用于聚合函数的参数,如果你建普通的度量值也这么写,这是不允许的。
由于这个矩阵的层级都位于行标题,所以轴用的是ROWS;如果你的层级位于列上,还可以改成COLUMNS,关于方向轴的具体用法见前面RUNNINGSUM的介绍。
如果要向下展开2级的最大值,第2参数可以写成2(省略时默认为1,展开下1级),上面的可视化计算公式改成:

最大值2 = 

CALCULATE(MAX([销售额]),EXPAND(ROWS,2))


效果如下:
由于只有最后一行总计行,可以向下展开2个级别,所以只有它发生了变化,返回的是第二层明细,也就是子级的子级,产品名称的最大销售额。
EXPAND的参数也可以不用轴,而用固定的层级字段来代替,还可以这么写:

最大值3 = 

CALCULATE(MAX([销售额]),EXPAND([产品名称]))

这种写法,无论是哪个层级,它将会固定的向下展开产品名称级别进行计算,返回产品名称的最大的销售额。
除了上面的写法,EXPAND函数与COLLAPSE一样,也有第二种写法。

2. 用表达式和轴同时作为参数,则可以直接返回明细上下文的值,不再需要CALCULATE。
EXPAND可以这样用:

最大值4 = EXPAND(MAX([销售额]),ROWS)

或者:

最大值5 = EXPAND(MAX([销售额]),[产品名称])

这种写法更加简洁,结果与上面用CALCULATE的对应写法完全一样。

还有一个类似的函数EXPANDALL,它和EXPAND一样也有上面两种写法,不过它的轴只能是轴参数ROWS/COLUMNS,不能是字段,它聚合最低层级,也就是最明细层级的数据。

最大值6 = EXPANDALL(MAX([销售额]),ROWS)


通过上面的介绍和EXPAND函数计算的结果,可以看出,对于明细行,其实它和原度量值的结果一样,它的效果在于每个层级的总计行,所以可以利用它来定义总计的数据
上面用MAX函数返回的是最大值,还可以用其他聚合函数,比如用AVERAGE函数,让总计行等于下级的平均值。

平均销售额 = EXPAND(AVERAGE([销售额]),ROWS)

用上面的可视化计算方式比用传统的方式,通过ISINSCOPE判断层级来自定义总计简单多了。

还有关于总计行不等于明细行之和的问题,以前用的是SUMX函数来修正,现在也可以通过可视化计算的EXPAND来解决这个问题了。
比如下面这个矩阵:

如果想让总计行等于明细行之和,只需要新建可视化计算:

客户数 总计修正 = EXPAND(SUM([客户数]),[产品类别])

就能轻松将总计行调整为明细行的合计数。

以上就是关于EXPAND函数和基本应用场景的介绍,更多关于可视化计算的系列文章请参考:

深入了解Power BI可视化计算(1):RUNNINGSUM运行总和

深入了解Power BI可视化计算(2):MOVINGAVERAGE移动平均

深入了解Power BI可视化计算(3):占比和COLLAPSE 函数

深入了解Power BI可视化计算(4):像Excel一样轻松引用"单元格"

深入了解Power BI可视化计算(5):轻松为表格添加行号


    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多