將 Canner Enterprise 中的資料輸出至 Power BI
在此教程中,您會了解如何使用 Canner Enterprise 將資料輸出至 Power BI 中進行報表應用呈現。
在開始本教程之前,您會需要先完成在 Canner Enterprise 中連結資料來源 以及 運用工作區作為您的資料工作中心。
整合方式
Canner Enterprise 目前支援兩種與 Power BI 整合的方式,第一種為 Push Dataset,第二種為 PostgreSQL Wire Protocol。
Push Dataset
與跟一般 Data Warehouse / Database 透過 Connector 串接的方式不同,我們讓使用者可以先將各種異質資料來源進行整合、將運算好的資料建立成 Materialized View 並自動轉換成 ZIP 格式將資料推送到 Power BI Service 中,讓 Power BI 使用者可以直接進行取用資料。
PostgreSQL Wire Protocol
Canner Enterprise 實作了 PostgreSQL Wire Protocol 的接口,Power BI 的使用者可以直接下 SQL Query 讀取 Canner Enterprise 工作區中所有的資料。
使用情境
Push Dataset
Power BI 經常性固定報表為了要卸載運算,建議可以使用 Push Dataset(資料推送) ,運算及產生 ZIP 格式在 Canner Enterprise Power BI 只處理報表呈現即可。
PostgreSQL Wire Protocol
適用於大量進行 adhoc query / direct query 的情境。
Push Dataset 操作步驟
在 Power BI Service 設定
接下來幾個步驟,要在 Power BI Service 上設定好相關權限,並取得需要的資訊後續可填入到 Canner Enterprise 中.
步驟 1: 應用程式註冊
- 應用程式註冊 > 建立一個應用程式,名字可為
Canner Power BI Push Dataset App
。
- 點選建立好的 Canner Enterprise Power BI Push Dataset App > 複製好 「應用程式 (用戶端) 識別碼 (Application ID) 」與「 目錄 (租用戶) 識別碼 (Tenant ID)」,接下來的步驟會使用到。
- 點選憑證及祕密 > 在
用戶端密碼
區塊,新增用戶端密碼,可以在建立時設定較長 (24個月為佳),以避免過期的問題。
- 複製
Canner Power BI Push Dataset
secret 的值 (Application secret)。
在這個步驟,請務必把 secret 的值複製起來,後面再回來看,會無法複製值.
步驟 2: 建立安全性群組
- 進入 Azure Active Directory > 群組,並點選「新增群組」
在搜尋找
Azure Active Directory
在此頁面點選「新增群組」
- 在建立時於「成員」輸入剛剛建立好的應用程式
Canner Power BI Push Dataset App
,群組類型選擇「安全性」
- 建立完成後如下圖:
步驟 3: 啟用 Power BI 服務系統管理員設定
- 接著為了要讓這個服務主體 Canner Enterprise Power BI Push Dataset App 可以存取 Power BI 的 API,我們需要到 Power BI 的 Service 中開啟服務主體存取 API 的權限,此部分的設定僅能由 Power BI 的管理員開啟(與Azure 的管理員權限不同),如果要開啟 Power BI 的管理員權限請參考該文件: https://docs.microsoft.com/zh-tw/power-bi/admin/service-admin-role
![powerbi-push-step9.png](/img/1.x.x/guides/powerbi/powerbi-push-step9.png)
- 透過指定「特定的安全性群組」,可以把對 API 的存取權限限縮在該安全群組中,接著後續我們便可以讓特定的工作區,透過添加該安全性群組來被 Power BI API 存取操作。
步驟 4: 將服務主體新增至您的工作區
- 透過「建立工作區」建立一個需要藉由 Power BI API 存取的工作區 > 接著點選新建立好的工作區,並開啟工作區存取 ,如下為 test-power-bi:
![powerbi-push-step11.png](/img/1.x.x/guides/powerbi/powerbi-push-step11.png)
工作區存取與建立工作區 需要具有 Power BI Pro 產品的權限,該權限與 Power BI 管理員角色的權限不同,如下圖來自 Azure AD 中使用者 > 授權 (License) 的確認:
若沒有 Power BI Pro 產品權限,可透過這邊做設定,Power BI 服務中透過右上角的「管理入口網站 ( Admin Portal )」 > 使用者 > 前往 Microsoft 365 系統管理中心
![powerbi-push-step12-2.png](/img/1.x.x/guides/powerbi/powerbi-push-step12-2.png)
並在開啟 Microsoft 接著點選已作用中的使用者,編輯使用者的授權與 App 授權,開啟 Power BI Pro(如果開啟並儲存就會進行刷卡)。
- 輸入在 Azure AD 中建立好的安全性群組:
![powerbi-push-step13.png](/img/1.x.x/guides/powerbi/powerbi-push-step13.png)
如此屬於工作區,因為有了這個安全性群組 Canner Enterprise Power BI App ,便能讓隸屬在安全性群組中的 Canner Enterprise Power BI Push Dataset App 服務主體 ( Service Principal ) ,獲得該 Power BI 的 API 存取權限,並且能只作用在添加該群組的工作區中。
在 Canner Enterprise 設定 Push Dataset
步驟 1: Create Power BI Service Principal Credential
輸入前面步驟取得的
- Application ID (應用程式 (用戶端) 識別碼, 於應用程式註冊成功後,在資訊中取得)
- Application Secret (於應用程式註冊成功後,在憑證與秘密中取得)
- Tenant ID (目錄 (租用戶) 識別碼 (Tenant ID), 於應用程式註冊成功後,在資訊中取得)
![powerbi-push-step14.png](/img/1.x.x/guides/powerbi/powerbi-push-step14.png)
步驟 2: 在工作區將運算好的資料轉換為 Materialized View
轉換方式 1
進入到 "SQL Explorer" 中輸入您想要的 SQL statement 並執行查詢結果。在結果查詢列表中可以直接將此結果轉換成 Materialized View。
轉換方式 2
進入到 "SQL Explorer" 中輸入您想要的 SQL statement。按下拉選單選擇 "Materizalized View",系統就會把您現在的 SQL 轉存成一個 Materialized View。
![sql mv create](/img/1.x.x/main/sql_explorer/materialized_view/mv_generate_2.png)
點擊了 Materialized View 後,會有一個表格讓您填寫您想要的儲存 Materialized View 名稱等。
步驟 3: Create Push Dataset
點擊 create
Create a Push Dataset
接著,會跳出表單,需填寫以下資訊
Credential Name
: 選擇上個步驟創建的Power BI Service Principal Credential
Power BI Workspace Name
: 選擇推送到哪個 Power BI 上 workspace 中Materialized View
: 選擇推送的 Materialized ViewRebind Report
: 一般狀況下,請勾選 此欄位,我們會一併更新報表綁定的資料集.
![powerbi-push-step16.png](/img/1.x.x/guides/powerbi/powerbi-push-step16.png)
在選擇 Power BI Workspace Name
時,會跳出視窗讓使用者選擇 workspace.
您可能會注意到,當你在 Power BI 新增群組工作區 ( Group Workspace ) 後,會無法馬上在 Canner Enterprise 上看見,這使因為 Power BI Rest API 不會得到最新的資料,如下圖,當你建立了一個 workspace,並按照前面的步驟授權給 Canner Power BI App
.
當下看到的列表可能是空的
需等待一段時間後才能生效,等待時間可能落在 20 - 40 分鐘左右.
- 步驟 3: 觀察 Power BI Push Dataset 的狀態,待 Status 變為
Synced
就代表資料推送成功
資料也會出現在 Power BI Service 上供使用
如何設定排程更新
在產生 Materialized View 時,您若有選擇[排程更新](/v1/product/workspaces/sql/materialized_view# 1. 排程管理:),在每次自動更新時,或是您在 Materialized View 頁面,點選 Refresh
做手動更新時,都會讓 Power BI Push Dataset 進入 Preparing
的狀態,代表 Materialized View 正在更新,且資料正在準備被推送到 Power BI Service.
Power BI Push Dataset 一共有三種狀態
- Preparing: 代表 Materialized View 正在更新
- Syncing: 代表資料正在被傳送到 Power BI Service 上
- Synced: 代表資料完成傳送
PostgreSQL Wire Protocol 操作步驟
目前僅支援 Import Mode
步驟1: Get Data 中,選擇 PostgreSQL Database
連線
步驟2: 輸入連線資訊
- Server: 輸入 IP/Host 跟 Port
- Database: 輸入 workspace 的 SQL Name
Workspace SQL Name 可在 workspace 列表中看到
步驟3: 輸入使用者/密碼
填入使用者名稱及密碼,即可完成連線。密碼資訊需要在 Personal Access Token 中建立取得。
步驟4: Load Data
連線成功後,會跳出視窗顯示該 Workspace 中所有可使用的 Table / View / Materialized View
步驟5: 開始使用
接下來,就可在 Power BI 中,使用 Canner Enterprise 中的資料