158_模型_Power BI 使用 DAX + SVG 打通制作商业图表几乎所有可能

一、背景

最近对 Power BI 中使用 SVG 比较感兴趣,今天我们使用 DAX + SVG 复刻一下 Zebra-BI 视觉。

效果图

Power BI 公共 web 效果:https://demo.jiaopengzi.com/pbi/158-full.html

其实这个图表的样子应该很多朋友都见过,就是 Zebra BI 的视觉对象的效果;对于 Zebra BI 不是本文的重点对象,有兴趣的可以去 Zebra BI 官网(www.zebrabi.com)看看。整体来说 Zebra BI 的图表是符合 IBCS (www.ibcs.com) 商业图表的标准的。

这样的图表符合一个要求,也就是 IBCS 提出的 "成功理论" => "SUCCESS"

SUCCESS 理论是七个单词首字母拼写,也就是藏头诗的意思,如下:

  • SAY :信息的准确传达。
  • UNIFY :统一通用符号语言,正确使用符号。
  • CONDENSE :增加信息密度,最好一页搞定。这点倒是符合国人的习惯,中国式报表就能满足。
  • CHECK :确保视觉的完整性。
  • EXPRESS :选择适当的可视化,不要花里胡哨。
  • SIMPLIFY :大道至简,避免复杂混乱。
  • STRUCTURE :结构化与组织保持一致。

以上为笔者理解,在商业图表中,上述的规则确实比较实用,大家也可以取其精华去其糟粕的方式去理解。

二、图表解析

在 IBCS 商业图表的标准下,我们解析一下上述图表的几个元素,在日常的商业报表尽量都按照这个标准去做。

  • PY:previous year 的简写,表示前一年。用灰色矩形表示。

  • AC:actual 的简写,表示当前实际的。用黑色矩形表示。

  • PL:plan 的简写,表示目标或者预算,亦可以简写:BU (budget)。用空心矩形表示。

  • FC:forecast 的简写,表示是预测,很多业务场景都会用到预测。用斜杠矩形表示。

  • ΔPY:AC - PY,实际和前一年 PY 的差异值。

  • ΔPL:AC - PL ,实际和目标 PL 的差异值。

  • ΔFC:AC - FC,实际和预测 FC 的差异值。

  • ΔPY%:(AC - PY)/PY*100% ,实际和前一年 PY 的差异百分比。

  • ΔPL%:(AC - PL)/PL*100% ,实际和目标 PL 的差异百分比。

  • ΔFC%:(AC - FC)/FC*100% ,实际和目标 PL 的差异百分比。

  • 情绪颜色:红色表示不好,绿色表示较好。

  • 百分比极值:红色三角表示序列中最小,绿色三角序列中最大。

三、报表制作的必要 Power BI 元素

Ⅰ、日期表,请使用我们制作的日期表,详见附件。

Ⅱ、Power BI 视觉对象 HTML Content 可在视觉商店下载。

Ⅲ、准备好 SVG0_AC、SVG1_PY、SVG2_PL、SVG3_FC 四个度量值的,度量值的名称请勿更改,因为 SVG 主度量值 SVG4_htmlSVG5_image 都依赖。

四、SVG 主度量值配置

SVG 主度量值 SVG4_htmlSVG5_image 我们已经做成模板,只需要按照上述的日期表和 SVG0_AC、SVG1_PY、SVG2_PL、SVG3_FC 四个基础度量值按照你实际业务设定即可。

SVG4_html :在html 视觉对象 HTML Content 中使用,可以实现大图。

SVG5_image :在 Power BI 原生视觉对象中使用,图像只能是缩略图。

另外在 SVG 主度量值中做了相应的配置,满足个性化的需求。

五、报表生成

以上配置好了,只需要把主度量值拉到视觉对象即可,同时配合切片器使用即可动态变化。

注意这里使用的是 HTML Content 视觉对象,用的度量值是 SVG4_html

在 Power BI 原生视觉对象矩阵中,使用度量值 SVG5_image 。由于 Power BI 原生的视觉对象对图片的大小做了限制,所以只能看缩略图。

当然在一些辅助的迷你图和一些辅助标识上还是足够使用了。

六、总结

1、虽然本文讲的是 SVG 复刻,但并没有具体去讲 SVG 的内容;建议自行补习一下:https://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html

2、在 Power BI 原生的对象中,对 SVG 的一些元素还是有限制的,比如不能使用 use ,还有一些什么坑留给大家自己去试试了。

3、目前笔者在 Power BI 使用较复杂的 SVG 建议使用 HTML Content ,其他视觉对象总有一些 SVG 的元素不支持,如果有更好的建议欢迎留言。

4、在前面也说过,目前 Power BI 原生视觉对象是无法实现大图的,还是建议使用 HTML Content ,这里需要给大家提醒的是,一般企业户禁用三方视觉,建议联系自己的管理员把 HTML Content 视觉对象加入到自己的组织视觉对象中。

5、DAX + SVG 生成的报表交互相对就差了一些,有失必有得,这样的损失是值得的,当然如果在 html 中加入一些 JS 也是可以实现的,但是这个时间成本就太高了,有这方面的研究的朋友欢迎一起交流。

6、通过上述的 DAX + SVG + HTML Content 视觉对象打通了制作平面的商业图表的几乎所有可能。

附件下载

https://jiaopengzi.com/2796.html

by 焦棚子

