iT邦幫忙

2024 iThome 鐵人賽

DAY 27
0
Python

從概念到應用:Python實戰開發學習之旅系列 第 27

[Day26] Python專案 - PowerBI - 視覺化你的報表(Excel、MongDB、Python結合)

  • 分享至 

  • xImage
  •  

目標

https://ithelp.ithome.com.tw/upload/images/20241011/201210523sMGXlImOA.png

俗話說
有了資料如果可以產生一份報表
或是圖示化的資料
那麼可以更有效率的呈現給顧客、或老闆

PowerBI 就是一個很厲害的工具
而且可以使用前面學習到的資料整理、Python整合Script也可以透過MongoDB匯入到報表理

今天在測試PowerBI 連結MongoDB發現許多錯誤
也採了不少的雷點/images/emoticon/emoticon02.gif
今天就當先鋒掃雷大隊
帶大家分析報表吧

今天目標會有:

  1. PowerBI 安裝跟介紹
  2. 連結PowerBI 資料源(excel、monodb)
  3. 整合Python Script並視覺化

1. PowerBI 安裝跟介紹

https://www.microsoft.com/zh-tw/power-platform/products/power-bi/desktop

首先麻煩大家先安裝PowerBI
沒有什麼雷點
就一步往下安裝就好

什麼是 Power BI
Power BI 是一套商業分析工具集,能夠將不相關的數據來源轉換為一致且互動的視覺見解。它包括多個元件,如 Power BI Desktop、Power BI 服務和 Power BI 行動版應用程式,讓用戶能夠輕鬆地連接數據來源、進行數據視覺化和共享報告。

Power BI 提供三種主要的視圖:報表檢視資料檢視模型檢視

1.1報表檢視(Report View)畫面介紹

你要拿什麼資料去做圖表,就可以用這邊來呈現

說明:

功能:報表檢視是 Power BI 的主要工作區,用戶可以在此創建和設計報表。這裡允許用戶添加各種視覺效果(如圖表、地圖和卡片)來展示數據。
特點

  • 提供一個空白畫布,允許用戶自由拖放視覺效果
  • 支持多個報表頁面,每個頁面可以包含不同的視覺效果。
  • 用戶可以複製和粘貼視覺效果,方便快速構建報表。
  • 使用場景:適合用於展示關鍵指標、趨勢分析和數據比較等。

https://ithelp.ithome.com.tw/upload/images/20241011/20121052VolN8qlg3K.png

1. 畫布區 (Report Canvas)

  • 用途:畫布區是報表視覺化的主要工作區域。這裡是放置所有圖表、圖形、數據卡片等視覺元素的地方,讓你設計和配置報表的外觀和布局。
  • 互動:你可以在畫布上拖放不同的視覺化圖表,調整它們的大小、位置和設定來構建報表。

2. 頁簽 (Report Pages)

  • 用途:頁簽類似於工作簿中的工作表,允許你在一個 Power BI 報表中創建多個頁面。每個頁面可以承載不同的數據視覺化和分析,為不同的數據集或視角提供展示空間。
  • 互動:頁簽通常顯示在畫布的底部,通過點擊不同的頁簽,你可以輕鬆切換到不同的報表頁面。

3. 視覺圖選擇 (Visualizations Pane)

  • 用途:在右側的視覺化選擇面板中,列出了各種可用的視覺化類型(如條形圖、折線圖、餅圖、數據卡等)。這些工具用於將數據轉換成直觀的視覺效果。
  • 互動:你可以從視覺圖選擇面板中選取一個視覺化圖表並將其拖到畫布上,然後自定義它的數據來源、格式和屬性。

4. 篩選 (Filters Pane)

  • 用途:篩選面板允許你設置報表或視覺化的篩選條件。可以根據選定的字段或值來過濾數據,讓你專注於特定的數據範圍或群體。
  • 互動:篩選面板有頁面篩選器、視覺篩選器以及報表篩選器。你可以針對整體報表或單一視覺化設定不同的篩選條件,並觀察數據如何動態更新。

5. 資料選擇功能 (Fields Pane)

  • 用途:資料選擇面板列出了報表使用的數據集和欄位。你可以從這裡選擇需要的數據欄位來填充視覺化圖表。
  • 互動:通過將欄位從資料面板拖放到視覺化圖表的軸、值、圖例等區域,你可以控制數據如何顯示。每個欄位都可以進行聚合操作(如總和、平均等)或設置成類別或度量值。

