PowerBI 动态数据格式 高级版 以及重要通知

共 3267字,需浏览 7分钟

 ·

2020-08-23 15:47

最近有很多内容在研究和更新,但公众号内容,永远是只会迟到,但不会缺席,更会发出很多干货。

今天是来自罗丝钉伙伴的一个真实问题。(罗叔的会员群伙伴,简称螺丝钉,比较善于挤,善于钻)

问题重述

一般我们并不提倡互动式回答问题,非常随意而低效。

熟悉我们的螺丝钉同学们,会认真的把问题整理后发出,那必然会得到专业的回复。

问题如下:

需求:

在一个界面展示不同指标的同比分析结果。

通用的同比分析表:

需要的指标切片器:

  • 销售额/万元

  • 利润/万元

  • 利润率/%

期望达到的展示效果:

1.当指标为销售额或利润时,本期值、上年同期值数据格式为小数,增长率为百分比。

2.当指标为利润率时,本期值、上年同期值数据格式为百分比,这时不能计算同比增长率,而应计算同比增加值,单位为百分点。

问题:采用计算组能解决不同类别指标的动态数据格式问题,但无法解决利润率的同比增加值计算逻辑,因为针对率指标的同比计算公式不一样了。

请教:是否有解决思路和方法?

——

以上就是来自螺丝钉的问题了。那么,这种问题问地就很清楚,老师只能回答:能还是不能了。

而我们必须得能啊。

效果预览

这个是一个很通用和重要的场景,我们先给出结果,如下:

该问题非常有意义,它的精妙之处在于:

  • 销售额的显示,本期和上期是值,而同比增长是%;

  • 利润率的显示,本期和上期是率,而同比增长是值。

这在显示上完全是互斥的需求。

基础知识

这个实现非常重要,为了完成这个,您应该先了解此前的一篇文章:

用计算组实现动态格式

有了这个基础,我们再来看今天的问题。

格式与格式表达式

先来区分两个词语:

格式与格式表达式是不同的,请看:

这叫格式(文本)。

而再请看:

这叫格式表达式。

不难猜到:格式文本是一次性设置;而格式表达式是一个公式,它可以在运行时根据用户的选择来改变格式。所以,我们往往需要借助的是格式表达式的动态计算特性。

技巧

我们需要记住的只有一点:

如果在拖拽或选择切片器后,希望根本不同的选择,显示不同的格式,一定是用格式表达式。

实现-准备

我们先来实现 KPI 选项,如下:

Option.KPI =
SELECTCOLUMNS(
{
( "Sales" , "销售" , 1 ),
( "Profit" , "利润" , 2 ),
( "Volume" , "销量" , 3 ),
( "Profit%" , "利润率" , 4 )
} , "KPICode" , [Value1] , "KPIName" , [Value2] , "OrderBy" , [Value3] )

这是很经典的实现,包括选项的三要素:

  • Code:

    不变的代码

  • Name:

    可以随时根据用户诉求调整的名称文本

  • OrderBy:

    用来支持自定义排序

从今天起,您应该将这三要素改为四要素,再加入:

  • Format:

    数据格式

更新后,如下:

Option.KPI =
SELECTCOLUMNS(
{
( "Sales" , "销售" , 1 , "NUM" ),
( "Profit" , "利润" , 2 , "NUM"),
( "Volume" , "销量" , 3 , "INT"),
( "Profit%" , "利润率" , 4 , "PCT")
} , "KPICode" , [Value1] , "KPIName" , [Value2] , "OrderBy" , [Value3] , "DataType" , [Value4] )

这样更具通用性。

实现-动态格式表达式

对于计算组,可以这样设置:

这样就实现了 AC 的计算逻辑,再来实现格式化逻辑,如下:

对于 AC 可能是:销售额或利润率,所以判断其数据类型,如果是利润率的话,则使用百分比符号,反之全部使用整数格式。

而更复杂的是ΔPY的计算,是这样的:

根据需求,这里面蕴含了两套逻辑,如果是数值型的,计算增长率;如果是比率型的,只计算增长即可,因此,有:

