相信近期Powerbi推出的外部工具功能,越來越多的PowerBI愛好者開始嘗試下載Tabular Editor來玩弄一把,特別是現階段,如果需要做度量值計算組功能,也只有Tabular Editor可以勝任,甚至連原生的PowerBIDeskTop都不支持。
誠然Tabular Editor已經非常優秀且具有非常豐富的擴展接口,供高級用戶使用,為何還需要PBI催化劑的存在呢?本篇暫且不說PBI催化劑有而Tabular Editor沒有的功能,僅對兩者共有,都能實現的一些高級應用特別是批量性應用來作對比,告訴大家PBI催化劑有其更大的易用性和強大性。
背景介紹
Tabular Editor是一款獨立的軟件,Winform架構,同時亦兼有命令行訪問方式,並且作者還打造了一個Wrapper輪子,使.NET程序更簡單方便地調用SSAS接口。
其github開源地址為: https://github.com/otykier/TabularEditor,若僅需要下載其最新版本,可跳轉到此網址去下載: https://github.com/otykier/TabularEditor/releases 。每次到此網址去查看更新日志,都會讓筆者感到興奮不已,隨着軟件的更新,功能更強大,穩定性越來越好,特別是最近修復了中文字符顯示的問題,太讓筆者感到開心。
難能可貴的是,這樣一款非常小眾的開源軟件,作者把wiki介紹做得非常完善,PBI催化劑很多靈感都是從其現有功能及介紹而來,特別是其腳本功能,網址為: https://github.com/otykier/TabularEditor/wiki/Useful-script-snippets
PBI催化劑大量的功能實現的底層代碼,借且於Tabular Editor的開源代碼參考及其Wrapper輪子TOMWrapper實現,在此真的非常感謝Tabular Editor的作者的無私奉獻。
功能對比
在Tabular Editor里,其高級的功能,多數在於使用高級腳本的方式來擴展實現的,但能夠使用腳本,必須會一些C#的編程技術,否則可能只能借助其Wiki上寫的例子簡單操作下,很難有能力駕馭住,當然有了PBI催化劑后,當有共性且高頻使用的,筆者也已經將其封裝起來,實現更為友好地界面式操作,無感底層的代碼級別的復雜度。
一、批量導出導入模型屬性數據
在Tabular Editor里,其實現方式,使用高級腳本來訪問數據模型。如下圖所示:
除了上述說到的需要掌握C#語言才能編寫外,退一萬步,就算已經掌握了語言,在Tabular Editor作者所使用的方式中,他沒有將數據導出到Excel文件,而是使用tsv格式(以制表符為分隔符的文本文件,類似以逗號分隔的csv文件)。
此方法天然地對導出數據中的萬一包含制表符換行符等符號時,非常容易產生數據錯亂問題。
因為這個問題,我還曾經在github上向作者發出一條issues反映這個問題。https://github.com/otykier/TabularEditor/issues/307
同樣一個問題是,在導出的對象屬性過程中,不知道該對象有什么屬性,就難於對其進行導出,只能查明此對象具體有有些屬性,再通過傳入屬性字符串名稱的方式才能拿到最終此屬性的信息。
針對上述提到的三大痛點問題,且看在PBI催化劑中如何將其一一破解,帶出一個超級棒的操作流程與體驗。
- PBI催化劑中,無需任何代碼,即可界面方式完成所需導出的對象的選擇及其對應的屬性的進一步細分選擇。
如下圖的紅框3部分,想要什么屬性,就勾選什么屬性,如果固定化需要哪些屬性,也可以自行字符串拼接完成。
- 導出的數據結果是在Excel表格內,不受換行符、制表符等影響錯位問題。
數據在Excel表格里,下一步進行查看、編輯也帶來無限地便利,就算上述導出許多不相關的屬性也不必介懷,簡單刪除或隱藏某些屬性列即可,整個過程非常流暢。
- 除了導出功能外,導入功能同樣體驗更佳
因為沒有制表符、換行符等問題,在Excel表格上快速加工好自己想整理的屬性數據如顯示文件夾、數字顯示格式等。只需反向操作,更新屬性時,選擇當前修改好的屬性信息,即可完成導入更新操作。
相對來說,Tabular Editor還要按要求加工好數據,再導出為tsv格式,再進行導入,過程非常麻煩。且存在換行符、制表符錯亂問題,導出的數據需要整理很長時間,導入數據時,如果需要修改DAX表達式等含有換行符、制表符的,最終只能得到錯誤的結果。
- 在新建、刪除操作上PBI催化劑體驗亦更好
上述導出的對象屬性清單,在PBI催化劑中,甚至可以復用此清單,只需進行Excel環境的篩選、刪除、新增操作,最終確定需要新建或刪除的記錄,直接一鍵完成對模型對象的新增或刪除操作。
而對應的Tabular Editor來說,實現這些效果,要寫很長的代碼段來完成。
二、批量格式化DAX表達式
在Tabular Editor里,有一個很好的交互效果,程序可識別當前界面選擇的對象如度量值、計算列等對象。可以多選。最終通過遍歷的方式拿到選擇的清單如:Selected.Columns、Selected.Measures等。
誠然,這些為批量性操作帶來了可能,但單從界面操作來說,還是不能直接零代碼實現,就算使用了高級腳本的代碼編寫操作,因為其Selected對象不能跨文件夾選擇對象的原因(多個顯示文件夾里的多個度量值不能同時選定,只能某個顯示文件夾里的度量值可批量選定),也是不能真正一次性選擇到自己想格式化的完整 清單。
這些種種的缺陷和弊端,在PBI催化劑里,都已經不是問題,將DAX表格式清單導出Excel后,然后簡單進行篩選操作,即可完成需要格式化的清單選擇,然后下一步驟就是耐心等待格式化的完成(調用的是DaxFormatter的網站接口,國外網站訪問有些慢)。
三、按關鍵詞查找某個對象信息
當模型越來越復雜后,想查找某個對象時,已經不能僅僅憑記憶來完成此事,搜索功能是必然需要的。
在Tabular Editor的界面來說,其提供了Filter的功能,可以在下圖紅框處輸入關鍵字,然后對模型進行檢索,返回包含關鍵字的對象信息。
上述所示的結果,其搜索的范圍僅為對象的Name屬性如度量值的名稱,但如果需要搜索的是其他屬性時,其使用的方式就變得復雜許多,同樣需要用到C#語言的知識,如果不懂C#將難以操作。
例如要查看度量值的表達式內容包含SUM關鍵字::Expression.ToUpper().Contains("SUM"),編寫不容易,修改也很不容易。
具體的方式可參閱以下網址:
https://github.com/otykier/TabularEditor/wiki/Advanced-Filtering-of-the-Explorer-Tree
在PBI催化劑里,特別對於高頻的DAX表達式(度量值、計算列、計算表),采用名稱和表達式關鍵詞一並查詢,全程界面操作,體驗也是非常棒。查詢到結果后,對其結果進行編輯后的保存、刪除及對應的依賴與反依賴關鍵都在同一界面完成,也是非常流暢符合實際的操作流程。
當然其他更為復雜的屬性搜索,可以重新回到遍歷屬性功能里,將所有屬性都遍歷導出到Excel中,再從Excel中簡單的查找、篩選功能,發現最終想找到的對象及其信息。如下圖中的partition對象,將其所屬的表信息、對應的原始查詢信息,都輕松地查詢得到。如果讓TabularEditor通過其界面來完成,將是非常復雜的過程。
四、批量生成擴展度量值
在Tabular Editor的高級腳本Wiki中,也提到這個使用場景,的確非常剛需,能夠一次性批量生成眾多度量值,這個功能在實際項目里,太讓人喜愛了。
在PBI催化劑里,最起碼的提升是零代碼化了,整個操作體驗,更符合使用工具人的習慣。
結語
Tabular Editor無疑是一款非常優秀的PowerBI建模輔助工具,特別對於企業級PowerBI項目來說,面對復雜的數據模型,沒有工具的提升,單純使用微軟原生的開發工具,效率非常低。
而在Tabular Editor之上,PBI催化劑雖然技術含量不高,但論及其使用友好度,也是較Tabular Editor更勝一籌,青出於藍。
同時也因為兩者的開發者知識體系及面對的服務群體不同,PBI催化劑,更適用於沒有.NET語言基礎的純工具使用群體,特別是從Excel用戶過渡而來的PowerBI愛好者。
在批量性操作方面,相信PBI催化劑不會令任何一位PowerBI資深愛好者失望,你們苦苦找的外部工具本土化的就是PBI催化劑莫屬了。