計(jì)算組的妙用??!頁(yè)面權(quán)限控制

需求描述:
某些特殊的場(chǎng)景下,針對(duì)某頁(yè)看板,需要進(jìn)行數(shù)據(jù)權(quán)限卡控,但是又不能對(duì)全部的數(shù)據(jù)進(jìn)行RLS處理,這種情況下可以利用計(jì)算組來解決這個(gè)需求。

實(shí)際場(chǎng)景

  • 事實(shí)表包含產(chǎn)品維度和銷售維度

  • 兩個(gè)維度屬于同一公司下面的不同架構(gòu)體系

  • 要求用戶在查看不同頁(yè)面的時(shí)候,根據(jù)不同的體系進(jìn)行控權(quán)

案例數(shù)據(jù)




數(shù)據(jù)比較簡(jiǎn)單,分別是銷售維度、產(chǎn)品維度、事實(shí)表以及權(quán)限表。

模型關(guān)系如下圖:

構(gòu)建基礎(chǔ)度量值:

Amt = 
SUM ( 'Fact'[銷售金額] )
Qty = 
SUM ( 'Fact'[銷售數(shù)量] )

將其拖拽出來,如下:

為了方便給大家展示,白茶這里拖拽了兩個(gè)一模一樣的圖表。

注意,不單是頁(yè)面權(quán)限,針對(duì)不同可視化的數(shù)據(jù)權(quán)限控制辦法也是一樣的。

解決思路

利用DAX函數(shù),復(fù)制銷售維度和產(chǎn)品維度


不與其他表建立模型關(guān)系

配置RLS權(quán)限

VAR AccessCount =
    CALCULATETABLE ( VALUES ( 'Access'[產(chǎn)品權(quán)限] ), 'Access'[用戶姓名] = USERNAME () )
RETURN
    'RLS_Product'[產(chǎn)品] IN AccessCount
VAR AccessCount =
    CALCULATETABLE ( VALUES ( 'Access'[銷售權(quán)限] ), 'Access'[用戶姓名] = USERNAME () )
RETURN
    'RLS_Dep'[銷售代表] IN AccessCount

添加計(jì)算組

打開Tabular,選擇創(chuàng)建計(jì)算組

CALCULATE (
    SELECTEDMEASURE (),
    KEEPFILTERS ( TREATAS ( VALUES ( 'RLS_Product'[產(chǎn)品] ), 'Dim_Product'[產(chǎn)品] ) )
)
CALCULATE (
    SELECTEDMEASURE (),
    KEEPFILTERS ( TREATAS ( VALUES ( 'RLS_Dep'[銷售代表] ), 'Dim_Dep'[銷售代表] ) )
)

到這里,我們的所有設(shè)置基本完成

效果如下

回到PowerBI的兩個(gè)頁(yè)面,分別添加計(jì)算組到頁(yè)面篩選


我們代入一下T1這個(gè)用戶來看看兩個(gè)頁(yè)面的數(shù)據(jù)

產(chǎn)品權(quán)限

銷售權(quán)限

補(bǔ)充

  • 如果使用RLS配置角色直接控制銷售維度和產(chǎn)品維度,那么整個(gè)數(shù)據(jù)模型都會(huì)進(jìn)行過濾

  • 一個(gè)RLS設(shè)置兩張表,二者是取交集

  • 兩個(gè)RLS設(shè)置兩張表,二者是取并集

  • DAX中沒有函數(shù)可以獲取到用戶的RLS角色名稱

  • 可視化組件的權(quán)限設(shè)置與上面一致,區(qū)別在于卡控的是單獨(dú)的可視化篩選,而不是頁(yè)面篩選


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容