半導體企業內的數位轉型課程筆記-2-Power BI
製程整合單位的數位轉型課程架構與概念-PowerBI

前言:Power BI 應用程式的邏輯與架構
- 目的: 製作報表,傳遞資訊
- 流程: 資料處理 → 讀取資料 → 建立圖表 → 完成報表
- 困難度: 資料處理 > 讀取資料 > 建立圖表 > 完成報表
觀察Power BI的構造,套用到Microsoft的UI邏輯的話,可以發現Power BI的架構是由三個大項組成
- Report → 對應到前端
- Table → 對應到後端
- Model → 對應到資料庫

而頂端操作面板是互動式操作面板,會隨點選的架構項不同,產生不同的選項。
據我的經驗,一般在使用Power BI 時,頂端操作面板最常點選的項目是:
- Format
- Transform data
- Get data
很多Power BI的教學是由簡單的匯入Excel或CSV檔開始,
但如同前述困難度的評比,製作報表最困難之處是在資料處理與讀取資料, 因此學會了簡單的報表呈現,也就是Report架構後,必須對Table 以及Model的處理有進一步的了解,才能夠做到更深入的資料處理。
所以這篇文章主要著重在:
- Transform data中Power Query的操作紀錄
- 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 Query和DAX語法是初學者很容易搞混的地方,以下表格總結差異:
| Feature | Power Query (M Language) | DAX (Data Analysis Expressions) |
|---|---|---|
| Purpose | 用於資料準備與轉換,專門為資料提取、轉換與載入 (ETL) 設計 | 用於數據分析與計算,適用於 Power BI、Excel 和 SSAS 中的自訂計算 |
| Execution Time | 在資料載入階段進行轉換,當資料更新(refresh)時執行 | 在使用者與報表互動時即時執行 |
| File Size Impact | Power Query 轉換可能會增加 .PBIX 檔案的大小 | 不影響檔案大小 |
| Efficiency | 適合複雜的資料準備,但可能影響檔案大小 | 對於資料分析與計算有更高效率 |
| Execution | Power 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。我覺得是不錯的新功能。
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)