Power BI 系列 - 權限設計 通用權限, 父子權限(導入方式)


代碼下載 https://github.com/zengxinwen/PowerBI

視頻下載   

鏈接:https://pan.baidu.com/s/1JbhCQMcfdbTYf-byKVPE7A 
 提取碼:8ytz 

 

1.具體步聚

1.創建權限表 ,在模型中設置關聯

2.PowerBI 管理角色,並且設置限制的DAX表達式

 

2.通過權限

1.模型中,有 (用戶收入信息, 部門表, 用戶部門權限表 ,用戶表)

收入信息

 

 

 部門表

 

 

   用戶部門權限表

 

 

 用戶表

 

模型的關系 (注意這里使兩個方向並且在兩個方向應用安全篩選器,都打上勾了)

 

 

 2.選擇POWER BI菜單欄,建模, 管理角色

表達式  '用戶'[賬號]=USERPRINCIPALNAME()

表達式的含就是,是否等於獲得賬號, 這個USERPRINCIPALNAME() 可以獲得Power bi當前的郵箱。如果是power bi server 可以換成userName(),獲得windows 賬號

 

 

  

  3.進行測試

 

 

 

針對通過權限,還有一種設計方法,不需要用戶表。

 沒有,用戶表,沒有在兩個方向上應用篩選器。

 

 

表達式

'部門'[部門] =CALCULATE(VALUES('部門'[部門]),'權限'[賬號]=USERPRINCIPALNAME())

表達式 ,查詢當部門表當前行的部門ID 並且在權限表中當前賬號的部門ID的里面。

 

 

 

2.父子權限設置

父子權限關系圖如下:

 

 

 1 在部門表中 創建父子路徑字段, 如圖所示 ,可以得到一個部門所屬節點的完整情況。

 

 

路徑 = PATH('部門'[部門],'部門'[父部門])
 
2.表達式

 

 

'部門'[部門] in
SELECTCOLUMNS ( Filter( GENERATE( filter('權限','權限'[賬號]=USERPRINCIPALNAME()) ,'部門'), PATHCONTAINS('部門'[路徑],'權限' [部門]) ),
"部門", '部門'[部門])

  

表達式分析。

1.GENERATE( 權限表等於當前用戶, 部門表)   這個兩個表進行cross join 得到新表

2.在新的基礎中進行過濾,過濾條件是 PATHCONTAINS('部門'[路徑],'權限' [部門])),"部門",  '部門'[部門])

就是當前賬號,是不是在這個路徑中能找到, 這樣能能把所有含這個節點的路徑都找到,即找到所屬節點。

3. 在新表找到對應部門,然后用只在新表表中 部門字段

4.取出部門字段就 我們的所屬部門及本部門, 使用 in 表達式。  

 

測試一下,我使用的我的賬號, 我是最高級,應該可以看到所有的。如圖所示

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM