Power BI计算组应用

1. 为什么要有计算组(calculation group)

因为指标经常设计MTD YTD PY YOY MOM等计算,如果给每个指标都写一个以上的时间智能函数,那么会写很多重复的度量值,这些度量值的唯一不同就在于引用的基础度量值。
比如:Sales.YTD = CALCULATE([Sales],DATESYTD('Calendar'[Date]))
如果需要添加更多度量值的YTD进来,是不是可以只替换[Sales]这个度量值就行了?

计算组可以做到这个

有效的降低了我们重复开发的工作量

2. 步骤

1)打开pbi,然后点击外部工具的“tabular editor”,可以直接连接到pbi文件


打开编辑器

(没有的这个的话 百度一下 下载就行了)
2)点击文件夹-新建组


image.png

3)新建度量值
image.png

image.png

image.png

注意在tabular editor中粘贴公式时,不要前面的度量值名字,要从“=”后面开始粘贴公式。

4)应用
在pbi中刷新后,你可以看见多了一个文件夹,里面只有一列[Name]


image.png

然后我们可以将其他度量值也这么重复操作一下

现在让我们尝试应用一下
基础度量值放在value,日期放在行,计算组放在列:


image.png

成功完成

此外
1)还可以将计算组作为切片器进行筛选

image.png

2)tabular editor里,还可以设置计算组属性

image.png

3. 进一步

1)如何显示当期值

image.png

2)我想一部分度量值应用计算组,另一部分不应用 可以吗
使用ISSELECTEDMEASURE 或SELECTEDMEASURENAME

--如果不是[Margin %]这个度量值,则执行这个运算
IF (
    NOT ISSELECTEDMEASURE ( [Margin %] ),
    DIVIDE (
        SELECTEDMEASURE (),
        COUNTROWS ( 'Date' )
    )
)

--另一种写法
```IF (
    NOT ( SELECTEDMEASURENAME () = "Margin %" ),
    DIVIDE (
        SELECTEDMEASURE (),
        COUNTROWS ( 'Date' )
    )
)

或者SELESTEDMEASURENAME也可以达到同样效果,但是更推荐ISSELECTEDMEASURE
因为1)SELESTEDMEASURENAME如果将后面度量值名字写错了,不会报错不容易发现;而ISSELECTEDMEASURE会报错
2)如果度量值重命名了,SELESTEDMEASURENAME需要手动更改,而ISSELECTEDMEASURE会自动更改。

4. 应用场景

1)时间期间对比
2)依据不同的日期字段进行切换:根据订单日期,根据发货日期以及根据截止日期
https://www.sqlbi.com/articles/using-calculation-groups-to-switch-between-dates/
3)实现汇率转换,同时需要依据不同的货币切换货币符号
4)格式批量设置(会覆盖掉原本度量值的格式)
detail refer to
https://zhuanlan.zhihu.com/p/106009183


之后了解一下:
https://www.sqlbi.com/articles/using-calculation-groups-to-selectively-replace-measures-in-dax-expressions/
使用计算组选择性地替换dax中的度量值

https://www.sqlbi.com/articles/avoiding-pitfalls-in-calculation-groups-precedence/
了解计算组中的优先级

你可能感兴趣的:(Power BI计算组应用)