注意,比率型的增长要改为点数。也就是说:例如率增加 1%,其实是增加了 1 个点。所以,1% 要视为 0.01,再进而视作 1 个点。

其对应的格式表达式为:

这与普通的情况正好是相反的。

于是就实现了:

这样,就可以类似的拓展了,可以实现非常多的度量值转换。

完。

再进一步

这个功能已经实现了。以下内容很高阶,初学者可以略过。

但这并非我们的调性。我们还收集到螺丝钉们的问题,如:

计算组和参数表都可以实现类似的效果,只不过用参数表的方法不能实现动态格式而已。

例如:

其度量值写法如下:

从功能来说,我们使用参数表得到了完全一样的结果,但格式并不一致。

那我们就用一个方法来进行破除。

我们现在知道:

  • 计算组可以动态计算格式

  • 参数表结合SWITCH结果也可以做多分支计算

那么自然想到:是否可以让计算组只完成一件事就是格式表达式呢?

答案是肯定的,设置如下:

看不懂不要紧,来看看效果吧先:

可以注意到:这里多出了一个 Format 层,这层就像是一个管道,不带有格式的数值透过这个管道后就可以带有正确的格式来显示了。

用这种技巧和方法,暂时需要这么一层。那这个技巧有什么好处呢,似乎没看出来。

其好处在本例中并不明显,但如果你可以举一反三的话,这个技巧整个开启了一套数据格式通用解决方案,该方案可以:

一站式解决一个PowerBI文件全部格式设置问题。

你没有看错,由于方法太过劲爆,必须独立一篇文章,但读到这里的伙伴在理论上应该可以想到我说的是什么。如果你可以想到,那么证明您的举一反三能力是超强的;没有想到也不要紧,继续关注即可。

总结

本文从实际案例出发,引导并给出了数据格式的高级设置方法并即将开启重磅文章揭示数据格式通用解决方案。敬请留意。



最近工作

给各位老铁螺丝钉同学们汇报下最近的工作:

1、【视频课程】视频课程翻新

随着 PowerBI 的进步,很多课程内容会统一翻新,工作量巨大。这里包括了之前说的《PBI高级》。

2、【线下课程】PBI VIP 线下

如果你等不及,可以来线下参加 VIP 培训,现在已经可以说更新到 V 2.5 版。现场随培训附赠超级秘密资源,有人花了钱买了资源走了,课程没来上,表示666,因为人家在海外。

3、【线下课程】《Thinking in DAX》重磅开启

为期一日的《Thinking in DAX》将为高阶选手全力释放 DAX 顶级思想和技巧,全网稀缺。

4、【辅助工具】DAX Pro 即将推出

私房照已经泄漏,长相如下:

借助这套工具,您可以轻松地选择度量值,它与 Power BI Desktop 内置的快速度量值工具类似,但这个 DAX Pro 当然更加强劲,因为我们将联合专家为小白选手内置大批度量值,供大家直接使用,而不需要再去学习复杂的 DAX 教程而还是不知道怎么写。

目前可以申请内测,私信BI佐罗,验证码:daxpro。

5、【碎片学习】视频号开通:BI佐罗讲PowerBI

您如果刚刚接触PowerBI不久,可以关注这里,我会整理很多小视频用很短的时间教大家各种小技巧。

最后,推荐有志于使用 Power BI 或 DAX 的螺丝钉来学习线下的内容,那真的是必须感动自己才能如此推荐。




对于希望 彻底理解 DAX 本质精髓(市面无记载) 的伙伴,罗叔准备了前所未有的 VIP 线下课程,彻底揭示 PowerBI 尤其是 DAX 的 本质精髓

应伙伴要求

PowerBI 超级实训全面开启

系统化学习

这才叫学习路线图

您可能希望参加线下密训:


资源已为您凝练



放大看,吓坏你


其中的资源包令人生畏



资源太过生猛


非常凶残的培训,听过的人都说够狠


点击查看内容目录


现已开通:北京 上海 广州 深圳 成都

~ 人满延期,私信报名 ~


让数据真正成为你的力量
加私信暗号:data2020


点击【阅读原文】进入【学习中心】

浏览 49
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报