Power BI入門介紹,第一次學必看!
近幾年隨著大數據分析、數據雲端化及視覺化管理的興起,一個兼具上述功能的軟體於2015年誕生了,那就是Power BI。
Power BI軟體的架構為資料模型,軟體使用流程為:先藉由Power Query連結大數據(資料來源)後以資料表的型態載回Power BI,接著設定資料模型中資料表間的關聯性及撰寫DAX(量值),最後再進行報表(儀表板)設計;完成報表後,還可以將報表(含資料模型)發行至雲端伺服器,供手機平板查看,或讓其他Power BI及Excel檔案與此雲端伺服器連結使用。
本篇文章將先介紹Power BI軟體的使用目的及其起源,再以實際範例,一步步教大家如何建立出自己的第一個Power BI報表(資料模型)。
Power BI軟體簡介 Power BI報表設定操作步驟說明(範例) 1.連結資料來源 2.資料模型設計及撰寫DAX 3.報表(儀表板)設計 4.發行到雲端伺服器 總結與補充Power BI軟體簡介
Power BI是什麼呢?相信剛接觸的人第一印象應該都會覺得Power BI是儀表板軟體,如下圖Google搜尋到的圖片一般。

說Power BI是儀表板軟體也沒有錯,但講得更專業點,應稱為商業智慧軟體(BI為Business Intelligence的縮寫),Power BI是以資料模型(Data Model)為架構設計而成;那商業智慧是什麼呢?商業智慧的概念可解釋為:
設計一個資料模型,讓組織管理者能從此資料模型中快速地取得商業過程中所遭遇問題的解答,也就是利用資料模型進行Q&A資料分析。
以下舉幾個Q&A問題的例子給大家:
「2022年度哪一個商品的銷售量最佳?買量最大的客戶是哪一家?」
「請表列2022年各月份各商品的營業收入、營業成本、毛利率與淨利率,並與2021年做比較。」
「請找出2022年度哪些商品的毛利率<10%,並對其做進一步的成本分析。」
至於回答問題的方式,在近幾年來視覺化報表的興起之下,像Power BI這種視覺化及可互動式的報表,其實就是最好的回答方式。

剛剛有提到Power BI的架構為資料模型,那資料模型又是什麼呢?資料模型的概念係存在於後端資料庫管理系統中,針對資料庫管理系統小編已於上篇文章「從資料庫的起源談談Excel資料表的功能與應用」中進行詳細的說明,以下僅針對主流資料庫系統「關聯式資料庫(Relational Database)」的概念為例,進行簡單介紹:
關聯式資料庫中,係以資料表(Table)的形態儲存資料,資料表的特性包含:每一個資料表都具備1欄獨一無二、不會重複的ID,以做為識別每一資料列(Row)所用,此ID即稱為主鍵(Primary key),而主鍵外的其他欄位資訊則是為了來完整地描述此資料列。
一個資料表也可能包含另一個資料表的主鍵,其目的是為了利用此欄位與另一個資料表建立關聯性,取得相關資料,此種具備了其他資料表主鍵的欄位稱為外鍵(Foreign key)。

Power BI軟體於2015年誕生,被比喻為踩在巨人肩膀上的產物,Microsoft公司吸取了Excel、SQL Server等軟體開發3、40年來的經驗,並結合了數據雲端化、手機平板版面等功能,開發設計出Power BI軟體。
對於Excel長期使用者可能會問:Excel也有Power Pivot資料模型的功能,那Power BI與Excel最大的差異是什麼呢?
簡單說,Power BI較Excel具備更完整的資料模型架構、具備更豐富的視覺化物件、具備更多可連結的資料來源、可嵌入在更多應用程式裡,及更廣泛應用於雲端。
及Power BI不具備像Excel有工作表(Sheet)的介面,可輸入數據到檔案中使用,Power BI所需的數據皆需以Power Query編輯器與資料來源進行連結、數據準備ETL後,再以資料表(Table)的型態載入至Power BI資料模型裡進行使用,Power BI軟體很清楚地定位在商業智慧(資料模型)的工具。
接下來,簡單介紹一下Power BI軟體下載安裝的方法,共有兩個方法:
1.於Microsoft Store中下載Power BI Desktop:此為較建議的下載方式,因為從Store下載的軟體有自動更新的功能,Power BI目前每個月會更新一次(更新項目也多)。


因有些公司的辦公電腦可能無法使用Microsoft Store,故可從官網上進行下載安裝,缺點為需要每月重新下載檔案安裝,以進行更新。

另外,針對Power BI使用上是否需付費的問題做一個簡單的說明:
Power BI Desktop下載安裝後即可免費使用,但不能發行報表至雲端,若要發行至雲端,則需以學校、組織Email帳號進行註冊Power BI帳號,但免費版大多數雲端功能皆無法使用,僅能查看報表;付費版分為Pro和Premium兩種,Premium又可再細分,將另寫文章介紹。

