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

Power BI 计算组理解(一)

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

有时为了节省页面空间,让当前报表提供更多的信息,经常会有这样的设计,即提供一些选项给报表使用人,当报表使用人选定某个项目时,当前报表才显示该项目的信息,如下:

如果不使用外部工具,实现上述功能一般有两种做法:

(1)使用书签功能,通过书签+按钮控制多个视觉对象的显示和隐藏,设置相对比较麻烦。

(2)使用辅助表,利用DAX新建一个用于显示切换的度量值步骤如下:

  • 新建一个辅助表:
  • 构建度量值:

(使用辅助表,还可以分别创建三个度量值,与视觉对象的功能组合起来使用)

然后将辅助表的指标名称列加入到切片器视觉对象,这样就可以让用户通过该切片器控制度量值[指标切换]值的显示。

但有一个问题,该度量值的显示格式只能设置为单一样式(如利润率想设置为百分比,其他设置为逗号分隔的整数样式),如果使用DAX中format函数分别指定样式,其结果又变成了文本,无法参与后续计算,在视觉对象中呈现会有许多限制。

目前,使用计算组很容易解决这个问题。计算组的定义需要使用外部工具Tabular Editor,使用TabularEditor创建计算组后,模型中就多了一个表格,该表格有两列:一列是Name列(可以重命名),别一列列名为Ordinal,用来设置排序。如下:

并将收入计算项定义为度量值 [收入]、利润计算项定义为度量值[利润]、利润率计算项定义为度量值[利润率]

上表中每一行对应一个计算项,每一个计算项可以定义值及值显示格式,与使用辅助表类似,也需要将上述的[Name]列加入至当前页面的切片器视觉对象.

然后将度量值(值= BLANK())用矩阵呈现出来,就可以得到与用辅助表的方法十分类似的结果,其原理如下:

正因为计算组会影响当前页面所有受[Name]列筛选的度量值,因此,原使用辅助表构造的值也会发现变化,如下:

如表1中的度量值虽然是通过辅助表与DAX重写了,但是由于计算组表[Name]列中的“收入”是选定状态,在交互筛选的作用下,表1表2中的度量值都会传入计算组,然后返回收入计算项定义的值(表达式),也就是显示[收入],即使目前表1对应的辅助表的指标名称选定为“利润”。

事实上,表1中的度量值[指标切换]等价于

代码语言:javascript
复制
CALCULATE([指标切换],'指标名称计算组'[Name]="收入")

表2中的度量值[指标切换]等价于

代码语言:javascript
复制
CALCULATE([值],'指标名称计算组'[Name]="收入")

注:生成的计算组表的列也可以向其他普通表的列一样在DAX表达中引用

不管是上面表1中的度量值[指标切换],还是表2中的度量值[值],都会被'指标名称计算组'表中的[Name]列“收入”项所指向的定义表达式(即度量值[收入])所替换,也就是说上面两个度量值最终都被替换成了[收入]

可以将计算项理解为 特殊的自定义函数 ,其输入参数为度量值(取决于该度量值是否受计算组表列的筛选影响),函数的定义即计算项的定义,返回的结果为计算项重新定义后的表达式。而计算组则是一组计算项的集合。

(未完待续....)

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

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

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

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

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