这是一个很通用的需求,先来看看效果吧:
这个图首先对业务来说是很有意义的,它同时显示了:
如果让分析师去做一些高信息含量的图表,那该图一定位列其中,因为企业几乎都是是目标(结果)导向的,对此,KPI的达成就是关键的信息了。
关于可视化,我们将可视化分为两类:
我们认为这两者是不同的,具体差异,请参考我们的系列文章:(以后再读)
结论是:我们希望用基本的常识性元素来构建商业图表。
在 PowerBI 中确实存在一些痛点,解决的方法大致有两个:
在实践中,我们常常将这两个技巧结合使用,以基于 PowerBI 原生可视化元素来构建尽可能丰富的效果。
关于 DAX 驱动可视化,在前文中已经有介绍,这个我们就不再展开了。本文重点来说明结合 DAX 驱动可视化 与 叠图法 在 PowerBI 中的使用。
我们先在草稿纸上大致研究一下一个图表的有意义部分,然后将它进行拆分,直到拆解到不能再拆解为止。在某些特殊的情况下,有些图表相当于两个图表,例如:
其实,这里只用了一个图表,这在 PowerBI 中是组合图。
而对于开篇提到的图表,其全部构成了有机的整体性,这个整体性提供了系统化有效的信息密度。由于不能直接配置,我们仔细研究后,可以将其拆解为 5 部分。分别是:
这么来看,你就可以清楚地发现这里包括五个图,我们要做的事是:
这三点是罗叔首次提出的 叠图原理需要满足的必要条件。
前两点比较容易理解,而第三点可能会费解,我们一一来解释下。
先做出来多个图,在头脑中想象他们排列在一起的样子。这大概需要一点点初中几何的空间想象能力,一般初中生就会具备,大家都不会有问题。
对于其中的某个图,可能需要施加 DAX 驱动可视化。这里我们做一些重点说明。
例如:
这个图的特别之处在于:
这里并没有用 DAX 驱动可视化,而是通过条件格式设置,如下:
这里设置颜色也是有技巧的,如下:
这样,0就成为了界限,小于0就会是红色;大于等于0就会是绿色。这里是为了教学目的,我们故意没有使用 DAX 驱动可视化。然后,当你想做这个效果的时候就不然了:
这个图其实是一条折线图,你可以看出来吗?
如果你不能看懂,我们将它放大来看:
我们要想实现预期效果需要完成:
前两点可以通过设置实现:
而如果你还想用上述的条件可视化来设置正负数就会发现:
根本没有这个设置机会,没有条件颜色来设置,这时候就需要祭出大杀器 DAX 驱动可视化了。
由于本文建立在坚实的 MVC 理论基础上,可以参考:(以后再看)
PowerBI DAX MVC 设计模式 导论 续 - 案例:竞争交叉分析(深度购物篮)
我们这里虽然讲 DAX 驱动可视化,但却基于我们的 MVC 框架来做:
如下:
View.P&N =
SELECTCOLUMNS(
{
( "正" , 1 ),
( "负" , 2)
} , "Name" , [Value1] , "OrderBy" , [Value2]
)
对此建立一个度量值如下:
View.Sales.Varance.Value%.Show =
VAR vLegend = SELECTEDVALUE( 'View.P&N'[Name] )
RETURN SWITCH( TRUE() ,
vLegend = "正" && [View.Sales.Varance.Value%] >= 0 , [View.Sales.Varance.Value%] ,
vLegend = "负" && [View.Sales.Varance.Value%] < 0 , [View.Sales.Varance.Value%] ,
BLANK()
)
复习一下:
由于这是为了显示而显示的度量值,因此与业务数据是无关的。我们从命名上就可以显著的区别了。再来看看我们的结构如下:
其中,可以清楚地看到这种组织结构的巧妙之处,太香了。
回到我们的主线:
我们要做的事是:
现在来看第二点,构成一个整体,这得益于 PowerBI 2019.9 的更新,视觉元素编组,这样我们就可以彻底地构造一个整体了,如下:
在这个编组里,容纳了五个图。有些图的做法非常基础,这里就不提了。
现在来看最重要的一点叠图必要条件:保持动态稳定性。
那就是不论用户如何操作,图表都应该完美显示,整体的布局不会肢解掉。
例如:
当用户将时间调整到 2019 年时,整个可视化仍然可以保持很好的显示。因此需要注意:
这里可能影响动态稳定性的还包括数字标签的长短,坐标轴等,很多时候是无法做出完美的叠图的,但叠图仍然是一种非常重要的技巧。
本文主要讲解了一个几乎是 PowerBI 作图中最重要课题,通过叠图法以及 DAX 驱动可视化就可以将 PowerBI 原生视觉元素的能力发挥到极限,发挥到充要极限:
也就是说:综合运用 叠图法 + DAX 驱动可视化 就可以达到 PowerBI 原生作图的极限。
本文给出了 叠图法 的标准步骤:
且必须满足:保持动态稳定性约束。
在作图时,可采用 DAX 驱动可视化 的思想。
由于在现实中将大量出现这种模式,为此,我们需要一套更加大的项目框架来管理,就是 MVC 设计思想和框架。
本文信息含量极大,不是简单做一个图给你看看的。