各位都下載安裝好Power BI Desktop了嗎?
接下來,小編將帶著大家一起練習Power BI報表設定的基礎範例,小編有準備一個資料來源Excel檔案(如下連結),供大家下載練習。
Contoso資料庫檔案Power BI報表設定操作步驟說明(範例)
各位打開Power BI Desktop後,會先出現以下視窗,供使用者快速開啟檔案(視窗左側)及提供更新訊息、網誌、社團及教學等的網址連結(視窗右側),各位可以直接點選中間的Get Started或視窗右上角的關閉鈕(X),進入到Power BI主畫面。

Power BI共有3個檢視畫面:(1)報表檢視、(2)資料檢視、及(3)模型檢視,打開軟體後的主畫面位於報表檢視。(如下圖)

在開始之前,先讓我們進入Tab File裡面,調整Power BI處理日期(時間)的預設值,Options and settings -> Options。

於GLOBAL -> Data Load -> Time intelligence中,將自動日期時間(Auto date/time for new files)的檢核方塊取消點選,然後點選OK離開視窗。

上述調整的目的係因為Power BI此預設值會影響到報表的性能,應養成習慣自己製作日期表,此部分將另寫文章介紹。
接下來,我們就開始進行Power BI軟體操作的第一步驟:連結資料來源。
1.連結資料來源
於Tab Home中,各位可以看到功能列左半部列出了各種不同的資料來源選項,因本範例資料來源為Excel檔案,故點選Excel Workbook選項,接著會出現開啟檔案視窗,請點選小編提供下載的檔案後,再點選Open開啟檔案。

接著會跳出Power Query編輯器的瀏覽視窗(Navigator),因本範例需要4個資料表:客戶表(Tb_Customer)、日期表(Tb_Date)、產品表(Tb_Product)及銷售表(Tb_Sales),故進行多重選取後,再點選Load載回至Power BI。
PS 因小編提供的檔案已具備資料表結構,故可直接載入至Power BI使用,若遇到有資料來源結構不佳或有其他數據轉換需求,則可點選Transform Data,進入Power Query編輯器內做進一步的數據準備、清理ETL。

點選Load後,會跳出載入視窗。(如下圖)

等它跑完後,各位可以看到畫面右側欄位(Fields)中已出現了4個資料表(如下圖),到此即完成了第一步驟。

2.資料模型設計及撰寫DAX
接著請各位點選進入Power BI的第二個檢視畫面:資料檢視(Data)。
此畫面可讓使用者查看此資料模型中,各個資料表的數據(與Excel Power Pivot的畫面類似),及可以在這裡進行資料表欄位的資料類型、格式等設定調整。

但上述的資料檢視(Data)畫面並無法讓使用者清楚地看出此資料模型的關聯性,故接著讓我們進入Power BI的第三個檢視畫面:模型檢視(Model)。(如下圖)

進入模型檢視畫面後,各位可以看到客戶表(Tb_Customer)、產品表(Tb_Product)及銷售表(Tb_Sales)之間有兩條線將3個資料表連結在一起,這就是資料模型中所謂的關聯性,關聯性建立的概念簡單說明如下:
關聯性的建立係將維度表(Dimension Table)的主鍵(Primary Key)與事實表(Fact Table)的外鍵(Foreign Key)進行連結,可直接以滑鼠拖拉的方式建立關聯性;關聯線的兩邊有”1″和”*”的符號,一般來說”1″側為維度表,主鍵不會重複,”*”側為事實表,外鍵有重複,此關係稱為1對多的關係(此為維度設計領域,將另寫文章介紹)。
PS Power BI的資料表之間有四種關聯性(1對1、1對多、多對1及多對多),而Excel Power Pivot資料模型中只有兩種關聯性(1對多、多對1)。
另外補充,Power BI有自動建立關聯性的功能(Excel沒有),那各位可能會問:那日期表(Tb_Date)為什麼沒有跟銷售表(Tb_Sales)自動建立關聯性?
其實是因於銷售表中具有交貨日期及訂購日期兩個外鍵欄位,故Power BI無法判斷日期表中的主鍵(Date)應該與銷售表的哪個外鍵欄位建立關聯性,故沒有自動建立,可再以手動拖拉的方式進行建立。(如下影片)
<meta itemprop="url" content="https://fanlovexcel.com/wp-content/uploads/2023/01/20230103_V1.mp4">完成了資料模型關聯性設定後,在進行下一步驟「報表設計」之前,先讓我們來想一想,針對這個資料模型要做什麼樣的資料分析;那資料分析是麼呢?此部分於先前文章「Excel樞紐分析表概念介紹」中有做詳細說明,在此簡單重述:
假設一個場景,某一天辦公室主管把下屬叫進去他的辦公室…
主管說:「阿勇,請幫忙分析一下這個資料。」
下屬回話:「請問是分析哪一個資料表呢?」
主管說:「是銷售資料表。」
下屬回話:「那請問要分析什麼數據呢?」
主管說:「請分析2020年的各產品的總銷售額。」
下屬回話:「收到,馬上進行分析。」
利用上述對話,可讓我們了解進行資料分析時,大概需要資料表、資料分析的環境(視角),及摘要值的數據與方式等資訊,小編簡稱為資料分析三要素,上述對話中的資料分析三要素內容為:
資料表:銷售資料表
分析的環境(視角):時間(2020年)及產品種類
摘要值的數據及方式:銷售額加總(SUM)
因在做資料分析前若搞不清楚這幾個要素,恐會造成資料分析的錯誤。
下圖為本篇文章範例最後會完成的報表,請各位先想一想針對此報表,資料分析三要素內容是什麼呢?

