Power BI企業(yè)級權(quán)限控制+頁面控制部署終極方案

這篇文章籌備了很久,最近正好有一個(gè)合適的契機(jī),終于可以和大家見面了啼辣。Power BI在權(quán)限控制和頁面控制方面柳弄,對于大多數(shù)人而言并不是一個(gè)很好用的功能玖媚,結(jié)合自己的經(jīng)歷,準(zhǔn)備直接給大家分享終極方案。

內(nèi)容過多,有些細(xì)節(jié)可能照顧不到破婆,有疑問的可以留言,我會迭代上去胸囱。
導(dǎo)航欄效果

背景

20年我開始搭建企業(yè)級的Power BI模型祷舀。和以前作為分析師以個(gè)人分析為目的并不相同,企業(yè)級的部署需要考慮的內(nèi)容很多,我選擇了使用Power BI報(bào)表服務(wù)器的部署方案蔑鹦。

首先面臨的問題就是如何給用戶做權(quán)限控制夺克,如何讓用戶使用Power BI報(bào)表像使用網(wǎng)頁一樣箕宙,讓有權(quán)限的人看到應(yīng)該看到的報(bào)表頁面嚎朽。

在Power BI原有的功能中,雖然可以做行級別權(quán)限控制柬帕,但不夠靈活哟忍。對于頁面控制+權(quán)限控制更是無力。尤其是對于初入Power BI的新手陷寝,權(quán)限控制簡直是個(gè)災(zāi)難锅很。

后來經(jīng)過不斷的嘗試和反復(fù)的摸索學(xué)習(xí),最終找到了一套簡單的維護(hù)方案凤跑。

方案的主體部分爆安,參考了佐羅老師《BI真經(jīng)》高級版的內(nèi)容。

什么情況下使用該方案仔引?

該權(quán)限控制方案扔仓,適合報(bào)表數(shù)量非常多,比如100+咖耘,權(quán)限控制要求非常復(fù)雜翘簇,比如使用幾十個(gè)字段甚至更多字段進(jìn)行權(quán)限控制,那么這個(gè)方案就是你要找的最好的方案儿倒。如果你僅僅只有幾個(gè)賬號版保,權(quán)限相對穩(wěn)定,那么這個(gè)方案可能并沒有那么優(yōu)秀夫否。

各種Power BI部署方案與該權(quán)限控制方案的配合

Power BI Rerpot Server

  • 報(bào)表服務(wù)器的配置服務(wù)賬戶彻犁,目前在報(bào)表服務(wù)器自身來說是三種:內(nèi)置-虛擬服務(wù)賬戶內(nèi)置-網(wǎng)絡(luò)服務(wù)凰慈、域賬戶汞幢。其中推薦使用的也就是大多數(shù)人都在使用的,使用域控制溉瓶。
    Power BI Report Server部署與配置詳解
  • 權(quán)限控制依然需要建立企業(yè)的域賬號急鳄,通過預(yù)控管理賬戶和密碼作為第一道權(quán)限控制。
  • 報(bào)表服務(wù)器的部署堰酿,一共有兩道權(quán)限疾宏。第一道是域賬號,也就是必須先擁有域賬號才能登錄報(bào)表服務(wù)器触创,然后是Power BI的權(quán)限控制坎藐,只有域賬號訪問Power BI是看不到任何數(shù)據(jù)了,全部是大叉子。咱們這個(gè)權(quán)限部署方案岩馍,指的是在你使用域賬號登錄到后臺以后碉咆,點(diǎn)擊查看Power BI某個(gè)模型的權(quán)限,控制范圍在Power BI模型中蛀恩。
  • 在以前的方案中疫铜,權(quán)限調(diào)整有2-3次,第一次是通過報(bào)表服務(wù)器后臺的管理文件夾創(chuàng)建域用戶賬號双谆。
    管理文件夾
  • 第二次是在報(bào)表服務(wù)器上壳咕,某個(gè)模型的設(shè)置中,選擇模型的管理選項(xiàng)顽馋,可以看到安全性谓厘,安全性可以獨(dú)立設(shè)置,也可以使用管理文件夾中維護(hù)的域賬號寸谜。


    安全性
  • 第三次是行級別安全性竟稳,這個(gè)就是咱們本次方案涉及到的部分,正常是通過配置角色熊痴,在角色中對不用的維度表中的字段做權(quán)限控制他爸,使用當(dāng)前方案后,則在這一步不需要做任何操作愁拭。


    行級別安全性

