前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Power BI 计算组理解(二)

Power BI 计算组理解(二)

作者头像
公众号PowerBI大师
发布2021-05-11 10:02:49
1.4K0
发布2021-05-11 10:02:49
举报

上一节 Power BI 计算组理解(一)中,提出可以将计算项理解为 特殊的自定义函数 ,其输入参数为度量值,不过上一节创建的计算组(收入、利润、利润率),在其值定义中并没有用到其输入的度量值本身。

其实很多情况下,计算组一般用在计算 年累计、去年同期、同比增长率 等类似场景,因为这些计算往往只是基础度量值不同,其他逻辑均相同,这样使用计算组就可以极大的简化度量值的编写。

在这种场景下,定义这类计算项,就需要使用其输入的度量值。获取输入到计算组的度量值需要使用dax函数SELECTEDMEASURE()。

下面创建一个 时间维度计算组,并在其创建三个计算项:

  • 本期:
代码语言:javascript
复制
SELECTEDMEASURE()
  • 上年同期:
代码语言:javascript
复制
CALCULATE ( SELECTEDMEASURE (), SAMEPERIODLASTYEAR ( '日期表'[Date] ) )
代码语言:javascript
复制
  • 同比增长率:
代码语言:javascript
复制
DIVIDE (
  SELECTEDMEASURE (),
  CALCULATE ( SELECTEDMEASURE (), SAMEPERIODLASTYEAR ( '日期表'[Date] ) )
) - 1
代码语言:javascript
复制

不过,当输入度量值为[利润率]时,上述计算组中的同比增长率(一般用来计算绝对数)可能没有意义,这时可以使用使用DAX函数 ISSELECTEDMEASURE()排除。

因此,可以将同比增长率计算项的定义更改为:

代码语言:javascript
复制
IF (
    NOT ISSELECTEDMEASURE ( [利润率] ),  //判断输入度量值是否为[利润率]
    DIVIDE (
      SELECTEDMEASURE (),
      CALCULATE ( SELECTEDMEASURE (), SAMEPERIODLASTYEAR ( '日期表'[Date] ) )
    ) - 1,
   BLANK ()
)

此时,该模型中就存在两个计算组,如果返回页面,将 时间维度计算组 表列[Name1]加入至切片器后,当前页面的度量值便同时受两个计算组所控制,如下

如果参照上一节的写法,此时页面的度量值实际转换成以下形成:

代码语言:javascript
复制
CALCULATE (
   CALCULATE ( [值], '指标名称计算组'[Name] = "收入" ),
  '时间维度计算组'[Name1] = "上年同期"
)

代码语言:javascript
复制
CALCULATE (
   CALCULATE ( [值], '时间维度计算组'[Name1] = "上年同期" ),
  '指标名称计算组'[Name] = "收入"
)

代码语言:javascript
复制
CALCULATE ( [值], '时间维度计算组'[Name1] = "上年同期", '指标名称计算组'[Name] = "收入" )

这三种都是等价的,他们最终都会转换为:

代码语言:javascript
复制
CALCULATE ([收入], SAMEPERIODLASTYEAR ( '日期表'[Date] ) )

需要注意的是,虽然也可以像其他表列一样,在DAX中直接引用其计算组表的名称列,但与其他列筛选并不相同:

1、在DAX中直接引用其计算项的名称,进行列筛选,该筛选只对度量值起作用

2、当模型中存在多个计算组时,其对度量值的重新定义改写存在先后顺序(改写的先后顺序会影响计算结果,本案例由于其特殊性,其不同的顺序计算结果相同),但该顺序由参数 Calculation Group Precedence 决定,不会因为在CALCULATE中写在外层就先执行外层。因此上面三种写法是等价的。

3、同一计算组,多个计算项通过CALCULATE嵌套筛选,内层筛选会覆盖外层筛选。

-------------------------------------------------------------

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PowerBI大师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档