此報表資料分析三大要素內容為:
資料表:銷售表
分析的環境(視角):日期(年、月)、產品種類(Category)及省份(State)
摘要值的數據及方式:本範例以量值(Measure)來呈現,包含:(1)銷售額加總、及(2)上月銷售額加總。
於上方資料分析三要素中的摘要值裡有提到量值,那量值是什麼呢?針對量值的詳細的介紹請各位參考DAX入門介紹文章,以下僅簡單說明:
量值(Measure)的概念為於資料模型中進行資料分析時所使用的邏輯(公式),此邏輯中已包含了上述提及的資料分析三要素(資料表、分析環境、摘要值)。
PS 量值係以DAX資料分析語言進行撰寫。
接下來,將開始進行撰寫量值(Measure)的步驟說明。
於Power BI新增量值的方式為:在任一個Power BI檢視畫面中,於畫面最右側的欄位(Fields)裡,於欲加入量值的資料表上(本範例為銷售表)點選更多選項(More options)圖示。(如下圖)

再點選新增量值(New measure)。

接著會自動跳出公式欄,在此進行填寫量值公式。(如下圖)

讓我們輸入第一個量值:銷售額加總
Sales Amount = SUMX( ‘Tb_Sales’, ‘Tb_Sales'[Quantity] * ‘Tb_Sales'[Net Price] ),語意為將銷售表中每列銷售商品的銷售量乘以單價後,再進行加總。