創(chuàng)建域賬號以后讲逛,將用戶姓名、用戶賬號及對應(yīng)的權(quán)限維護(hù)到權(quán)限配置表岭埠。然后按照后面的方法配置盏混,就可以實(shí)現(xiàn)權(quán)限控制和頁面控制了。

Power BI Pro

  • Power BI Pro和報(bào)表服務(wù)器的大同小異惜论,區(qū)別在于如果使用了這個(gè)權(quán)限控制方案许赃,報(bào)表發(fā)布到Pro賬戶之后,不需要再設(shè)置安全性馆类。


    安全性
  • 也就是下面這個(gè)操作可以不用做混聊,這樣權(quán)限部署更加的靈活,而且部署的步驟也減少了乾巧。


    行級控制

SSAS + Power BI

  • 這個(gè)方案沒有直接操作過句喜,但是原理雷同。
  • 將Excel配置表加載到SSAS模型中沟于,SSAS里面是可以寫計(jì)算組的咳胃,通過計(jì)算組控制,完全繞過了角色配置旷太。
  • 權(quán)限需要調(diào)整時(shí)展懈,調(diào)整的是Excel文件销睁,SSAS模型不用調(diào)整,只做刷新即可存崖。

Power BI Preminum

和Power BI Pro雷同冻记,但沒有親測過。

總結(jié)

  • 所有的權(quán)限對應(yīng)關(guān)系都在Excel中提前做好来惧,比如使用地區(qū)字段進(jìn)行控制冗栗,分別給不同的人分配不同的地區(qū)權(quán)限,然后在Power BI模型中刷新违寞,通過計(jì)算組判斷度量值來做權(quán)限控制贞瞒,包括頁面控制偶房。
  • Pro用了這個(gè)方案趁曼,不用在網(wǎng)頁賬號再配制一次權(quán)限,報(bào)表服務(wù)器棕洋,從原來的配置2-3次挡闰,減少到1-2次。
  • 該方案解決的是Power BI模型內(nèi)部的權(quán)限

Power BI權(quán)限控制流程

整個(gè)權(quán)限控制是由兩個(gè)大的部分構(gòu)成:

  • 如何自動(dòng)完成員工入職或離職賬號掰盘。比如根據(jù)OA賬號密碼摄悯,自動(dòng)創(chuàng)建域賬號。
  • 如何自動(dòng)根據(jù)已調(diào)整的賬號配置相關(guān)的權(quán)限

本次重點(diǎn)講的是第二個(gè)部分愧捕,第一個(gè)部分目前我尚未整理出更好的方法奢驯,這部分是需要有相關(guān)開發(fā)能力作為支持才可以完成。

進(jìn)入正題

思路講解

  • 先在Excel中做好頁面次绘、權(quán)限瘪阁、角色的配置,然后加載到PBI進(jìn)行權(quán)限控制的處理邮偎。這部分控制使用計(jì)算組來做控制管跺,解決了使用角色配置繁瑣的問題。
  • 除了導(dǎo)航頁禾进,其他全部隱藏豁跑,在導(dǎo)航頁根據(jù)當(dāng)前用戶做頁面權(quán)限的判斷,進(jìn)入頁面后自動(dòng)做行級別權(quán)限的判斷泻云,達(dá)到最終控制的目的艇拍。

技術(shù)拆解

如何制作配置表

配置表在Excel中完成,簡單方便快捷宠纯,若定位于實(shí)現(xiàn)系統(tǒng)自動(dòng)化娇哆,另當(dāng)別論治力。配置完成后Power BI直接讀取最新記錄。需要三張Excel配置表,用于定義痊班,頁面配置缨称、用戶權(quán)限睦尽、角色權(quán)限当凡,加載到模型里面的是頁面配置用戶權(quán)限兩張表宁玫。

Excel配置表中的數(shù)據(jù)從何而來眷射?
  • 頁面配置 來源于你要做的Power BI看板芥被,比如你想要做10個(gè)看板席镀,并且10個(gè)看板分屬3個(gè)部門,那么在頁面配置表屎篱,就是將3個(gè)部門維護(hù)到[部門名稱]字段葵蒂,10個(gè)看板維護(hù)到后面的頁面描述、頁面標(biāo)題秦士、報(bào)表標(biāo)題等做好對應(yīng)即可。

  • 權(quán)限配置 用戶權(quán)限配置來源于兩部分伍宦,一部分是頁面權(quán)限,另一部分是行級別權(quán)限乏梁,我將相關(guān)內(nèi)容做到了一個(gè)權(quán)限表中关贵。這里面的用戶名稱揖曾、用戶賬號,對應(yīng)的就是報(bào)表服務(wù)器域賬號或者Power BI RroPro賬號。至于這些賬號怎么進(jìn)入到Excel中绿鸣,目前的方案還只能是手工維護(hù),如果有開發(fā)條件暂氯,是可以根據(jù)入職或離職的員工賬號潮模,直接自動(dòng)寫入到Excel表中的,或者可以將權(quán)限表直接維護(hù)到數(shù)據(jù)庫中痴施,直接用任務(wù)修改數(shù)據(jù)庫里面的權(quán)限內(nèi)容擎厢,道理是一樣的究流。

