不通過行級安全性,我們又如何解決Power BI數據屏蔽這一現實問題呢?
到目前為止,我們都知道可以通過行級安全性方法限制對數據的訪問。但是,我最近遇到的一個新的問題是:“銷售員希望在銷售報表看到彼此的銷售信息,但是又不能看到其他人的名字!那我們如何在Power BI中做到這一點?”
以上操作與行級安全性方法有所不同。在這種情況下,我們希望用戶看到其他人的信息,甚至知道他們的銷售量,但是我們不希望他們看到他的名字。
這比行級安全性更像是數據屏蔽的一種解決方法。以下我們會通過這篇文章與大家分享這個方法。
數據關系
我使用的是帶有兩個表的非常簡單的數據集;銷售員工信息表和銷售信息表;
這不是行級安全性
在這里,我重申一遍,這不是行級安全性。在這種情況下,我們顯示了整個數據行。但是,我們對部分數據做了隱藏處理,因為它們是敏感列。
隱藏敏感列
采取這種方法的第一步是隱藏用戶不能看到的列。例如; 用戶名稱、電子郵件、地址、電話號碼等。
在我的這個例子中;我將下面的所有列都做了隱藏處理。
使用MaskedUserName列創建可視化
現在有了maskedUserName列,我們可以使用它來創建可視化。由於敏感信息列是隱藏的,因此用戶無論如何都無法看到它們。
如圖所示,當用戶登錄到報表時,他/她們不知道被屏蔽的用戶是誰(如菠蘿、草莓和大西瓜)。從用戶的角度來看這些細節是完全隱藏的。但是,用戶在不知道是誰的情況下卻又可以看到他們的銷售金額。
當前用戶
到這,大家肯定想了解:怎么做到啊?現在,我們說下實現的具體的方法:通過使用UserPrincipalName函數的度量,我們可以輕松實現這一目標;
CurrentUser = if(
sum(SalesInfo[Number])&&
SELECTEDVALUE('SaleUserInfos'[Email])=USERPRINCIPALNAME(),
SELECTEDVALUE('SaleUserInfos'[Name]))
這意味着僅顯示已登錄用戶的用戶名。
你可以看到,當前我根據當前用戶進行了一些顏色格式化,我做了表列的背景色;
BackgroundColor = if(not ISBLANK([CurrentUser]),"light green","light grey")
無需行級安全配置
到這里,你也可以發現,實現這個效果,我並沒有通過行級安全性配置。而且不用創建任何角色,也無需將用戶分配給這些角色。因為這不是行級安全性。但此方法只是從用戶的角度隱藏敏感信息而已。
最佳實踐
對於實現,我建議用合適的數據體系結構。在這種情況下,由於某些用戶可能是可以使用Power BI Desktop創建報表的數據可視化工具,因此我建議你使用共享數據集的方式。如果你采用這種方法,即使用戶Power BI Desktop也只能看到隱藏后的數據。
總結
數據屏蔽不是行級安全性。它只是通過我們用於一些安全邏輯僅僅來顯示部分非敏感信息。
推薦閱讀
馬上報名 | "玩轉數據,智啟未來"Power BI Workshop與您相約618
技術交流
1.Power BI免費下載:http://www.yeacer.com/
Microsoft Power BI Desktop中文最新版:下載地址
2.歡迎加入的Power BI技術群,目前正在學習階段,有興趣的朋友可以一起學習討論。
Power Data技術交流群:702966126 (驗證注明:博客園Power BI)
更多精彩內容請關注微信公眾號:悅策PowerBI
如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕,您的“推薦”將是我最大的寫作動力!歡迎各位轉載。