前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PowerBI指标动态化二三事

PowerBI指标动态化二三事

作者头像
公众号PowerBI大师
发布2020-02-13 18:20:26
9000
发布2020-02-13 18:20:26
举报

随着学习PBI的深入 ,各种操作技能也都逐渐被掌握,那么指标的动态化是必然会去尝试的一件事情。

就像这样:

老板想看撒就看撒,不用在不同的页面间切换来切换去的,在一页报告就可以搞定,是非常高效的,也是衡量你的PBI水平的一项重要指标吧!几乎可以说,这是你从小白,到入门的必经之路。

简要介绍一下制作过程:

首先,需要建立一张中间表,可以通过“输入数据”,和建模tab里的“新建表” 实现

该表需要包含需要转换的指标名称

其次,写一个动态指标切换的度量值

代码语言:javascript
复制
指标动态切换 = SWITCH(TRUE(),
SELECTEDVALUE('指标名称表'[请选择需要查看的指标])="销售额",
[KPI1.销售额],
SELECTEDVALUE('指标名称表'[请选择需要查看的指标])="利润",
[KPI2.利润],
SELECTEDVALUE('指标名称表'[请选择需要查看的指标])="销售数量",
[KPI4.销售数量],
[KPI1.销售额]
)

简单解释一下,当选择销售额时,则显示销售额,选择利润,则显示利润,选择销售数量则显示销售数量,什么都不选的时候,默认显示销售额

直接应用这个动态切换的度量值,再配合“指标名称”的切换器,就可以完成度量值的自由切换了。

有2个细节:

1个是切片器中选择项目的排序问题,可以使用按列排序,来进行定义

第2个是图表的标题切换,也可以使用度量值,进行自定义的设置

代码语言:javascript
复制
动态标题 = 
SELECTEDVALUE('指标名称表'[请选择需要查看的指标])

随着你经验的增加,可能会考虑增加几个指标的切换,那也没问题,直接在指标名称和指标动态切换里做相应的修改就可以了。


很自然的,我们会把有关比率的指标,如利润率,客户转换率也放进来。

**比率类的指标一般设置为百分比的格式 这也是很简单的,只要依葫芦画瓢就可以了。

step1 增加利润率的选项

setp2 修改度量值,增加利润率

代码语言:javascript
复制
指标动态切换 = SWITCH(TRUE(),
SELECTEDVALUE('指标名称表'[请选择需要查看的指标])="销售额",
[KPI1.销售额],
SELECTEDVALUE('指标名称表'[请选择需要查看的指标])="利润",
[KPI2.利润],
SELECTEDVALUE('指标名称表'[请选择需要查看的指标])="销售数量",
[KPI4.销售数量],
SELECTEDVALUE('指标名称表'[请选择需要查看的指标])="利润率",
[KPI3.毛利率],
[KPI1.销售额]
)

这样就完成了,可是我们看到的是这样的。

没事,这应该是数据的类型没有设置好,也很简单。把数据类型设置成百分比就可以了,这时问题就来了!

这个指标动态选择度量值,既包含了销售额,销售数量,和利润率,这时应该如何设置呢?不管了,还是先来尝试一下吧~

尝试1,将利润率指标,设置成百分比格式,然而,并没有什么用!

尝试2,将动态指标设置成百分比,

那就会把销售额等其他指标也一同设置为百分比格式,这显然不是我们想要的。

一种无力感瞬间传遍全身...

尝试3,使用Format函数将利润率包裹起来,强行转换成百分比格式。

代码语言:javascript
复制
SELECTEDVALUE(
'指标名称表'[请选择需要查看的指标])="利润率",
FORMAT([KPI3.毛利率],"0.00%")

结果是这样的!利润率显示不了!

使用format的percent形式呢?

代码语言:javascript
复制
SELECTEDVALUE('指标名称表'[请选择需要查看的指标])="利润率",
FORMAT([KPI3.毛利率],"percent")

结果还是一样的.

......

wow!

这是什么鬼,这是可能已经真正感觉到很无助了!

怎么办呢?有一个变通的办法,可以把利润率X100来显示,

代码语言:javascript
复制
SELECTEDVALUE('指标名称表'[请选择需要查看的指标])="利润率",
[KPI3.毛利率]*100

这也是没有办法啊? 老板,您就将就着看吧!只要不是太弱智,都能看得懂的!

这一定是个bug!期待微软下次更新吧!那这背后到底是什么情况呢,有解决的方案嘛?其实,这个问题到目前为止,真的是无解的,这涉及到DAX中关于数据类型的一些基本原理。


来揭晓答案吧

代码语言:javascript
复制
指标动态切换 = SWITCH(TRUE(),
SELECTEDVALUE('指标名称表'[请选择需要查看的指标])="销售额",
[KPI1.销售额],
SELECTEDVALUE('指标名称表'[请选择需要查看的指标])="利润",
[KPI2.利润],
SELECTEDVALUE('指标名称表'[请选择需要查看的指标])="销售数量",
[KPI4.销售数量],
SELECTEDVALUE('指标名称表'[请选择需要查看的指标])="利润率",
[KPI3.毛利率],
[KPI1.销售额]
)

当这样写的时候,该度量值可以被设置成,数值(小数,百分比,或者整数类型)

当然这取决于我们调用度量值的属性。当使用FORMAT函数,强行转换为百分比格式的时候,只是看着是百分比格式而已,其实已经format函数转换以后,值已经被强行转成文本格式

来看看format 函数的官方说明

FORMAT(<value>, <format_string>)

看到这个说明,估计你已经明白一多半了,没错,公式说明的最后是以string 结尾的,这就说明format 函数返回的是一个文本类型的值

很自然的,文本类型的值,当然无法以图形的形式展现了!还有一个重要的细节,很容易被大家所忽视,请思考一下,这时该度量值中,既包含了销售额的数值类型,又包含了经过format 函数转换后的文本类型的值,那这个度量值现在是什么类型的呢?

这是一个比较容易被忽视的细节,当有2种以上数据类型时,这个类型就变成了“变体”。说白了就是不确定,当你需要他是男的时候,他就是男的,当你需要她是女的时候,她就是女的,突然想到在量子力学领域很有名的一个定理:

薛定谔的猫

和这只既生又死的猫一样,当没有被选择的时候,就处于这样一个既是数值,又是文本的状态。随着我们去调用他,就会按照需要来改变其格式。

有点跑题了,这么说是方便大家更好的理解这个概念!那照这么说的话,这么简单的功能,就真的没有办法了嘛?看起来是这样的,在一个图形里是没法实现的,所以之前把值乘以100,来显示几乎是个比较好的变通方案了。

还有一个可行的方案是,使用表或矩阵来实现

在表里,可以被很好的实现。利润率的”%“显示的好好的!目前为止,这是比较可行的2个方案,如果大家有更好的解决方案,欢迎沟通交流!

总结:

这样一个看着很不起眼的设置,其实背后,蕴含着大量信息,值得我们去思考。

这个设置的难点在于百分比格式只是小数类型的一种而已,与千分位格式设置一起,PBI只提供了菜单界面的设置,而DAX本身除了Format以外的函数,并没有函数可以提供这样一种设置。期望在以后的更新中会有解决的方案。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档