對于域賬號,可以根據(jù)入職或離職的員工信息动遭,自動(dòng)創(chuàng)建域賬號梯嗽,同時(shí)保持和OA的賬號密碼一致,實(shí)現(xiàn)單點(diǎn)登錄沽损,然后再將該域賬號寫入到權(quán)限表灯节,這么Power BI的權(quán)限控制就可以實(shí)現(xiàn)全自動(dòng)了。

  • 角色配置 角色的配置是我為了減少權(quán)限配置的成本增加的功能绵估,因?yàn)閷?shí)際維護(hù)會有很多人是一樣的角色炎疆,開一樣的權(quán)限,只需要選擇角色国裳,自動(dòng)匹配到對應(yīng)的權(quán)限即可形入,不用再為每一個(gè)人配置詳細(xì)的權(quán)限。
頁面配置

頁面配置表缝左,需要幾個(gè)關(guān)鍵的字段亿遂,其他的根據(jù)自己的實(shí)際需求添加,參考了佐羅老師的方案渺杉,做了一些調(diào)整蛇数。

該配置表為“”,相關(guān)引用使用的引用是越,而非單元格耳舅,可以減少數(shù)據(jù)調(diào)整導(dǎo)致的錯(cuò)誤。不了解的請補(bǔ)充下關(guān)于“”的知識后再繼續(xù)倚评。

頁面權(quán)限表可以無限向下或向右拓展

