先來說一下為什麼會有 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 整體框架如下:
下載地址-github:https://github.com/jiaopengzi/pbi-utils/releases
下載地址-gitee(國內使用者):https://gitee.com/jiaopengzi/pbi-utils/releases
下載地址-網路硬碟:https://pan.baidu.com/s/1wMi0GbRA23YvRBjpZcwWFg?pwd=jiao
pbi-utils-portable-x.x.x.x.zip 行動式,zip 檔案解壓後找到 pbi-utils.exe 即可使用。
pbi-utils-setup-x.x.x.x.exe 安裝檔案,雙擊安裝即可使用。
支援的 pbix 檔案需要是 Power BI Desktop 版本: 2022年10月+ ,作業系統: win10+ 。
首頁介面
在做使用檔案前,我們先說一下我的基本思路。說來也比較簡單,就是通過單獨的 json 組態檔,把我們需要的一些設定單獨解耦出來。我通過操作組態檔即可完成 Power BI 調整需求。
先來交代一下,我們一般拿到的都是業務資料,建立基礎的報告模型殼子就可以加個 pbi-utils。
依然使用之前分享給大家的 demo 資料(https://jiaopengzi.com/1435.html)
我們拿到的是一個只匯入了業務資料,沒有報告頁面的 pbix 檔案。
首先我們需要對我們 pbix 檔案進行 json 組態檔初始化。
內容頁數規則:只能是 1-99 的整數,如果需要多個二級分類,則使用英文半形逗號分開;其它內容無法輸入。
下圖所示,我們以為 C:/desktop/demo/demo.pbix
為業務模板,內容頁數:3,4 表示我們需要兩個二級分類的頁面導航,同時第一個分類內容頁數為3頁,第二個分類的內容頁數為4頁。
當然還有一個頁面 URL 名稱是否使用隨機值,這目的其實是為了偽頁面許可權準備的,在視訊中我們再介紹。
點選初始化後即可得到我們 json 組態檔C:/desktop/demo/demo.json
在 模板度量值 下選擇前面初始化的C:/desktop/demo/demo.json
檔案即可看到模板度量值。
我把我常用的一些模板度量值做成了模板給到大家。當然這些都可以自定義,當你每一次儲存的時候,下次初始化的時候就將使用你儲存過的模板度量值作為模板。所以大家可以根據自己需要增減。
如果我們前面的 pbix 模板中有度量值了的話,請不要和這裡的度量值重名。
度量值類別中我們增加了一個 報表重新整理時間,如果啟用勾選去掉,則是按照自動重新整理時間來顯示,打上勾則是按照賦值的內容顯示。
圖片 URL 相容 圖片的 URL 連結和 SVG 格式。
可以通過右鍵進行 刪除、編輯和多行輸入;多行輸入欄位間使用 |
分割,多行用換行。
記得修改以後要儲存。
在 頁面編輯 下選擇前面初始化的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:無許可權提示頁,使用者無許可權的時候跳轉的頁面。
許可權類別初始化主要是針對 RLS 。如果沒有 RLS 需求的則可以跳過當前設定。
在 許可權類別初始化 頁面選擇前面初始化的C:/desktop/demo/demo.json
檔案即可看到許可權類別初始化頁面。
當前是沒有任何的 RLS 設定,如果需要則按照下列設定填寫儲存即可。
rls名稱:即你需要新增的 rls 規則的度量值名稱,字母下劃線和數位的組合輸入其它無效,不能與 pbix 中原有度量值重名。
表格:表格會通過前面我們的初始化獲得對應表格的名稱。
欄位:當表格更新後,即可獲得表格對應的欄位。
欄位值:欄位值是當前欄位所有的取值,目的是類別初始化後備用。
新增 RLS 規則
在 許可權表編輯 頁面選擇前面初始化的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類。
當然也可以通過新增按鈕增加更多的帳號設定,記得儲存。
在 編譯生成pbit 頁面,到了這裡,基本上我們的設定就做好了,可以生成我們需要的頁面了。
C:/desktop/demo/demo.json
。點選 生成pbit 按鈕,片刻後就能看到 pbit 建立成功的提示。
在我們 pbix 檔案的同目錄下會建立一個 pbix 名稱關鍵字資料夾。
開啟資料夾下的 pbit 檔案,確認載入,可以看到我們的頁面已經從最開始的只有一個空白頁,到現在符合我們設定的頁面建立成功了。
注意其中標註數位的 5 處變化:
同時關注 RLS, 在建模->通過以下身份檢視->可以看到我們多了一個 rls 角色。我們拉一個和我們組態檔中 RLS 許可權相關的維度矩陣。
當我們點選確認後,可以發現和我們設定的 RLS 是一致的。
還有包括頁面許可權等,請觀看我們的演示視訊。
在 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 中的表,所以在使用匯入功能前,一定要搞清楚這些度量值匯入後是否有意義。
在 pbix 2 DAX 頁面中,我們選擇對應的 pbix 檔案和對應的資料夾;點選按鈕 匯出DAX。
我們開啟提示的路徑,就可以看到匯出的度量值了。
匯出的度量值中,名稱中有一個分隔符 ][
分隔符前是存放度量值的表,分隔符之後是度量值名稱。
在匯出的度量值中,最前面的註釋是後續匯入需要的,請不要隨意刪除。
@description:度量值描述。
@displayFolder:度量值所在資料夾。
@formatString:度量值的格式化字串。
@dataCategory:度量值的資料類別。
DAX 2 pbix 和 pbix 2 DAX 就是一個逆向的過程。
首先需要讀取到匯入的 pbix 檔案,目的是拿到對應的度量值表,讀取完成後,可以選擇對應的度量值表。
選擇上述匯出的度量值資料夾,點選 匯入DAX。
可以看到提示訊息,在我們需要匯入的 C.pbix 檔案的同目錄下,建立了一個 C.pbit 檔案。開啟檢視,可以看到資料夾裡面的度量值都匯入進來了,和前面 pbixA 2 pbixB一樣,我們看到有黃色歎號,這是因為我們的 C.pbix 中並沒有我們 A.pbix 中的表。
在關於頁面主要是我們的聯絡方式、使用檔案以及我們的視訊課推介,我們做了中文和英文兩種語言的顯示。可以通過下方語言選擇切換。
中文介面顯示
英文版介面顯示