PowerBI 虽然从某种意义上说只是一个制作报表的工具,但在制作报表的过程中,从简单的报表,到极为复杂的报表都有可能。
企业级报表是要完全满足用户需求的,这和简单的可视化完全不同,在有些情况,甚至大部分情况,一切科学的可视化理论是失效的,客户就是上帝。
如果客户只能理解线图,你凭什么告诉客户自定义图表更好。这才是真实的企业环境。
这里简单探讨一下企业级报表项目解决方案的架构设计。
很可惜,目前 PowerBI 对支持复杂企业结构报表并不理想,针对如下问题:
PowerBI 目前很难应付,但就导航系统,就会因为无法复用而存在大量手工劳动,经过实践总结,要完成上述任务并设计出多级导航系统的一个可行方案如下:
这里面蕴含大量细节上的学问,这是目前几乎已知相对工作量最小的做法。
这里可以延展一些问题让大家思考,为了设计高度精细的布局,你知道这些问题的答案吗:
如果您思考过以上问题,欢迎留言,以上问题均有标准答案。关于导航系统的制作,PBI在2018年更新过多次特性全部综合起来,终于可以制作成一个合理的导航系统,但由于无法重用,导致制作效率是低下的,关于这个话题,可以详尽地说明很多,将开专门主题再做探讨。
大家可以参考此图,自行实践。
由于 PowerQuery 提供了分组功能,在数据准备上相对可以划分成更合理的结构。至于为何有这些分组及用意,相信很多伙伴也有自己的划分方式。
在 PowerBI 中,可以使用Ctrl+C, Ctrl+V的方式将PQ逻辑复制粘贴进新的PBI文件,这个功能使得数据准备的逻辑可以复用,是非常重要的。
由于我们的重点是分析业务,所以业务模型数据是重点,为了构建业务模型,采用经典的ETL划分方式:
几乎没有PowerBI的报表是仅仅依赖业务数据构建的,为了构建报表,还需要一些辅助的数据,称为:报表模型数据,如:年龄分组,参数表等。
业务指标的宿主表定义。在PBI中可以通过计算表或输入表两种方法实现,推荐使用输入表法。
MVC,一词来自软件工程中前端设计模式。该方法论也适用于PowerBI报表设计:
Excel120 首次提出将软件工程设计模式的经典MVC模式引进PowerBI系统设计,这是一套成熟的方法论,用于解除图表,数据,业务逻辑之间的耦合,进而设计出可以高度复用,灵活扩展的结构。
此话题也将开设专题进行深入探讨。
PowerBI 中全动态权限控制可通过RLS或更加灵活的机制实现,已经单开话题讨论。参考:PowerBI 企业级权限控制全动态终极解决方案。
模型维护,是PowerBI报表设计的重点。
模型维护中,常见的问题包括:
于是,能做的事只有一件,就是:只增加不敢删除。
这将有可能导致一个项目变得非常非常复杂。很可惜,目前 PowerBI 都没有给出官方的维护方法,这点使得 PowerBI 制作大型复杂报表非常力不从心。
这里推荐一个网站:app.datavizioner.com 目前该第三方网站可以大致帮助我们解决一部分问题。
可以通过上传PowreBI导出的模板文件 .PBIT(必须小于2M),在该网站得到对PowerBI文件结构的解析。
可以看出对于本报告:
这个报表所使用元素的规模(35页,942个可视化对象)很难纯人工维护。 在目前 PowerBI 没用给出官方高效维护方法的现状下,必须靠非常有效的人工管理,这就需要我们预先思考清楚如何管理以下元素:
可以考虑以下原则以简化设计:
大家可以进一步研究补充必要的管理规则。
该工具还提供了导出全部 M 脚本
当然,PowerBI 本身也提供了 M 导出的功能。这倒不是大问题。
该工具提供了对模型分析的方法:
于是可以大致知道模型的规模以及可以增删的冗余成分:
可以看出,在上图呈现的结构中,蓝色表示使用的表;橙色表示未在可视化中直接使用的表,则可知:
因此,我们需要实际维护的是一个复杂的 星系模型。
维护中可以做的事情包括:
大家可以尝试使用该工具来维护分析自己的模型。
本文将大型复杂PowerBI报表设计结构做了概要式的分析,分为三大方面:
很显然,纯ETL理论,星型模式,可视化方法都并不真正适合PowerBI,您在大量工作中是否也感觉到了这个问题。在这方面,PowerBI是否给了我们一次可以基于PowerBI去重新思考如何设计结构的机会。PowerBI目前并没有给出官方的最佳实践,而且也不直接支持这些复杂问题的处理,耐心等待更新吧。另外,未来我们将更详尽的探讨在PBI现状下,上述所有内容的细化方法。