【Power BI】實作系列文2_匯入資料與資料轉型
其他系列文
前言:
在上一篇已經大概介紹了 Power BI 的介面以及流程,這一次我們開始要處理資料了。
在這一篇開始會使用到 Power Query 以及 DAX 語法。
有關詳細的 Library 查詢可以在這個網站找到:
https://msdn.microsoft.com/en-us/library/mt244090.aspx
匯入資料:
接下來開啟我們的 Power BI 並且點選Get Data 。
接著彈出來的視窗我們可以看到,Power BI 支援很多種資料的格式,這一次我們使用 Access database 格式。
並且我們選擇剛剛下載下來的 Lab 1 教材中的 PowerBI.accdb 。
之後會跳出預覽以及讓我們勾選要匯入哪一些資料。請大家如同圖中選擇要匯入的資料,並且點選 Load ,耐心等候匯入過程。
點選上層的 Edit Queries 進行對資料的轉型。
我們會看到這樣的一個介面彈了出來。
接下來就到我們在 Query 中到處探索,作資料轉型了。
資料轉型:
我們現在就到處探索一下吧。
首先我們來改一下不同 table 的名字吧。
我們在介面的最左邊點選想改名字的 table 。
之後在介面最右邊的 Query Settings 改名字。
讓我們先把 table 都改成如下圖 :
在 Date 的table 中我們看到一行叫 Date 。
然後會發現整個 table 跑出多一個行出來了。這時我們可以嘗試對他作出改變。
改變Data Type
點選了整個行後在上方選擇 Data Type 改成 Date。
原先的資料就會變成 Date 的格式了。
Power BI 中資料可以有 Decimal , Whole Number , Date 等等其他,大家可以自行去探索。
此時我們會發現到最右邊的 Query Settings 中的 Applied Steps 多了好幾個。
剛剛我們做的動作全部都會在 Applied Steps 這邊紀錄著,同時這些名字也是當下現在 table 的狀態的名字,你可以作出更改,也可以取消剛剛作出的變動。之後在寫 Power Query 公式時要操作 table 的需要回顧到當下 table 的狀態名字。
增加Date 相關的Column
Power BI 同時也提供在時間上運算的方便。例如我想要找出整個日期是在當年的星期幾,是在當年的第幾個星期,也很方便就可以找出來。
接下來點選剛剛整行改過 data type 的資料,然後在上面的 Date 那邊如下圖選擇。
接下來再一次點選剛剛整行改過 data type 的資料,再上面 Date 如下圖選擇。
就會發現 Power BI 已經幫你算好當年的當天,是星期幾,是第幾個星期了。
Split Column
讓我們來到 Product 這個 table 中的 Product 那一行
我們可以看到 他是由兩部份組成前面是製造商 後面是編號
我們這一次要把他分割出來
我們在 Product 那一行右鍵選 Split Column
By Delimiter 是指以某些字元去分割,下者則時以多少個字元
那麼我們選擇 By Delimiter
然後再根據下圖的選項再點 OK
儲存更變
按介面左上角的 Close & Apply 就可以儲存更變後離開 Query Editor
Load Folder
Power BI 除了匯入資料之外,也可以整個資料夾匯入。
再一次 Get Data 並且選取 Folder 。
點選 International 資料夾然後點 OK。
再一次進入 Query Editor 介面,這一次所顯示的是資料夾內檔案的資訊
點選 Content 旁邊的圖示就可以把所有資料拿出來了
開啟後會如下圖
Append Queries
接下來就到了把某幾個 table 結合在一起了。
我們先把剛剛那個 Table 的 Source.Name 整行刪除掉 因為那個只是參考回去而已。
變成以下這樣
我們現在是要把 International 跟 salesFact 結合在一起
先到右上角的 Append Queries 按下
接著再選取要 Append 的 salesFact 後按 OK
我們可以看到多出一個叫 Append1 的 table
這個就是結合了 International 跟 salesFact 的table
Power BI 會自動把 column 對好並且結合
但我們會看到這邊有一個問題就是在 Country 那邊會有 null
那是因為 salesFact 的資料中沒有 Country 這一行,這邊我們要手動加一下。
使用Power Query 語法Add Column
之後會跳出這樣的視窗
在這邊輸入按照下圖
使用了 Power Query 語法去寫,大家可以自己查找更多學習起來。
以下內容是如果 Country 內的內容是 null ,那麼就填 USA ,不然就填回自己。
Irregular Data
Power BI 在資料的自動處理,匯入 Query 中十分聰明,總能幫我們自動排好資料,可是這是建基於資料對於自動分析是有邏輯合理的。當我們有些資料是不規則的,便需要人手處理。
我們開一個新的 Power BI 專案,匯入教材中的不規則資料。
之後我們會看到下圖的情況
因為是不規則資料所以 Power BI 就直接把當一模一樣的樣子讀進來
我們希望把他變成變成最左邊的 column 是 City ,然後右邊是每一年的數據
那麼我們需要把他進行 Transform
我們到 Transform tab 那邊選擇 Transpose
Transpose 之後,資料會變成下圖。
大家可以看到,每一個 column 的 header 都是 column 1 2 3 4 ….
實際上我們資料的第一列正正就是我們的 header
因此我們可以按 User First Row As Headers
後把 City 與 Category 加到相應的位置就完成像下圖
可是我們會看到
下圖塗黃色的地方是顯示 null,那是因為我們本身資料就只有一個格是寫城市的名字
我們先點 City 整行,然後按上面 Fill 中的 Down
就會像下圖這樣把資料都Fill 完了
完成圖就像這樣
但如果我們想要把他變成更加方便用圖表作出分析發表示,這樣的 Query 不太好用。
因為目前的 Query 是比較對於我們人去看比較好,電腦去看則應該每一個都單一資料。
我們希望把他變成
一行城市,一行項目,一行年份,一行數據
因此我們先選擇所有年份的行,再點選 Unpivot Columns
就會變成我們所需要的每一個都是單一資料
接著把年份那一行的 header 改成 Year
然後把 City , Category , Year 的 data type 改成 Text
再把 Value 的 data type 改成 Whole number
完成圖就像這樣
儲存後接下來,經過 Transform 及 unpivot column 處理的資料對於 Power BI 的建立圖表分析更加友善。
像下圖的圖表也比較簡單輕易做到了。
有關更多後續的 Power BI 的操作包括 Modelling 以及 Power BI 精神所在的 Data Visualisation 請大家在進階的 Power BI 的部落格文章查看