165 pbi-utils 使用檔案

2022-11-25 18:02:48

165 pbi-utils 使用檔案

一、背景

先來說一下為什麼會有 pbi-utils 這個小工具吧。在我日常做演示的範例檔案的時候,每次都要重新搞一次 Power BI Desktop,就想能不能像 PPT 模板那樣,搞一個模板,然後更專心的去專注內容本身呢?一段時間來,我其實也是用的這種方式,自己存有一份範例模板,這樣每次另存一份就 ok 了。

直到有一天我要做關於 Power BI 行級別安全性 (Row-level security,簡稱 RLS) 的範例的時候,發現用這樣模板另存就沒辦法去適配不同的業務模型了。

於是開始思考,是否能把這種 RLS 抽象出來,同時能把兼具模板,最好還能兼具到頁面許可權,還能一鍵生成那該多好。這就是 pbi-utils 最初設想,但面對 Power BI 要去操控資料模型目前可以是用 Tabular Editor(https://tabulareditor.github.io/),但是沒法操控新建頁面等。這個是事情也就擱置了。

直到有一天在 sqlbi(https://www.sqlbi.com/) 上看到了一個名叫 pbi-tools(https://pbi.tools/) 的工具,pbi-tools 可以完全把 pbix 檔案完成拆解成模型(model)和報告(report),這就可以二次開發了。於是便有了 pbi-utils 這個小工具。

在此特別感謝 @mthierba(pbi-tools作者)。

在 pbi-utils 中使用了 pbi-tools 一部分功能,更多功能大家有興趣去 pbi-tools 主頁看看,這是一個非常棒的工具。

pbi-utils 整體框架如下:

二、pbi-utils下載及安裝

首頁介面

三、自動生成pbit

在做使用檔案前,我們先說一下我的基本思路。說來也比較簡單,就是通過單獨的 json 組態檔,把我們需要的一些設定單獨解耦出來。我通過操作組態檔即可完成 Power BI 調整需求。

1、範例檔案說明

先來交代一下,我們一般拿到的都是業務資料,建立基礎的報告模型殼子就可以加個 pbi-utils。

依然使用之前分享給大家的 demo 資料(https://jiaopengzi.com/1435.html)

我們拿到的是一個只匯入了業務資料,沒有報告頁面的 pbix 檔案。

2、初始化

首先我們需要對我們 pbix 檔案進行 json 組態檔初始化。

內容頁數規則:只能是 1-99 的整數,如果需要多個二級分類,則使用英文半形逗號分開;其它內容無法輸入。

下圖所示,我們以為 C:/desktop/demo/demo.pbix 為業務模板,內容頁數:3,4 表示我們需要兩個二級分類的頁面導航,同時第一個分類內容頁數為3頁,第二個分類的內容頁數為4頁。

當然還有一個頁面 URL 名稱是否使用隨機值,這目的其實是為了偽頁面許可權準備的,在視訊中我們再介紹。

點選初始化後即可得到我們 json 組態檔C:/desktop/demo/demo.json

3、模板度量值

在 模板度量值 下選擇前面初始化的C:/desktop/demo/demo.json檔案即可看到模板度量值。

  • 我把我常用的一些模板度量值做成了模板給到大家。當然這些都可以自定義,當你每一次儲存的時候,下次初始化的時候就將使用你儲存過的模板度量值作為模板。所以大家可以根據自己需要增減。

  • 如果我們前面的 pbix 模板中有度量值了的話,請不要和這裡的度量值重名。

  • 度量值類別中我們增加了一個 報表重新整理時間,如果啟用勾選去掉,則是按照自動重新整理時間來顯示,打上勾則是按照賦值的內容顯示。

  • 圖片 URL 相容 圖片的 URL 連結和 SVG 格式。

  • 可以通過右鍵進行 刪除、編輯和多行輸入;多行輸入欄位間使用 | 分割,多行用換行。

  • 記得修改以後要儲存。

4、頁面編輯

在 頁面編輯 下選擇前面初始化的C:/desktop/demo/demo.json檔案即可看到頁面組態檔。

這裡的頁面的屬性,是使用我的給大家的模板,在使用的時候,只要儲存後,以後初始化的時候則會使用自己的模板,非常的人性。

頁面編輯是沒有新增和刪除的,所以是在我們前面做報告規劃的時候就需要考慮清楚的,只能通過初始化來確認頁面的數量和分級。

Ⅰ、欄位說明

  • ID: 頁面的索引從 0 開始,不能編輯。

  • url名稱: 頁面名稱,在 Power BI 服務中 url 中的使用;名稱不能重複。

  • 顯示名稱: Power BI 頁面的顯示名稱。

  • 頁面檢視: 頁面檢視 1 調整到頁面大小 , 2 適應寬度 , 3 實際大小。

  • 頁面高度: 正整數。

  • 頁面寬度: 正整數。

  • 頁面垂直對齊: 分選項為:'Top', 'Middle' ;注意單引號的保留。

  • 頁面隱藏屬性: 0 為不隱藏, 1 隱藏。

  • 頁面標題文字: 頁面標題文字。

  • 頁面標題文字顏色: 使用16進位制顏色,加上透明度,末尾兩位00表示完全透明,FF完全不透明。

  • 頁面標題背景顏色: 使用16進位制顏色,加上透明度,末尾兩位00表示完全透明,FF完全不透明。

  • 導航按鈕名稱: 導航按鈕名稱(選擇窗格中檢視)。

  • 導航按鈕頁面中顯示名稱: 導航按鈕頁面中顯示內容。

  • 導航按鈕文字顏色-有許可權: 使用16進位制顏色,加上透明度,末尾兩位00表示完全透明,FF完全不透明。

  • 導航按鈕文字顏色-無許可權: 使用16進位制顏色,加上透明度,末尾兩位00表示完全透明,FF完全不透明。

  • 導航按鈕背景顏色-有許可權: 使用16進位制顏色,加上透明度,末尾兩位00表示完全透明,FF完全不透明。

  • 導航按鈕背景顏色-無許可權: 使用16進位制顏色,加上透明度,末尾兩位00表示完全透明,FF完全不透明。

  • 導航按鈕滑鼠放上去的工具提示-有許可權: 導航按鈕滑鼠放上去的工具提示文字-有許可權。

  • 導航按鈕滑鼠放上去的工具提示-有許可權: 導航按鈕滑鼠放上去的工具提示文字-有許可權。

  • 備註: 備註說明,可以留空。

Ⅱ、頁面層級導航示意圖

Home
└─Navigation
	├─NoPermission
	├─A00
  	│  ├─A01
  	│  ├─A02
  	│  ├─...
  	│  └─A99
  	├─B00
  	│  ├─B01
  	│  ├─B02
  	│  ├─...
  	│  └─B99
  	├─...
  	└─Z00
		├─Z01
      	├─Z02
      	├─...
      	└─Z99

  • Home:首頁,建議名稱保留不變

  • Navigation:總導航頁,導航至第二層導航頁,即:A00-Z00,A至Z表示分類,理論上有26個分類,數位使用兩個零表示,如果內容頁只有一個分類的話則預設只有 Navigation 一個導航頁。

  • 內容頁:A01...A99, B01...B99 ... Z01...Z99;分類用字母表示,內容頁從 01 至 99,理論上每個分類可以有 99 個頁面,加上分類可以得到 26 * 100= 2600內容頁面,基本能滿足 Power BI 各種層級導航需求了。當然初始化後,這些名稱都是可以根據業務需求自定義的。

  • NoPermission:無許可權提示頁,使用者無許可權的時候跳轉的頁面。

5、許可權類別初始化

許可權類別初始化主要是針對 RLS 。如果沒有 RLS 需求的則可以跳過當前設定。

在 許可權類別初始化 頁面選擇前面初始化的C:/desktop/demo/demo.json檔案即可看到許可權類別初始化頁面。

當前是沒有任何的 RLS 設定,如果需要則按照下列設定填寫儲存即可。

  • rls名稱:即你需要新增的 rls 規則的度量值名稱,字母下劃線和數位的組合輸入其它無效,不能與 pbix 中原有度量值重名。

  • 表格:表格會通過前面我們的初始化獲得對應表格的名稱。

  • 欄位:當表格更新後,即可獲得表格對應的欄位。

  • 欄位值:欄位值是當前欄位所有的取值,目的是類別初始化後備用。

  • 新增 RLS 規則

6、許可權表編輯

在 許可權表編輯 頁面選擇前面初始化的C:/desktop/demo/demo.json檔案即可看到許可權表編輯頁面。

  • 預設情況下,會根據使用者所在電腦的賬戶生成一條對應本機使用者許可權。

  • 許可權包括 頁面序號 和 RLS 許可權,RLS 許可權則是我們前面使用許可權類別初始化的資料。

  • 一個使用者名稱稱會有正常的 Power BI 帳號,同時在本機上也需要對應的賬戶名稱來支援本地使用者的許可權。

  • 通過右鍵編輯

    • Power BI 帳號增加一個;

    • 頁面許可權 保留:1,2,3,4,5,6,7;

    • 大區ID 保留:1,2,3,4;

    • 產品分類 保留:A類,B類,C類。

當然也可以通過新增按鈕增加更多的帳號設定,記得儲存。

7、編譯生成pbit

在 編譯生成pbit 頁面,到了這裡,基本上我們的設定就做好了,可以生成我們需要的頁面了。

  • 選擇我們的 pbix 模板。
  • 選擇我們已經設定好的組態檔C:/desktop/demo/demo.json
  • 選擇需要存放度量值的表格。
  • 度量值資料夾自定義,建議使用字母下劃線數位來組合,用來存放我們的導航和必要元素的度量值。

點選 生成pbit 按鈕,片刻後就能看到 pbit 建立成功的提示。

在我們 pbix 檔案的同目錄下會建立一個 pbix 名稱關鍵字資料夾。

開啟資料夾下的 pbit 檔案,確認載入,可以看到我們的頁面已經從最開始的只有一個空白頁,到現在符合我們設定的頁面建立成功了。

注意其中標註數位的 5 處變化:

  1. 頁面編輯裡面的顯示名稱及頁數和層級結構。
  2. 模板度量值中的度量值
  3. pbi-utils 工具後臺自動寫入的導航度量值,資料夾 test02 是我們自己在編譯時候寫的。
  4. rls 資料夾下的度量值,即我們在許可權類別初始化的 rls 名稱。
  5. pbi-utils 工具後臺自動寫入的輔助表格。

同時關注 RLS, 在建模->通過以下身份檢視->可以看到我們多了一個 rls 角色。我們拉一個和我們組態檔中 RLS 許可權相關的維度矩陣。

當我們點選確認後,可以發現和我們設定的 RLS 是一致的。

還有包括頁面許可權等,請觀看我們的演示視訊。

四、度量值操作

1、pbixA 2 pbixB

在 pbixA 2 pbixB 頁面,這裡的 2 表示 to 的意思。

我們把前面的 pbit 檔案儲存為 A.pbix,新建了一個 B.pbix 檔案,沒有任何度量值。

選擇對應的 A.pbix 和 B.pbix,點選載入資料

稍等片刻後,可以看到一個多行編輯的彈窗,在這裡我們選擇需要匯入到 B.pbix 度量值,並選擇好度量值表,點選提交。

可以看到提示,在 B.pbix 的同目錄下,生成了一個 B.pbit 的檔案。

開啟 B.pbit,可以開電腦我們前面匯入的度量值都進來了。這樣我們從 pbixA 到 pbixB 的度量值就匯入好了。

我們看到有黃色歎號,這是因為我們的 B.pbix 中並沒有我們 A.pbix 中的表,所以在使用匯入功能前,一定要搞清楚這些度量值匯入後是否有意義。

2、pbix 2 DAX

在 pbix 2 DAX 頁面中,我們選擇對應的 pbix 檔案和對應的資料夾;點選按鈕 匯出DAX。

我們開啟提示的路徑,就可以看到匯出的度量值了。

匯出的度量值中,名稱中有一個分隔符 ][ 分隔符前是存放度量值的表,分隔符之後是度量值名稱。

在匯出的度量值中,最前面的註釋是後續匯入需要的,請不要隨意刪除。

  • @description:度量值描述。

  • @displayFolder:度量值所在資料夾。

  • @formatString:度量值的格式化字串。

  • @dataCategory:度量值的資料類別。

3、DAX 2 pbix

DAX 2 pbix 和 pbix 2 DAX 就是一個逆向的過程。

首先需要讀取到匯入的 pbix 檔案,目的是拿到對應的度量值表,讀取完成後,可以選擇對應的度量值表。

選擇上述匯出的度量值資料夾,點選 匯入DAX。

可以看到提示訊息,在我們需要匯入的 C.pbix 檔案的同目錄下,建立了一個 C.pbit 檔案。開啟檢視,可以看到資料夾裡面的度量值都匯入進來了,和前面 pbixA 2 pbixB一樣,我們看到有黃色歎號,這是因為我們的 C.pbix 中並沒有我們 A.pbix 中的表。

五、關於

在關於頁面主要是我們的聯絡方式、使用檔案以及我們的視訊課推介,我們做了中文和英文兩種語言的顯示。可以通過下方語言選擇切換。

中文介面顯示

英文版介面顯示

六、注意事項

  1. 我們在操作 pbix 的時候,並沒有在原本的 pbix 檔案上操作,對於我們原本檔案的安全性有了保證,不會破壞原來的檔案。
  2. 我們所有生成的 pbit 檔案是 Power BI 模板檔案,裡面不會包含資料,只有對應的後設資料,當我們確認好使用後,請及時另存為 pbix 。
  3. 在生成多頁導航的 pbit 中,還可以根據自己的需求重新修改來實現個性化的 Home、Navigation 和 NoPermission 等頁面。
  4. 已知一部分老版本 Power BI Desktop 生成的 pbix 檔案會出現不可知的一些問題,請升級到最新版本的 Power BI Desktop 後另存一份即可。