PowerBI 企业级建模设计流程框架

  • 2019 年 10 月 6 日
  • 筆記

如果用一套固定的套路来使用Power BI,这个套路应该是什么。

这个问题在我一开始接触PowerBI的时候就在思考,进过大量实践,略有所得,分享记录如下。表面上都是PBIX文件,但生产它们的过程却完全不同,有的完全是乱做瞎做的,而有的则是通过标准化的方式逐步推进完成的。

问题

在这个小目标里,最难的个人认为是【1套章法】,并且该章法没有形成。Power Query也好,DAX也好,各种参考书也好,都不是章法,至少不是我要的章法。所谓章法,就像棋谱和套路,它基本是固定的思维模式,而且按照这个固定的思维模式应该可以解出理论可解的任何题目

这里的 理论可解 是很重要的,就是我们必须事先知道一件事能不能做成,如果能做成,那么确定性的路线是什么;如果不能做成,根本原因是什么。在PowerBI中,也不例外,PowerBI对有些事就是无法做成,而对其可以做成的事,是否存在章法,这是我们进行探索的最大乐趣。

能力

玩转 PowerBI 根本不是一个简单的问题,它涉及多个方面和多种能力,简单体会如下:

必须具备三方面的专家级能力:

  • 必须是业务专家:精通所在的领域或行业,并用业务驱动,可以与用户进行全域(从业务到逻辑到数据的全部内容)式的沟通。
  • 必须是建模专家:精通 M,精通 DAX,精通 PBI。PBI被独立于 M 和 DAX,更强调PBI在于可视化级协作层面。
  • 必须是数据专家:精通数据仓库,精通数据库,精通SQL语言。

通常,这些应该是一个团队,当然如果不是一个团队,就需要个人肩负起所有职责。所以,仅仅学习其中任何一点都无法整体驾驭 敏捷商务智能 体系。当然,如果极度严格要求自己,可以全部学习之。

流程

在这个工作流程中,将PowerBI设计从数据源经过:

  1. 数据准备:将数据从数据源提出到加载进入建模之前的阶段。
  2. 数据建模:增强数据模型的原本不包括的信息和计算方法。
  3. 数据分析:通过钻取筛选等方式,从数据模型获取某种洞察。
  4. 数据可视化:选择合适的视觉元素来表示各种分析后的数据结果。
  5. 决策使用:通过各种方式使用BI来改善决策。

为了支持更好的完成这个流程,下面总结一个敏捷商务商务智能框架,来框住这些行为以使得行为更加有效。

套路

该套路受到 敏捷软件开发流程框架 的启发并结合PowerBI的特点构建。

套路中的角色

套路中的角色包括了上述能力描述中的三种角色外,再包括最终用户在内。

套路中的中间交付成果

交付成果,是引导一个复杂知识过程走向确定性结果的重要手段。这里包括:

  • 业务主题:需要研究的业务。如:企业的销售状况如何。这些主题通常由最终用户以及业务专家共同定义。
  • 业务指标:为了定量的描述业务主题的好坏以及大小的程度,而必须明确的可被度量的业务逻辑。如:销售额,利润率,同比增长率。
  • 分析流程图:指导最终用户通过怎样的顺序来研究业务指标的流程图。

以上三大交付成果在 动态业务分析建模 过程中完成。

  • DW(DB)结构图:数据源或数据仓库的物理表结构及关系。
  • 语义模型:完全与业务指标体系对应的数据模型。
  • 表格模型:完全与分析流程图对应的数据模型。

以上三大交付成果在 静态语义数据建模 过程中完成。

另外,套路还包括三大交付成果:

  • 用户仪表板草图:通过与用户交流,知道用户最后大致想要什么。
  • 测试计划:判断各度量值最终计算是否正确的测试方法。
  • PBIX文件:表格模型最终在Power BI Desktop中设计完成,体现为PBIX文件。

套路中的流程

套路中包括两个非常重要的流程:

  • 动态业务分析建模:形成业务模型
  • 静态语义数据建模:形成数据模型

动态业务分析建模 的目的在于形成最终引导用户如何进行分析是更合理的。 静态语义数据建模 的目的在于形成最终的PBIX文件。

很多问题的产生都是因为 动态业务分析建模 不够充分引起的,在 动态业务分析建模 的每个小的阶段,都可以将其交付成果进一步转化为 静态语义数据建模 中的交付成果:

  • 通过现有数据源与业务指标,形成语义模型。(最重要一步)
  • 通过分析流程与语义模型,形成表格模型。(最终一步)

这两步的区别在于:后者可能包括很多的无实际业务语义的辅助表,但仍然属于表格模型的一部分。

通过数据源与业务指标形成语义模型可以采用 DAX 无侵入式设计(此前文章以及会员订阅已有不完全讨论,后续将系统化进一步展开),来实现如何利用数据源实现表示业务指标逻辑的 度量值。 而通过分析流程与语义模型,形成表格模型。则可以进一步使用 DAX 无侵入式设计分析的动态可变性 通过 辅助表 结合实现。

PowerBI DAX 设计模式

SQLBI 的大师曾给出过多个 DAX 设计模式。但个人感觉还未抽象到更基础的级别,这里给出三种更抽象级别的设计模式,或者说设计模式的模式,它们是:

  • 时间型:随着时间连续变化的分析模式。
  • 类别型:随着元素离散变化的分析模式。
  • 可变型:动态确定维度、度量值、各种参数后的分析模式。

可以表示为:

下面尝试将你可能以及知道的各种具体实现划入上述三种模式:

  • 时间型:最近一期(年季月周),年度(年季月周)至今,(年季月周)同比,(年季月周)环比,(年季月周)移动平均等。
  • 类别型:分组,ABC,TOPN等。
  • 可变型:动态维度,动态度量值,参数表等。

对于上述三种分析类型,DAX基本有极为相似的实现(超过了本文探讨范围)。在SQLBI的诸多模式中,也有大部分可以划归到上述分类中。

总结

本文泛泛地整理并总结了:使用 PowerBI 实现个人到企业敏捷商务智能 的可复用套路。其中包括这些要素:

  • 个人(团队)的角色与能力
  • 套路以及其中的各项构件定义及逻辑关系
  • 套路中业务建模与表格建模的转换方法
  • DAX 无侵入式设计
  • DAX 设计模式