1.2資料檢視(Data View)介紹

你匯入的資料都可以從這邊檢視

功能:資料檢視允許用戶查看和編輯數據集中的原始數據。這是一個類似電子表格的界面,顯示所有資料表及其內容。

特點

  • 用戶可以直接查看每一行數據,並進行基本的數據編輯。
  • 支持對資料進行過濾和排序,以便更好地分析數據。
  • 使用場景:適合用於數據清理、檢查數據準確性及進行初步分析。

https://ithelp.ithome.com.tw/upload/images/20241011/20121052nCgkBi9G7L.png

1. 檢視資料表 (Data Table View)

  • 用途:資料檢視顯示的是與數據模型相關的資料表,你可以查看每張表的具體資料列內容。這使你能夠詳細查看每個欄位的數據,類似於 Excel 的表格檢視方式。
  • 互動:你可以點擊不同的資料表查看具體資料,每個資料表的每一行和每一列都會被直觀地展示,方便進行檢查和核對。

2. 資料篩選和排序

  • 用途:在資料檢視中,你可以對資料進行篩選和排序,以便於專注於特定的數據範圍,或是找到你關心的數據異常點。
  • 互動:使用表格的標題,可以按欄位進行升序或降序排序,並且可以通過篩選器聚焦於特定數據值。

3. 欄位格式化 (Field Formatting)

  • 用途:你可以更改欄位的格式,例如數字格式(小數點位數、貨幣符號)或日期格式,這對於展示和報表製作時非常有用。
  • 互動:選擇資料表中的某個欄位後,你可以透過格式化工具來自定義欄位的顯示方式,使數據顯得更具易讀性。

4. 計算欄位和度量值 (Calculated Columns & Measures)

  • 用途:在資料檢視中,你可以建立自定義的計算欄位或度量值,這些計算是在導入數據的基礎上,使用 DAX 函數進行的運算,用來創造更具分析價值的資料。
  • 互動:透過 DAX 函數,你可以創建動態的計算欄位和度量值,並且這些欄位會即時更新並反映在報表和數據模型中。

5. 資料模型結構理解 (Data Model Insight)

  • 用途:資料檢視還幫助使用者更好地理解數據的結構,如每個欄位的數據類型(文字、數字、日期等),欄位的唯一值數量,甚至是 Null 值等。這有助於確保數據的完整性與一致性。
  • 互動:在資料檢視中,你可以輕鬆查看每個欄位的類型、格式,以及該欄位包含的數據範圍,以便進一步清理和優化數據。

1.3模型檢視(Model View)介紹

簡單說明就是powerbi的資料庫功能,還可以用視覺方式呈現喔

功能:模型檢視提供了一個可視化的方式來查看資料模型的結構,包括資料表之間的關聯性
特點

  • 用戶可以看到所有資料表及其關聯,並能夠輕鬆管理這些關聯(如創建、刪除或修改)。
  • 支持對資料模型進行設計,幫助用戶理解數據之間的邏輯關係。
  • 使用場景:適合用於設計和優化資料模型,確保數據之間的正確關聯。

2. 連結PowerBI 資料源(excel、monodb)

Power BI 的資料源是其核心功能之一,允許用戶從多種來源連接和導入數據,以便進行分析和報告。以下是 Power BI 資料源的簡介

2.1 Power BI 資料源

類型 說明
檔案 支持各種檔案格式,如 Excel 活頁簿、CSV、XML、JSON 等。
資料庫 連接到多種資料庫,如 SQL Server、Azure SQL Database、Oracle Database 等。
雲端服務 可從雲端服務提取數據,如 Google Analytics、Salesforce、Twilio 等。
Web 資料 可以從網站提取數據,支持網頁抓取。
Power Platform 包括 Power BI 資料流程和 Dataverse,支持與其他 Microsoft 產品的整合。

2.2 選擇Excel

https://ithelp.ithome.com.tw/upload/images/20241011/20121052Kgx9ahOS5Q.png

選擇excel匯入資料其實很簡單
點左上角
1.匯入資料源、或是匯入excel活頁簿
2.會跳出各個Sheet的資料
3.選擇你想要匯入的資料(可以選擇多個Sheet)
4.如果要數據清理可以點轉換資料,否則就按載入就好

