半導體企業內的數位轉型課程筆記-2-Power BI

製程整合單位的數位轉型課程架構與概念-PowerBI

power-bi

前言:Power BI 應用程式的邏輯與架構

  • 目的: 製作報表,傳遞資訊
  • 流程: 資料處理 → 讀取資料 → 建立圖表 → 完成報表
  • 困難度: 資料處理 > 讀取資料 > 建立圖表 > 完成報表

觀察Power BI的構造,套用到Microsoft的UI邏輯的話,可以發現Power BI的架構是由三個大項組成

  • Report → 對應到前端
  • Table → 對應到後端
  • Model → 對應到資料庫

power-bi-structure

而頂端操作面板是互動式操作面板,會隨點選的架構項不同,產生不同的選項。
據我的經驗,一般在使用Power BI 時,頂端操作面板最常點選的項目是:

  • Format
    • Transform data
    • Get data

很多Power BI的教學是由簡單的匯入Excel或CSV檔開始,
但如同前述困難度的評比,製作報表最困難之處是在資料處理與讀取資料, 因此學會了簡單的報表呈現,也就是Report架構後,必須對Table 以及Model的處理有進一步的了解,才能夠做到更深入的資料處理。
所以這篇文章主要著重在:

  1. Transform data中Power Query的操作紀錄
  2. Table 與 Model的操作紀錄

Transform data: Power Query (M Language) 和DAX語法

點選Transform data後會進到Power Query介面,Power Query和Power BI不是同一個產品或服務,
雖然可以從Power BI連到Power Query,但不要把他們兩個混在一起,這兩者有很多相異的地方,
例如Power Query M 和Power BI中的 DAX,是有許多不同的。

Power Query 是資料轉換及資料準備引擎。 Power Query 隨附用於從來源取得數據的圖形化介面,以及套用轉換的 Power Query 編輯器

ref: 什麼是 Power Query? - Power Query | Microsoft Learn

Power Query會附在各種應用程式上,比如Excel 和Power BI中,讓您可以更順利的進行資料轉換及資料準備。
而DAX (Data Analysis Expressions) 比較像我們在Excel中寫的formula一樣,對表資料進行簡易的轉換與處理。

ref: Power Query vs DAX

DAX的使用小撇步: 在power bi工作列中,有快速計算 (Quickmeasures) 的按鈕可以使用, 他可以讓您快速產生各種計算,如果苦於不知如何產生計算的話,不妨瀏覽一下裡面的功能,可能就能夠解決問題哦。

power-bi-transform

總結來說,Power Query和DAX語法是初學者很容易搞混的地方,以下表格總結差異:

FeaturePower Query (M Language)DAX (Data Analysis Expressions)
Purpose用於資料準備與轉換,專門為資料提取、轉換與載入 (ETL) 設計用於數據分析與計算,適用於 Power BI、Excel 和 SSAS 中的自訂計算
Execution Time在資料載入階段進行轉換,當資料更新(refresh)時執行在使用者與報表互動時即時執行
File Size ImpactPower Query 轉換可能會增加 .PBIX 檔案的大小不影響檔案大小
Efficiency適合複雜的資料準備,但可能影響檔案大小對於資料分析與計算有更高效率
ExecutionPower Query 的資料轉換是靜態的,只有在資料更新時會應用DAX 計算為動態,即時執行
Functionality Overlap部分功能重疊,但 Power Query 更適合資料轉換,而 DAX 更適合資料分析與計算
Example Use Cases用於清理和轉換原始資料,然後載入至 Power BI用於建立計算欄位、度量值,以及對資料模型進行複雜計算

ref: When to Use DAX vs Power Query in Power BI

Table

Table是Power BI中類似Excel的介面,但是Power BI是以column為單位進行資料分析,而Excel以row為單位。 使用DAX操作Table,可以進行複雜計算,進而產生新的一個欄位,也可以進行動態計算,在Report頁面產生篩選後的動態結果。

因為我拿到的資料通常都是標準化過的資料,或者是我會在資料匯入Power bi前,使用前處理技巧,把資料標準化後再匯入Power BI。
以我個人經驗來說,相較於Power Query 我比較喜歡使用DAX進行操作, 因為可以保持來源資料最大限度的乾淨,只在Power BI介面裡面進行資料處理。 但此習慣見仁見智,也有效能權衡的議題需要考量,還是依個人習慣為主。

DAX與Table & Report

新版的Power BI中已經有 "DAX Query View” 可以快速的編輯和檢閱DAX,有點像Power BI 內建DAX IDE。我覺得是不錯的新功能。

ref: 微軟官網的DAX Query View 說明

DAX 在Table中可以進行不同表格的關聯,包含事實表與維度表,例如,使用 RELATED 或是 RELATEDTABLE ,建立calculated column,針對已載入的表格中的每一列(row) 進行單獨計算,使事實表與維度表的資料更乾淨與抽象,避免冗餘或重複的資料載入。

另一方面,DAX在Report中可以進行measures的運算,measures是基於slicer的運作去計算結果,
使用情境例如希望可以根據使用者的篩選,動態的計算不特定時間區間的平均或百分比等,就可以使用measures。

Measures功能僅使用CPU資源做計算,而 Calculated Column則同時使用磁碟和記憶體空間,
因此,當數據集很大的時候,減少使用Calculated Column,可以節省更多空間和記憶體。

ref: Measures vs Calculated Columns in DAX and Power BI (endjin.com)

Model

Model是在Power BI中管理資料表與資料表間關聯性的介面。藉由建立表與表的關聯性,我們可以:

  • 使用related串聯不同表中的資料
  • 跨表建立計算結果欄的新欄位
  • 當我們在同一個報表中使用不同的資料表時,可以使用相同的slicer進行篩選分析

因此,Model是深入Power BI 資料處理必須熟悉的概念。

Model的表可以粗分為兩種表:

  • fact table 事實表: 不斷記錄與更新的數值,通常具有大量的可聚合(aggregation)的資料列,是屬於最基礎的資料類型,具有比較多的資料列
  • dimension table 維度表: 經過整理、計算與聚合產生的表,包含了很多的文字,具有比較多的欄位

維度表對事實表的關係常是一對多的。

延伸閱讀:  Power BI – Multiple Fact Tables - Microsoft Fabric Community

如何維持好的Data Modeling?

通常一個好的(具有容易維護等優點)結構會是一個星形結構,是將事實表放置於中央,從中發散維度表的資料結構。

這麼做是為了讓資料更加的"正規化”。正規化的意思是以減少重複資料的方式來儲存資料,例如,如果我們有一個巢狀資料,要把它轉換成一對一的資料,那麼就會產生很多重複資料。

因此,資料的儲存會將具有唯一索引的表格互相進行連接,以減少資料的重複儲存。 這樣的概念其實就連結到我們在Excel篇講的資料表結構,所以其實從Excel開始的資料儲存觀念是一直重複出現的。

ref: 了解星型結構描述及其對 Power BI 的重要性 - Power BI | Microsoft Learn

ref: Power BI Fact and Dimension Tables | SQL Spreads

ref: Data Modeling for Power BI [Full Course] 📊 (youtube.com)

ref: Basics of Modeling in Power BI: What is a Dimension Table and Why Say No to a Single Big Table - RADACAD