首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >这是不是 PowerBI 原生作图的最高境界 - 案例:对比积累分析图

这是不是 PowerBI 原生作图的最高境界 - 案例:对比积累分析图

作者头像
BI佐罗
发布2019-10-14 16:15:23
2.3K0
发布2019-10-14 16:15:23
举报
文章被收录于专栏:PowerBI战友联盟PowerBI战友联盟

这是一个很通用的需求,先来看看效果吧:

这个图首先对业务来说是很有意义的,它同时显示了:

  • 实际与目标的对比;
  • 实际与目标的差异;
  • 实际与目标的差异率;
  • 累计完成与累计目标的对比。

如果让分析师去做一些高信息含量的图表,那该图一定位列其中,因为企业几乎都是是目标(结果)导向的,对此,KPI的达成就是关键的信息了。

关于可视化,我们将可视化分为两类:

  • 数据可视化
  • 商业图表可视化

我们认为这两者是不同的,具体差异,请参考我们的系列文章:(以后再读)

真正的商业图表可视化之道-布道篇

真正的商业图表可视化之道-实践篇

真正的商业数据可视化之道-工具篇

结论是:我们希望用基本的常识性元素来构建商业图表。

在 PowerBI 中确实存在一些痛点,解决的方法大致有两个:

  • DAX 驱动可视化
  • 叠图技巧

在实践中,我们常常将这两个技巧结合使用,以基于 PowerBI 原生可视化元素来构建尽可能丰富的效果。

关于 DAX 驱动可视化,在前文中已经有介绍,这个我们就不再展开了。本文重点来说明结合 DAX 驱动可视化 与 叠图法 在 PowerBI 中的使用。

分析思路

我们先在草稿纸上大致研究一下一个图表的有意义部分,然后将它进行拆分,直到拆解到不能再拆解为止。在某些特殊的情况下,有些图表相当于两个图表,例如:

其实,这里只用了一个图表,这在 PowerBI 中是组合图。

而对于开篇提到的图表,其全部构成了有机的整体性,这个整体性提供了系统化有效的信息密度。由于不能直接配置,我们仔细研究后,可以将其拆解为 5 部分。分别是:

这么来看,你就可以清楚地发现这里包括五个图,我们要做的事是:

  • 将多个图堆叠到一起,看起来是一个图。
  • 构成一个整体。
  • 保持动态稳定性。

这三点是罗叔首次提出的 叠图原理需要满足的必要条件

前两点比较容易理解,而第三点可能会费解,我们一一来解释下。

多个图堆叠多一起

先做出来多个图,在头脑中想象他们排列在一起的样子。这大概需要一点点初中几何的空间想象能力,一般初中生就会具备,大家都不会有问题。

对于其中的某个图,可能需要施加 DAX 驱动可视化。这里我们做一些重点说明。

例如:

这个图的特别之处在于:

  • 正数和负数的颜色是不同的。

这里并没有用 DAX 驱动可视化,而是通过条件格式设置,如下:

这里设置颜色也是有技巧的,如下:

这样,0就成为了界限,小于0就会是红色;大于等于0就会是绿色。这里是为了教学目的,我们故意没有使用 DAX 驱动可视化。然后,当你想做这个效果的时候就不然了:

这个图其实是一条折线图,你可以看出来吗?

如果你不能看懂,我们将它放大来看:

我们要想实现预期效果需要完成:

  • 将线拉平;
  • 只显示点,不显示线;
  • 按正负分别显示。

前两点可以通过设置实现:

  • 将 Y 轴的刻度设置从负数开始,其效果就像是被拉平了;
  • 将形状的线宽度设置为 0 就不再显示线了。

而如果你还想用上述的条件可视化来设置正负数就会发现:

根本没有这个设置机会,没有条件颜色来设置,这时候就需要祭出大杀器 DAX 驱动可视化了。

DAX 驱动可视化

由于本文建立在坚实的 MVC 理论基础上,可以参考:(以后再看)

PowerBI 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 原生视觉元素的能力发挥到极限,发挥到充要极限:

  • 如果某个图是 PowerBI 原生视觉对象可以做的,那么本文就展示了一定可以做出来的步骤和方法;
  • 如果本文展示的方法无法实现某图,则该图是无法通过 PowerBI 原生视觉对象制作的。

也就是说:综合运用 叠图法 + DAX 驱动可视化 就可以达到 PowerBI 原生作图的极限。

本文给出了 叠图法 的标准步骤:

  1. 将整体拆解为不可分割的最小部分;
  2. 实现各个最小部分;
  3. 编组。

且必须满足:保持动态稳定性约束

在作图时,可采用 DAX 驱动可视化 的思想。

由于在现实中将大量出现这种模式,为此,我们需要一套更加大的项目框架来管理,就是 MVC 设计思想和框架。

本文信息含量极大,不是简单做一个图给你看看的。

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

本文分享自 PowerBI战友联盟 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 分析思路
  • 多个图堆叠多一起
  • DAX 驱动可视化
  • 构成一个整体
  • 保持动态稳定性
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档