但以下幾點有注意事項可以參考

Excel 使用注意事項

注意事項 說明
資料加密 - 檔案加密:使用密碼加密整個工作簿,只有正確密碼的用戶才能打開文件。
- 工作表保護:設定密碼限制用戶對特定工作表的編輯權限。
- 數位簽名:增加文件的安全性和完整性,允許或限制用戶使用數位簽名。
設定權限 - 限制存取:使用資訊版權管理(IRM)設定細緻的存取權限。
- 唯讀模式:設置文件在打開時默認為唯讀,防止意外修改。
密碼管理 - 記住密碼:妥善保存設定的密碼,忘記將無法訪問文件。
- 第三方工具:如果忘記密碼,可以考慮使用專業解密工具,但需謹慎處理。
數據隱私 - 隱藏敏感資料:隱藏某些工作表或列以防止未經授權查看,但此方法不安全。

2.3 MongoDB 安裝步驟

先請大家安裝這幾樣咚咚
1. ODBC Driver Download - 依照作業系統選擇
ODBC Driver

2. ODBC Connect - 依照作業系統選擇
ODBC Connect Driver

以我的windows舉例,我就是安裝這個 mongodb-connector-odbc-1.4.5-win-64-bit.msi

**3. BI Connector Downloads **
BI Connector

以我來說就是安裝這個: Archive: mongodb-bi-win32-x86_64-v2.14.15.msi

三個都安裝完就可以進行下一步驟瞜

ODBC(Open Database Connectivity)和 Power BI 之間的關係主要體現在數據連接和整合上。以下是 ODBC 和 Power BI 之間的關係的簡要說明:

ODBC 和 Power BI 的關係

特性 說明
ODBC 定義 ODBC 是一種標準的應用程式介面,允許應用程式(如 Power BI)通過 SQL 查詢與各種數據庫進行通信。
數據連接 Power BI 可以使用 ODBC 連接到多種數據來源,包括 SQL Server、MySQL、PostgreSQL 等。
數據整合 通過 ODBC,Power BI 能夠從不同的數據庫中提取數據,並將其整合到報告和儀表板中。
設置過程 用戶需要在 Power BI 中選擇「取得資料」,然後選擇 ODBC 來配置數據源設置。
實時數據訪問 使用 ODBC 連接,Power BI 可以直接訪問數據庫中的實時數據,提供即時見解。
性能考量 雖然 ODBC 連接可能比原生連接稍慢,但它提供了靈活性,適合多用戶環境中報告和數據創建。

Step 1 設定Connector for BI連結mondoDB

https://ithelp.ithome.com.tw/upload/images/20241011/20121052yrveilo8Gy.png

接下來麻煩大家到這格路徑

C:\Program Files\MongoDB\Connector for BI\2.14\bin

執行這隻程式mongosqld.exe 成功後就可以看到上面那個畫面了
並且把port記下來
以我的畫面來說是3307

Step 2 設定DSN

這個步驟就是設定ODBC的資料集
可以參考官方介紹
https://www.mongodb.com/docs/bi-connector/current/tutorial/create-system-dsn/

大家可以在windwos底下輸入ODBC
接下來就會跳出microsoft ODBC管理員

https://ithelp.ithome.com.tw/upload/images/20241011/201210528AgBtLhpjM.png

請點選第二個系統資料源名稱
接者點右邊的新增

https://ithelp.ithome.com.tw/upload/images/20241011/20121052uII2bX7dcK.png

點選 MongoDB ODBC 1.4.5 ANSI/Unicode Driver

tips- 小知識

ANSI : 是英語系國家常用的編碼
Unicode : 萬國編碼。(中文使用者建議使用這個)

https://ithelp.ithome.com.tw/upload/images/20241011/20121052Eh5ZEtNZj7.png

成功後可以輸入localhost port選3307
可以點選test測試是否有連線成功

Step 3 從PowerBI 連結MongoDB數據庫

我們可以選擇資料源-> ODBC資料庫

https://ithelp.ithome.com.tw/upload/images/20241011/20121052G5ECLUiscU.png

接者選擇你要連接的數據集我的名稱叫做customer
https://ithelp.ithome.com.tw/upload/images/20241011/20121052JEtOhNAlcb.png