158_模型_Power BI 使用 DAX + SVG 打通制作商业图表几乎所有可能的更多相关文章

  1. 159_模型_Power BI 地理分析之形状地图

    159_模型_Power BI 地理分析之形状地图 声明以下地图元素仅供学习交流所用,如需地图公开使用请提前做好报审工作. 一.背景 当企业的体量达到一定体量的时候,保持稳定的增长是非常重要的事情.本 ...

  2. 155_模型_Power BI & Power Pivot 进销存之安全库存

    155_模型_Power BI & Power Pivot 进销存之安全库存 一.背景 谈进销存的概念时,我们也需要提及另外一个概念:安全库存. 库存周转在理想的状态下是做到零库存,但是在内部 ...

  3. 161_可视化_Power BI 复刻 GitHub 贡献热力图

    161_可视化_Power BI 复刻 GitHub 贡献热力图 一.背景 在 GitHub 上,有用户的贡献度的热力图如下: Power BI 公共 web 效果:https://demo.jiao ...

  4. 163_技巧_Power BI 一键批量建立自定义字段参数

    163_技巧_Power BI 一键批量建立自定义字段参数 一.背景 在 2022 年 5 月开始,Power BI 新增了一个非常有用的功能字段参数.再也不用写一串的 SWITCH 了.字段参数的效 ...

  5. .NET平台开源项目速览(19)Power BI神器DAX Studio

    PowerBI更新频繁,已经有点更不上的节奏,一直在关注和学习中,基本的一些操作大概是没问题,更重要的是注重Power Query,M函数,以及DAX的使用,这才是核心.   上个月研究了DAX的一些 ...

  6. 160_技巧_Power BI 新函数-计算工作日天数

    160_技巧_Power BI 新函数-计算工作日天数 一.背景 Power BI 2022 年 7 月 14 日更新了最新版本的,版本号为:2.107.683.0 . 更多更新内容可以查看官方博客: ...

  7. react使用引入svg的icon;svg图形制作

    由于手头的icon有限,需要使用更多的图标,就得找外援: 1.react安装icon插件,使用插件里已经有的图标 https://react-icons.netlify.com/#/ React Ic ...

  8. svg可视化制作工具

    svg可视化制作工具直接ai里面用钢笔路径画好 然后右键建立复合路径 最后存储为svg即可 这样生成的svg就带path标签了

  9. Power BI中DAX的动态计算方差

    我花了一点时间试图解决一个棘手的DAX表达式,那就是如何动态计算方差,下面我们认识一下这两个函数: PARALLELPERIOD  和 SAMEPERIODLASTYEAR  它能实现我们想要的结果, ...

随机推荐

  1. 探索Django验证码功能的实现 - DjangoStarter项目模板里的封装

    前言 依然是最近在做的这个项目,用Django做后端,App上提交信息的时候需要一个验证码来防止用户乱提交,正好我的「DjangoStarter」项目脚手架也有封装了验证码功能,不过我发现好像里面只是 ...

  2. Centos7 搭建 Socks 服务

    Centos7 搭建 Socks 服务 一丶拿到一个动态拨号的服务器还不能使用网络得先打开: pppoe-start 二丶安装命令汇总: 通过yum安装ss5 依赖包: yum install gcc ...

  3. Ajax错误处理

    控制台报的错误是: Access to XMLHttpRequest at 'http://localhost:3000/error' from origin 'null' has been bloc ...

  4. android软件简约记账app开发day06-将记账条目添加到数据库并且绘制备注页面

    android软件简约记账app开发day06-将记账条目添加到数据库并且绘制备注页面 首先写添加到数据库 在DBOpenHelper中添加创建记账表的语句 //创建记账表 sql = "c ...

  5. 在 WinForms 项目中使用全局快捷键

    借助于全局快捷键,用户可以在任何地方操控程序,触发对应的功能.但 WinForms 框架并没有提供全局快捷键的功能.想要实现全局快捷键需要跟 Windows API 打交道.本文就交你如何使用 Win ...

  6. Python 函数进阶-迭代器

    迭代器 什么是迭代器 能被 next 指针调用,并不断返回下一个值的对象,叫做迭代器.表示为Iterator,迭代器是一个对象类型数据. 概念 迭代器指的是迭代取值的工具,迭代是一个重复的过程,每次重 ...

  7. 面试突击42:synchronized和ReentrantLock有什么区别?

    在 Java 中,常用的锁有两种:synchronized(内置锁)和 ReentrantLock(可重入锁),二者的功效都是相同得,但又有很多不同点,所以我们今天就来聊聊. 区别1:用法不同 syn ...

  8. IOC容器--1.12. 基于 Java 的容器配置

    用Java的方式配置Spring ,不使用Spring的XML配置,全权交给Java来做 JavaConfig是Spring的一个子项目,在Sring 4  之后成为核心功能 这种纯Java的配置方式 ...

  9. 函数式接口和@FunctionalInterface

    函数式接口的特点 接口有且仅有一个抽象方法 允许定义静态方法和默认方法(这两个都不是抽象方法) 允许java.lang.Object中的public方法(因为任何一个函数式接口的实现,默认都继承了Ob ...

  10. Doker从0-1

    1.docker思想: 它是一种集装箱的思想,,在以前我们部署一个项目上线的时候,我们要部署各种各样的环境.配置.依赖等,各种各样的环境的配置是十分麻烦的,所以就有了docker.他就是将我们的项目和 ...