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 設計模式