如果跳出認證我們就要先選擇windwos basic 認證https://ithelp.ithome.com.tw/upload/images/20241011/20121052GzB6l19ias.png

這時候你以為你成功了結果..../images/emoticon/emoticon04.gif
https://ithelp.ithome.com.tw/upload/images/20241011/20121052AgQqA3osOz.png

Step 4 清除認證

這個原因是因為找不到有效的database
原因是因為我們在ODBC設定實沒有指定database

所以我們要先到powerbi點選檔案 -> 選項與設定 ->資料源設定
https://ithelp.ithome.com.tw/upload/images/20241011/20121052WA64TzlXd2.png

接者我們要把這邊認證都清除掉
https://ithelp.ithome.com.tw/upload/images/20241011/20121052sfeDi0KgdG.png

這邊直接放心大膽的清除吧

Step 5 重新設定ODBC的設定跟連線資料庫

接者我們回到ODBC操作台把DB name設定上去
https://ithelp.ithome.com.tw/upload/images/20241011/201210529SkGO3aelq.png

我們就可以重新到powerbi操作
接者正確無誤就可以看到資料瞜 /images/emoticon/emoticon01.gif

3. 整合Python Script並視覺化

設計流程

接者我們有幾點需求

  • 我們會先把之前的Fast API啟動起來
  • 並且新增幾組user讓我們資料更豐富
  • 並且簡單修改匯入到mongodb時多新增個userID選項
  • userID選項是為了跟powerbi中excel表的書籍中userid做mapping
  • 這時候如果發現有書籍的資料給的幣別是美金
  • 我們需要透過powerbi python script再轉換成新台幣
  • 最後把excel資料跟mongodb資料mapping起來
  • 呈現powerbi報表

https://ithelp.ithome.com.tw/upload/images/20241011/20121052Y3qd8oRQPL.png

可以參考昨天的FastAPI 連結mongodb的過程

其實很簡單我們只要多新增這個資料模型就好

class Customer(BaseModel):
    userid: str
    name: str
    email: str
    address: str = None

新增作者資料

接下來mondoDB可以多打幾筆資料
這邊我是新增三比user
https://ithelp.ithome.com.tw/upload/images/20241011/20121052s4nHjRGd5R.png

書籍資料表(books.xlsx)

userid title price (美金)
1 《Python 程式設計入門》 29.99
2 《數據科學的藝術》 39.99
3 《深入淺出區塊鏈》 34.99
1 《機器學習實戰》 49.99
2 《前端開發精要》 24.99

匯入數據集(Mongodb跟books.xlsx) 跟 python script

https://ithelp.ithome.com.tw/upload/images/20241012/20121052byg2Rvgfyz.png

import pandas as pd

# 'dataset' 是 Power BI 中內部資料的名稱,會自動讀取匯入的資料
# 假設匯入的表格已經包含 'userid', 'title', 'price (美金)' 這些欄位
df = dataset

# 美金轉換成新台幣 (乘以 30)
df['price (TWD)'] = df['price (美金)'] * 30

# 輸出轉換後的 DataFrame
df

我們可以透過Python script來整理數據集

結合關聯

接者我們就可以透過mongodb 作者的資料表userid
跟excel裡面的userid自動mapping瞜~

因為mongodb 會自動連結關聯
https://ithelp.ithome.com.tw/upload/images/20241012/20121052UzZI1N2BPB.png

視覺化圖表

https://ithelp.ithome.com.tw/upload/images/20241012/20121052ZcQxl4W0Tl.png

接者我們就可以依照關性
把圖表長出來搂~

我這邊的示範有把三張表分別是圓餅圖樹狀結構圖資料表

圓餅圖 : 適合給user看到總量
樹狀結構圖 : 適合分析關係跟上下結構
資料表: 表示所有資料的呈現

總結

今天的圖片有點多
因為想要一口氣講解完Powerbi 跟MongnDB的整合應用
希望大家會喜歡~

不過在mongodb連線採了不少的雷QQ


上一篇
[Day25] Python專案 - 網頁開發 - (4) Fast API 進階後端工程師該思考的幾件事
下一篇
[Day27] Python專案 - PowerBI複習&自動化&網頁自動登入 (PowerBI 、windwos工作排程、PyAutoGUI)
系列文
從概念到應用:Python實戰開發學習之旅31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言