接著讓我們輸入第二個量值:上月銷售額加總
Sales Amount PM = CALCULATE( Tb_Sales[Sales Amount], DATEADD(‘Tb_Date'[Date],-1,MONTH)),語意為將剛剛撰寫的量值(Sales Amount)改變其資料分析的環境至”上月”。其利用了CALCULATE及DATEADD函數的功能。(將另寫文章介紹)

完成後,各位可以看到新增的量值已於欄位(Fields)中出現,量值左側有個計算機的圖示。(如下圖)

撰寫好量值後,就可以接著進行第三步驟:報表(儀表板)設計。
3.報表(儀表板)設計
報表(儀表板)要做的好看,有一些美學的基本要求需注意,如背景主題與圖表顏色的選用、物件要對齊等等。(此部分將另寫文章介紹)
於本範例報表中,共包含了4個視覺化物件:(1)篩選器(年份)
(2)篩選器(月份)
(3)矩陣(產品類別、2個量值)
(4)橫條圖(客戶所在省份、1個量值)。
以下將先說明如何製作篩選器(Slicer)。
進入報表檢視畫面後,於右側視覺效果(Visualizations)中,點選篩選器(Slicer)。(如下圖)
接著將日期表(Tb_Date)中的Year欄位方塊打勾,或直接以滑鼠拖拉的方式,拉至Visualizations -> Build visual 中的Field欄位(如下圖),完成後重複以上步驟再製作一個篩選器,將Month Number加入(如下圖)。

但於上圖中,並非常用的日期篩選器樣式,故需進行樣式調整,調整步驟為:進入 Visualizations -> Format visual -> Visual -> Slicer settings,於Options中,將篩選器樣式(Style)改為磚(Tile)。

調整篩選器樣式為磚後,可以發現篩選器變為3列4欄,因我們只想要有1列,故需再進行一個調整步驟:進入 Format visual -> General -> Properties,於Advanced options中,將Responsive改為Off。(如下圖)

接著再把篩選器的寬度與高度做適當調整,即完成了年份及月份篩選器的增設。(如下圖)

PS Power BI中的矩陣其實就是Excel中的樞紐分析表

接著將產品表(Tb_Product)中的Category欄位方塊打勾,或直接以滑鼠拖拉的方式,拉至Visualizations -> Build visual 中的Rows欄位,及將銷售表(Tb_Sales)中的兩個量值方塊打勾,或直接以滑鼠拖拉的方式,拉至Visualizations -> Build visual 中的Values欄位,完成後如下圖。

接著讓我們於篩選器上點選不同的月份、年份,來測試看看報表是否運作正常,及測試我們寫的上個月銷售額量值(Sales Amount PM)公式是否正確。(如下影片)
<meta itemprop="url" content="https://fanlovexcel.com/wp-content/uploads/2023/01/20230103_V3.mp4">測試正常後,讓我們進行最後一個視覺化物件製作:橫條圖(客戶所在省份、1個量值)。
增設步驟為於視覺效果(Visualizations)中,點選群組橫條圖(Clustered bar chart)。(如下圖)

接著將客戶表(Tb_Customer)中的State欄位方塊打勾,或直接以滑鼠拖拉的方式,拉至Visualizations -> Build visual 中的Y-axis欄位,及將銷售表(Tb_Sales)中的Sales Amount量值方塊打勾,或直接以滑鼠拖拉的方式,拉至Visualizations -> Build visual 中的X-axis欄位,完成後如下圖。

但由上圖中,可以發現因省份(State)較多,於橫條圖中無法看到全部的數據,還需要將此物件進行上下滑動檢視,故一般在設計報表時,會將前幾高的數據呈現出來就好,此功能於Power BI中係為Top N。
複雜的Top N需求可以利用DAX語言撰寫;若是一般需求可直接於選框介面中進行勾選,操作步驟為先進入篩選(Filters)中,於State篩選項目旁邊點選展開按鈕。(如下圖)

再將Filter type改為Top N,Show items改為前五大(Top 5),再將銷售表(Tb_Sales)中的Sales Amount量值以滑鼠拖拉的方式拉至By value中,完成後點選Apply filter按鈕即可完成。

接著,讓我們再替圖表增加資料標籤(Data labels),加入步驟為:進入 Visualizations -> Format visual -> Visual中,將Data labels改為On,再於資料標籤選項(Options)中,將顯示位置(Position)改為Inside end。(如下圖)

到此,我們已經完成了此範例的報表設計(如下圖)。
接下來,讓我們進行本篇文章範例的最後一個步驟:發行到雲端伺服器。

4.發行到雲端伺服器
在發行Power BI報表(資料模型)上雲端前,記得先儲存檔案,儲存好後,於Tab Home中,點選Publish。(如下圖)

接著會要求使用者登入Microsoft帳號,特別要注意的是只能使用學校或組織的Email帳號登入,其他像Gmail、Outlook等個人帳號是無法進行登入的!(如下圖)

登入帳號後,會跳出發行至Power BI視窗,讓用戶選擇欲發行的目的地工作站(Workspaces),若是無付費用戶,只會出現我的工作站(My workspaces)選項,若為付費用戶則可選擇其他已設置的工作站(如下圖)。

選擇我的工作站後,接著會跳出一視窗,通知已成功發行(如下圖),接著讓我們點選雲端報表的網址連結去看一看。

進入網頁後,會看到出現於Power BI Desktop中一樣的報表。(如下圖)

於網頁左側的選項裡,點選進入我的工作站(My workspaces)頁面,各位可以看到此頁面有兩個檔案:一個檔案類型為Report、一個檔案類型為Dataset,Report係單純為報表,可供用戶於網頁上或手機平板上查看,而Dataset則代表了資料模型(資料庫),其可讓其他Power BI及Excel檔案進行連結使用,此雲端應用範疇將另寫文章介紹。

總結及補充:
介紹到這邊,相信大家已經對Power BI有了基礎的認知,在操作上有問題的朋友歡迎於底下留言。
最後補充幾點如下:
Power BI商業智慧軟體的架構為資料模型,操作流程從連結資料來源→資料模型設計→DAX撰寫→報表設計→雲端伺服器維護等等,涵蓋了相當多的技術,若要一一了解,請各位讀者參考文中提供的連結閱讀。
Power BI主要是為公司組織設計的軟體,建議使用方式為:由IT部門利用Power BI與公司資料庫連結後進行建模(Tabular Model)及發行至雲端伺服器,接著可提供公司內相關部門進行連結使用,且Power BI具備Row-level security(簡稱RLS)的安全性功能,可限制使用者可看到的數據(例如生產一課看不到生產二課的產品銷售資料);除了連結伺服器外,IT部門設計的報表(儀表板)也可以開放權限供公司內人員查閱,如此可減少各部門自行分析資料及製作報表的時間。
Power BI軟體是Microsoft目前投入大量人力開發的產品,且其用戶人數以指數型快速成長,個人或公司組織一定要花時間了解、學習,小編認為未來十年就看它了!
跟Power BI的主要對打的軟體為Tableau,但因Tableau為付費軟體,建議大家可以先從Power BI學起,上手後有需要再學習Tableau。