自然序號  = IF( [@部門名稱] <> "", ROW()-ROW(頁面配置表[#標(biāo)題]), "" )
內(nèi)容序號  = IF( [@自然序號] <> "", [@自然序號] - COUNTBLANK( OFFSET( 頁面配置表[[#標(biāo)題],[自然序號]], 0, 0, ROW( ) - ROW( 頁面配置表[[#標(biāo)題],[自然序號]] ) ) ), "" )
部門序號  = IF( [@部門名稱] <> "", COUNTBLANK( OFFSET( 頁面配置表[[#標(biāo)題],[自然序號]], 0, 0, ROW( ) - ROW( 頁面配置表[[#標(biāo)題],[自然序號]] ) ) ), "" )
頁面序號  = IF( [@部門名稱] <> "", [@自然序號] - MINIFS( [自然序號], [部門名稱], [@部門名稱] ), "" )
部門編號  = IF( [@部門名稱] <> "", [@部門序號]*1000+[@頁面序號], "" )
部門名稱  公司部門名稱
頁面描述  頁面功能的描述
是否啟用  是否啟用對應(yīng)的報(bào)表頁
頁面標(biāo)題  報(bào)表頁的名稱
報(bào)表標(biāo)題  報(bào)表頁中浦徊,用于自動(dòng)顯示報(bào)表標(biāo)題
......
頁面配置表
角色權(quán)限

當(dāng)用戶特別多時(shí),就需要使用角色進(jìn)行配置天梧,可以減少維護(hù)成本盔性。相關(guān)內(nèi)容以“;”做間隔。

角色權(quán)限表可以無限向右和向下拓展

角色編號  使用自然順序創(chuàng)建角色編號
角色名稱  增加角色的名稱呢岗,自定義設(shè)置
快速配置  個(gè)人增加的一個(gè)快速配置頁面權(quán)限的功能
頁面權(quán)限  對應(yīng)角色擁有的頁面權(quán)限
城市      根據(jù)城市字段做權(quán)限控制
產(chǎn)品類別  根據(jù)產(chǎn)品類別做權(quán)限控制
......
角色配置

角色配置表中冕香,頁面權(quán)限部分,我做了兩個(gè)中間表敷燎,可以快速方便的維護(hù)角色擁有的頁面權(quán)限暂筝,當(dāng)報(bào)表頁面特別多時(shí),該方式可以減少維護(hù)成本硬贯。該方式支持開通指定的頁面焕襟。

該部分通過Power Query完成。

let
    源 = Excel.CurrentWorkbook(){[Name="頁面配置表"]}[Content],
    篩選的行 = Table.SelectRows(源, each ([是否啟用] = 1)),
    刪除的其他列 = Table.SelectColumns(篩選的行,{"部門序號", "頁面編號", "部門名稱"}),
    更改的類型 = Table.TransformColumnTypes(刪除的其他列,{{"頁面編號", type text}, {"部門序號", type text}}),
    分組的行 = Table.Group(更改的類型, {"部門名稱","部門序號"}, {{"頁面權(quán)限", each Text.Combine([頁面編號],";"), type nullable text}}),
    添加的后綴 = Table.TransformColumns(分組的行, {{"頁面權(quán)限", each _ & ";", type text}})
in
    添加的后綴
部門名稱權(quán)限
let
    源 = Excel.CurrentWorkbook(){[Name="角色配置表"]}[Content],
    刪除的其他列 = Table.SelectColumns(源,{"角色編號", "角色名稱", "快速配置"}),
    篩選的行 = Table.SelectRows(刪除的其他列, each ([快速配置] <> null)),
    按分隔符拆分列 = Table.SplitColumn(Table.TransformColumnTypes(篩選的行, {{"快速配置", type text}}, "zh-CN"), "快速配置", Splitter.SplitTextByDelimiter("+", QuoteStyle.Csv), {"快速配置.1", "快速配置.2"}),
    用位置分列 = Table.SplitColumn(按分隔符拆分列, "快速配置.1", Splitter.SplitTextByRepeatedLengths(1), {"快速配置.1.1", "快速配置.1.2", "快速配置.1.3", "快速配置.1.4", "快速配置.1.5", "快速配置.1.6"}),
    按分隔符拆分列1 = Table.SplitColumn(用位置分列, "快速配置.2", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"快速配置.2.1", "快速配置.2.2"}),
    逆透視的其他列 = Table.UnpivotOtherColumns(按分隔符拆分列1, {"角色編號","角色名稱"}, "屬性", "序號"),
    刪除的列 = Table.RemoveColumns(逆透視的其他列,{"屬性"}),
    合并的查詢 = Table.NestedJoin(刪除的列, {"序號"}, 部門名稱權(quán)限, {"部門序號"}, "部門名稱權(quán)限分組", JoinKind.LeftOuter),
    #"展開的“部門名稱權(quán)限分組”" = Table.ExpandTableColumn(合并的查詢, "部門名稱權(quán)限分組", {"頁面權(quán)限"}, {"頁面權(quán)限"}),
    已添加自定義 = Table.AddColumn(#"展開的“部門名稱權(quán)限分組”", "頁面權(quán)限合并", each if [頁面權(quán)限] = null then [序號] else [頁面權(quán)限]),
    分組的行 = Table.Group(已添加自定義, {"角色編號","角色名稱"}, {{"頁面權(quán)限", each Text.Combine([頁面權(quán)限合并],";"), type nullable text}}),
    替換的值 = Table.ReplaceValue(分組的行,";;",";",Replacer.ReplaceText,{"頁面權(quán)限"})
in
    替換的值
角色頁面權(quán)限

最后使用Vlookup函數(shù)饭豹,將不同角色名稱對應(yīng)的頁面權(quán)限取值到角色表中即可鸵赖。

用戶權(quán)限

用戶權(quán)限表可以無限向下或向右拓展务漩,增加的列字段會在進(jìn)入Power BI時(shí),自動(dòng)做轉(zhuǎn)換處理它褪。

需要給當(dāng)前本地電腦饵骨,配置一個(gè)賬戶,使用UserPrincipalName()返回本地電腦的賬戶茫打,并賦予所有權(quán)限居触。

用戶名稱  新增使用用戶姓名
用戶賬號  用戶使用賬號
角色名稱  角色名稱 該部分可以通過做Excel數(shù)據(jù)有效性取值角色權(quán)限表中角色名稱列  
頁面權(quán)限  使用函數(shù),通過角色名稱匹配到該角色擁有的頁面權(quán)限
城市      使用函數(shù)老赤,通過角色名稱匹配到該角色擁有的城市權(quán)限
產(chǎn)品類別  使用函數(shù)轮洋,通過角色名稱匹配到該角色擁有的產(chǎn)品類別權(quán)限
用戶權(quán)限
加載頁面配置表

篩選保留是否啟用字段中不是null的值,調(diào)整數(shù)字字段為整數(shù)抬旺,正常加載弊予。
添加部門編號輔助列,為模型中關(guān)系建立做準(zhǔn)備开财。

let
    源 = Excel.Workbook(File.Contents("D:\桌面\學(xué)習(xí)課程\權(quán)限控制\權(quán)限控制配置表.xlsx"), null, true),
    頁面配置表_Table = 源{[Item="頁面配置表",Kind="Table"]}[Data],
    更改的類型 = Table.TransformColumnTypes(頁面配置表_Table,{{"自然序號", Int64.Type}, {"內(nèi)容序號", Int64.Type}, {"部門序號", Int64.Type}, {"頁面序號", Int64.Type}, {"頁面編號", Int64.Type}, {"是否啟用", Int64.Type}}),
    篩選的行 = Table.SelectRows(更改的類型, each ([是否啟用] = 1)),
    復(fù)制的列 = Table.DuplicateColumn(篩選的行, "頁面編號", "部門編號輔助"),
    更改的類型1 = Table.TransformColumnTypes(復(fù)制的列,{{"部門編號輔助", type text}})
in
    更改的類型1
加載結(jié)果
加載權(quán)限配置表

只要你做的配置表字段跟我一樣汉柒,那么就可以根據(jù)M公式還原出操作步驟。

let
    源 = Excel.Workbook(File.Contents("D:\桌面\學(xué)習(xí)課程\權(quán)限控制\權(quán)限控制配置表.xlsx"), null, true),
    權(quán)限配置表_Table = 源{[Item="權(quán)限配置表",Kind="Table"]}[Data],
    更改的類型 = Table.TransformColumnTypes(權(quán)限配置表_Table,{{"用戶名稱", type text}, {"用戶賬號", type text}, {"角色名稱", type text}, {"頁面權(quán)限", type text}, {"地區(qū)", type text}, {"產(chǎn)品類別", type text}}),
    逆透視的其他列 = Table.UnpivotOtherColumns(更改的類型, {"用戶名稱", "用戶賬號", "角色名稱"}, "權(quán)限類型", "擁有權(quán)限"),
    生成權(quán)限列表 = Table.TransformColumns(#"逆透視的其他列", {{"擁有權(quán)限", each List.RemoveItems( Text.Split( _ ,";" ) , {""} ) }}),
    #"展開的“擁有權(quán)限”" = Table.ExpandListColumn(生成權(quán)限列表, "擁有權(quán)限"),
    更改的類型1 = Table.TransformColumnTypes(#"展開的“擁有權(quán)限”",{{"擁有權(quán)限", type text}}),
    篩選的行 = Table.SelectRows(更改的類型1, each [擁有權(quán)限] <> null)
in
    篩選的行
加載結(jié)果
處理表關(guān)系

不需要做任何表關(guān)系處理责鳍,也不需要做角色配置碾褂。

計(jì)算組準(zhǔn)備

需要使用Tabular Editor軟件來完成。

連接需要操作的模型



在Tables文件夾上右擊選擇創(chuàng)建計(jì)算組
創(chuàng)建計(jì)算組

新建一個(gè)組薇搁,并根據(jù)自己的喜好命名斋扰,這里命名為啟用

點(diǎn)擊啟用,右側(cè)填寫以下內(nèi)容:

CALCULATE( 
    SELECTEDMEASURE() ,
    KEEPFILTERS( TREATAS( CALCULATETABLE( VALUES( '權(quán)限配置表'[擁有權(quán)限] ) , '權(quán)限配置表'[用戶賬號] = USERPRINCIPALNAME( ) , '權(quán)限配置表'[權(quán)限類型] = "地區(qū)" ) , '地理位置'[地區(qū)] ) ) ,
    KEEPFILTERS( TREATAS( CALCULATETABLE( VALUES( '權(quán)限配置表'[擁有權(quán)限] ) , '權(quán)限配置表'[用戶賬號] = USERPRINCIPALNAME( ) , '權(quán)限配置表'[權(quán)限類型] = "產(chǎn)品類別" ) , '產(chǎn)品'[產(chǎn)品類別] ) ) ,
    KEEPFILTERS( TREATAS( CALCULATETABLE( VALUES( '權(quán)限配置表'[擁有權(quán)限] ) , '權(quán)限配置表'[用戶賬號] = USERPRINCIPALNAME( ) , '權(quán)限配置表'[權(quán)限類型] = "頁面權(quán)限" ) , '頁面配置表'[部門編號輔助] ) ) ,
    { "可以添加其他篩選" }
)
BPI中看到的效果
制作導(dǎo)航頁
導(dǎo)航欄

看不懂的需要補(bǔ)一下Power BI按鈕的知識啃洋。

  • 1、左上角 當(dāng)前用戶 插入空白按鈕屎鳍,然后選擇按鈕文本使用度量值[用戶 當(dāng)前用戶]
用戶 當(dāng)前用戶 = "當(dāng)前用戶:" &  SELECTEDVALUE( '權(quán)限配置表'[用戶名稱], "管理員" )
  • 2宏娄、中間標(biāo)題使用空白按鈕賦予按鈕文本或單獨(dú)插入公司Logo
  • 3、右上角 模型日期 方法同當(dāng)前用戶按鈕
模型日期 = MAXX( all( '訂單' ), '訂單'[訂單日期] ) 
  • 4逮壁、使用切片器展示孵坚,將頁面配置表[部門名稱]字段,調(diào)整為橫向展示窥淆;
  • 5卖宠、該部分導(dǎo)航和右側(cè)的導(dǎo)航是兩套方案;使用空白按鈕制作忧饭,適合在特定場景使用扛伍,維護(hù)成本高,但可以直接點(diǎn)擊跳轉(zhuǎn)到對應(yīng)頁面词裤。
    每個(gè)按鈕需要四個(gè)度量值:按鈕文本刺洒、字體顏色鳖宾、邊框顏色、導(dǎo)航目標(biāo)唧喉、工具提示虏冻。其中字體顏色和邊框顏色使用一個(gè)度量值纱兑。有多少個(gè)按鈕就得配置多少套。
    這里利用了按鈕可以使用度量值的特性拇惋。
首頁 頁面控制 導(dǎo)航目標(biāo) 2000 = //頁導(dǎo)航 目標(biāo)
var t1 = SUMMARIZE( FILTER( '頁面配置表', '頁面配置表'[頁面編號] = 2000 ),'頁面配置表'[報(bào)表標(biāo)題] )
var t2 = UserPrincipalName() in VALUES( '權(quán)限配置表'[用戶賬號] )
return if( t2, t1, BLANK() )

首頁 頁面控制 懸浮文字 2000 = //頁導(dǎo)航 工具提示
var t1 = SUMMARIZE( FILTER( '頁面配置表', '頁面配置表'[頁面編號] = 2000 ),'頁面配置表'[頁面標(biāo)題] )
var t2 = UserPrincipalName() in VALUES( '權(quán)限配置表'[用戶賬號] )
return if( t2, t1, BLANK() )

首頁 頁面控制 按鈕文本 2000 = //按鈕文本
var t1 = SUMMARIZE( FILTER( '頁面配置表', '頁面配置表'[頁面編號] = 2000 ),'頁面配置表'[頁面標(biāo)題] )
var t2 = UserPrincipalName() in VALUES( '權(quán)限配置表'[用戶賬號] )
return if( t2, t1, BLANK() )

首頁 頁面控制 文本顏色 2000 = //邊框顏色 或 字體顏色
var t1 = SUMMARIZE( FILTER( '頁面配置表', '頁面配置表'[頁面編號] = 2000 ),'頁面配置表'[頁面標(biāo)題] )
var t2 = UserPrincipalName() in VALUES( '權(quán)限配置表'[用戶賬號] )
var t3 = if( t1 <> BLANK() && t2, "#1a1a1a", "#cccccc" )
return t3

可以實(shí)現(xiàn)有權(quán)限的高亮顯示,無權(quán)限的淺灰色顯示的效果抹剩。

  • 6撑帖、獲取更多視覺對象,搜索Text吧兔。需要Power BI賬號才可以使用磷仰。


公告欄 = 
"<br>"&
"1、成功祝賀Test公司上市境蔼,股票代碼 000000灶平,歡迎關(guān)注!"&
"<br>"&
"<br>"&
"2箍土、Test年銷售額突破100億逢享,連續(xù)5年增長超30%,成為行業(yè)新星吴藻,獲得獨(dú)角獸企業(yè)提名瞒爬;"&
"<br>"&
"<br>"&
"3、東北區(qū)連續(xù)3年出現(xiàn)下滑20%沟堡,建議重新評估市場前景侧但!"
  • 7、使用矩陣航罗,在行標(biāo)題設(shè)置中禀横,關(guān)閉漸變布局,將頁面配置表[部門名稱]粥血、[頁面描述]放到矩陣的行中柏锄,并拓展到下一級顯示;
    關(guān)閉漸變布局

將度量值[導(dǎo)航欄 保留]放到值中复亏,修改度量值展示名稱為“_”趾娃,縮小字段寬度至最小,達(dá)到隱藏的效果缔御。

特別注意:該步驟操作時(shí)抬闷,必須將本地電腦的用戶賬號放入Excel配置表中,否則將無權(quán)限查看任何數(shù)據(jù)刹淌。使用UserPrincipalName()饶氏,判斷當(dāng)前電腦本地用戶賬名讥耗,然后作為賬號維護(hù)。

為了安全該處沒有對沒賬號的用戶賦予所有權(quán)限疹启,而是必須維護(hù)本地賬號才可以查看古程。

導(dǎo)航欄 保留 = //用于篩選出符合當(dāng)前用戶權(quán)限的頁面,需要提前將本地電腦的用戶賬號添加到Excel配置表中喊崖,使用函數(shù)UserPrincipalName()挣磨,計(jì)算出當(dāng)前電腦的賬戶。
COUNT( '頁面配置表'[自然序號] )

這里講下為何要增加這樣一個(gè)操作荤懂,權(quán)限配置表中的權(quán)限是通過TREATAS函數(shù)與其他維度表掛在一起茁裙,其中頁面控制部分也是一樣,因?yàn)閇部門名稱]节仿、[頁面描述]都是在行上晤锥,本身無交互,只有當(dāng)前用戶頁面權(quán)限和與頁面相關(guān)的度量值交互時(shí)廊宪,才能產(chǎn)生篩選效果矾瘾。

舉例說明,比如使用地區(qū)做權(quán)限控制箭启,如果只放地區(qū)到矩陣壕翩,則無法直接產(chǎn)生只有當(dāng)前用戶有權(quán)限的地區(qū)分類,若增加一個(gè)銷售件數(shù)產(chǎn)生交互傅寡,則可以達(dá)到篩選的效果放妈。

這個(gè)原因是因?yàn)橛?jì)算組只能對度量值起作用,無法對表進(jìn)行篩選荐操。

  • 8芜抒、第7個(gè)部分和第8個(gè)部分是搭配使用,首先選擇矩陣中的一行托启,當(dāng)行唯一時(shí)挽绩,第8部分的按鈕得到唯一的導(dǎo)航目標(biāo),并且顏色變?yōu)榫G色驾中,點(diǎn)擊可以實(shí)現(xiàn)跳轉(zhuǎn)效果。
導(dǎo)航欄 文本 = //顯示文本
var t1 = SELECTEDVALUE( '頁面配置表'[頁面標(biāo)題] )
return if( ISBLANK( t1 ), "?? 請選擇一個(gè)頁面", "?? 點(diǎn)擊進(jìn)入" )

導(dǎo)航欄 顯示 = //懸停提示
SELECTEDVALUE( '頁面配置表'[頁面描述] )

導(dǎo)航欄 目標(biāo) = //導(dǎo)航目標(biāo)頁名稱
var t1 = SELECTEDVALUE( '頁面配置表'[頁面標(biāo)題] )
var t2 = UserPrincipalName() in VALUES( '權(quán)限配置表'[用戶賬號] )
return if( ISBLANK( t1 ) || ISBLANK( t2 ), "", t1)

導(dǎo)航欄 顏色 = //符合選擇條件和不符合選擇條件的顏色調(diào)整模聋,不唯一為紅色肩民,唯一為綠色。
var t1 = [導(dǎo)航欄 目標(biāo)]
return if( ISBLANK( t1 ) || COUNTROWS( VALUES( '頁面配置表'[頁面描述] ) ) <> 1, "#FD625E", "#01B8AA" )
創(chuàng)建報(bào)表頁

以上已經(jīng)完成權(quán)限控制的部署链方,剩下的就是完成頁面的調(diào)整持痰。

  • 新建一個(gè)空白頁,隱藏該頁祟蚀,插入空白按鈕配置報(bào)表標(biāo)題工窍,并制作返回按鈕割卖,返回按鈕的目標(biāo)頁和懸停提示使用度量值。

單擊報(bào)表頁面空白處患雏,將頁面配置表[報(bào)表標(biāo)題]鹏溯,放入可視化-保留所有篩選器,篩選該頁需要顯示的標(biāo)題淹仑。

然后丙挽,添加AOP設(shè)置.權(quán)限,選擇設(shè)置權(quán)限控制+頁面控制匀借,加入篩選后颜阐,選擇啟用

權(quán)限配置
導(dǎo)航欄 報(bào)表標(biāo)題 = SELECTEDVALUE( '頁面配置表'[報(bào)表標(biāo)題] ) 

導(dǎo)航頁 返回提示 = "點(diǎn)擊返回導(dǎo)航頁" 

導(dǎo)航頁 返回目標(biāo) = "導(dǎo)航頁" 

復(fù)制該頁吓肋,并對頁面重命名為頁面配置表[頁面標(biāo)題]字段包含的報(bào)表頁名稱凳怨,同時(shí)篩選該頁對應(yīng)的[報(bào)表標(biāo)題]。

后續(xù)有新增頁面直接復(fù)制原來的報(bào)表是鬼,然后做相應(yīng)的調(diào)整肤舞。

這樣一個(gè)成熟簡單的Power BI方案就部署完成了。

配置表的使用

權(quán)限配置表屑咳,是在Excel中配置萨赁,可以直接加載Excel文件到Power BI模型,如果是報(bào)表服務(wù)器部署方案兆龙,建議是放到服務(wù)器上修改杖爽,或者也可以將權(quán)限配置表導(dǎo)入到數(shù)據(jù)庫。

后記

歷時(shí)兩周紫皇,終于寫完了慰安,期間搭建模型花費(fèi)了一周的時(shí)間,各種調(diào)試聪铺,寫文章實(shí)在是太浪費(fèi)時(shí)間了化焕,尤其是這種文章,整體框架又大铃剔,不太容易寫清楚撒桨,換了好幾個(gè)方案,最終才定的這個(gè)键兜。

這個(gè)方案解決的是在Power BI當(dāng)中的權(quán)限控制凤类,至于員工入職或離職新增的賬號如何自動(dòng)同步讓Power BI加載,這又是另一個(gè)話題了普气,如果有機(jī)會谜疤,我會繼續(xù)寫這部分的內(nèi)容。

原來是打算寫的非常詳細(xì)照顧一下初學(xué)者,但是有些知識如果無限拓展夷磕,可能會造成文章主題重點(diǎn)不突出履肃,因此部分Power BI基本知識就一概而過了,如果很多內(nèi)容還看不懂坐桩,可能還需要補(bǔ)充一些其他的知識尺棋。

  • Excel中什么是“
  • Power Query高級編輯器的使用
  • Power BI基本圖表的使用,比如切片器撕攒、矩陣
  • 按鈕的功能陡鹃,熟悉按鈕的特性及如何配合使用度量值
  • 什么是Power BI計(jì)算組
  • 會使用Tabular Editor操作Power BI
  • 能理解TREATAS的用法
  • 掌握Power BI基本操作

寫之前特意找佐羅老師咨詢了下,因?yàn)樯婕暗绞召M(fèi)課程中的內(nèi)容抖坪,得到佐羅老師允許后萍鲸,才有了現(xiàn)在這篇文章,在此非常感謝佐羅老師擦俐。

個(gè)人水平有限脊阴,文章也有很多不足之處,忘不惜賜教蚯瞧。

參考資料來源:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嘿期,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子埋合,更是在濱河造成了極大的恐慌备徐,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甚颂,死亡現(xiàn)場離奇詭異蜜猾,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)振诬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門蹭睡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赶么,你說我怎么就攤上這事肩豁。” “怎么了辫呻?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵清钥,是天一觀的道長。 經(jīng)常有香客問我放闺,道長循捺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任雄人,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘础钠。我一直安慰自己恰力,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布旗吁。 她就那樣靜靜地躺著踩萎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪很钓。 梳的紋絲不亂的頭發(fā)上香府,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機(jī)與錄音码倦,去河邊找鬼企孩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛袁稽,可吹牛的內(nèi)容都是我干的勿璃。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼推汽,長吁一口氣:“原來是場噩夢啊……” “哼补疑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起歹撒,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤莲组,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后暖夭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锹杈,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年鳞尔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嬉橙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡寥假,死狀恐怖市框,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情糕韧,我是刑警寧澤枫振,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站萤彩,受9級特大地震影響粪滤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜雀扶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一杖小、第九天 我趴在偏房一處隱蔽的房頂上張望肆汹。 院中可真熱鬧,春花似錦予权、人聲如沸昂勉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽岗照。三九已至,卻和暖如春笆环,著一層夾襖步出監(jiān)牢的瞬間攒至,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工躁劣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留迫吐,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓习绢,卻偏偏與公主長得像渠抹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子闪萄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容