文章背景: 在进行商业数据分析时,经常需要给不同的度量值(如销售额、销量等)计算同比、环比、YTD(年初至今)等指标,如果给每个指标都写一个以上的时间智能函数,那么会写很多重复的度量值,这些度量值的唯一不同就在于引用的基础度量值。比如:上月业绩 = CALCULATE([销售业绩],DATEADD('日期表'[日期],-1,MONTH))。
如果需要统计更多度量值的上月情况,只需替换[销售业绩]这个度量值就行了。而计算组功能就可以做到这一点。
PowerBI 版本:2.109.782.0 64-bit (2022年9月)
假定有一份PowerBI文件,内有一张销售明细表,目前需要统计每月销售额、人均销售额等的同比、环比。本文打算通过计算组的功能实现。操作步骤如下:
(1)需要提前安装Tabular Editor 3软件,下载地址:https://tabulareditor.com/。这个软件是收费的,米目前开放了 30 天的免费体验期。
(2)Tabular Editor 3软件安装完成后,重新打开PowerBI软件,在外部工具的菜单上可以看到Tabular Editor 3图标。

(3)点击该图标,进入Tabular Editor 3的界面。

(4)点击上图中的图标,选择已经打开的PowerBI 文件。

注意:PowerBI desktop必须提前打开;PowerBI desktop必须已经有一个数据模型而不能是空的。
选择,并点击OK后,进入如下界面。

(5)右键点击Model,选择Create,弹出:

点击Calculation Group,创建一个计算组,如下:

创建的计算组包括如下几个部分:
假定我们想要得到如下的效果图:

这里需要定义环比和同比这两种计算逻辑。
(6)修改计算组的名字。

(7)修改Name的名字。

(8)定义计算组中的项
右键Calculation Items,选择Create,弹出:

点击Calculation Item,创建一个名为环比的项,如下:

环比:
VAR PY =
CALCULATE(
SELECTEDMEASURE(),
DATEADD('日期表'[日期],-1,MONTH)
)
RETURN
DIVIDE(
SELECTEDMEASURE()-PY,
PY
) 同样地,点击Calculation Item,创建一个名为同比的项,如下:

同比:
VAR PY =
CALCULATE(
SELECTEDMEASURE(),
DATEADD('日期表'[日期],-1,YEAR)
)
RETURN
DIVIDE(
SELECTEDMEASURE()-PY,
PY
)通过建立的两个计算项,可以看到:
1)Ordinal指定了排序;
2)Format String Expression 指定了格式化的字符串。
(9)将更改保存至DAX引擎。

点击上图中的图标,将更改保存至已经连接的数据库(也就是DAX引擎)。
(10)回到PowerBI desktop界面,对所创建的计算组进行数据刷新。

(11)计算组已经创建完毕。按照下图拖拽出需要的矩阵图,效果如下:

对于矩阵的值,这里只放置了一个度量值(人均销售额)。而计算组按照事先定义的两个计算逻辑(环比和同比)进行了计算。
参考资料:
[1] Power BI计算组应用(https://www.jianshu.com/p/0f309922c469)
[3] [通过计算组动态切换指标格式(https://www.cnblogs.com/yeacer/p/13938034.html)