当前位置:网站首页>Bi skills - permission axis
Bi skills - permission axis
2022-07-04 19:20:00 【Powerbi white tea】

BOSS:( Pull a long face ) What about white tea ?
colleagues :( Push... Push ) Wake up , White tea ,BOSS Call you !
White tea :( A face of meng ) Yo , Boss ?
BOSS:( A look of disdain ) White tea , There is a need. , Users need to be in the same chart , Indicators can be switched .
White tea : This has been done before , It's a dynamic indicator !
BOSS: Don't worry. , also , It's our different users , The roles are different , Whether different users can come in and see the coordinate axis of the chart varies from person to person ?
White tea : Permission axis ?
BOSS: Yes !
White tea :OK, Can do !
BI Report in practical application , Report permissions often need to be configured , for example RLS jurisdiction 、OLS jurisdiction 、 Page permissions, etc .
Actually , In addition to these three permissions , There is also a special permission requirement .
a sheet BI report form , There are many users , Different user roles are different . A lot of times , When users expect to open the report , According to your role , See the dimensions you need to observe .
So in PowerBI in , How to realize such requirements ?

Let's take a look at the case data in this issue :





There are five tables of case data .Date Date sheet ,Product Product list ,Store Store table ,Access Permissions on the table ,Sales Sales fact sheet .
from Access You can see in the permission table , We have three users , On behalf of the person in charge of the branch 、 Product owner 、 Market leader , We need to , According to different roles of users , Automatically fit the corresponding dimension coordinate axis .
Import data into PowerBI, The model relationship is shown in the figure below :

Attention, boys ,Access This table , There is no need to establish model relationships with other tables .
Build the metrics of the foundation :
sales volumes :
A. sales volumes =
SUM ( Fact_Sales[Quantity] )
Sales amount :
B. Sales amount =
SUMX ( 'Fact_Sales', [Quantity] * RELATED ( Dim_Product[Price] ) )
Build a dimension table for indicator switching :

Add dynamic switching metrics :
C.KPI =
IF ( SELECTEDVALUE ( Dim_KPI[Sort] ) = 1, [A. sales volumes ], [B. Sales amount ] )
Come here , Our preparations are over , Think about it , How to achieve the dynamic switching effect of permission axis in the next step .
Think about it
1
2
3
…
The permission dynamic axis needs to complete two conditions :
1. There needs to be a table containing all user demand dimensions ;
2. You need to configure the data permissions of dimension tables according to user permissions .
Build a dynamic analysis dimension table :
Create a new table , Enter the following code :
Dim_Analysis =
VAR Store =
SELECTCOLUMNS (
ADDCOLUMNS ( DISTINCT ( 'Dim_Store'[StoreName] ), "Analysis", "1" ),
"Analysis", [Analysis],
"Display", [StoreName]
)
VAR ProductName =
SELECTCOLUMNS (
ADDCOLUMNS ( DISTINCT ( 'Dim_Product'[ProductName] ), "Analysis", "2" ),
"Analysis", [Analysis],
"Display", [ProductName]
)
VAR City =
SELECTCOLUMNS (
ADDCOLUMNS ( DISTINCT ( 'Dim_Store'[City] ), "Analysis", "3" ),
"Analysis", [Analysis],
"Display", [City]
)
RETURN
UNION ( Store, ProductName, City )
give the result as follows :

This code , Equivalent to store 、 product 、 These three dimensions of the city are forcibly combined to generate a new table .
Add the following measures :
D.AnalysisKPI =
VAR Store =
TREATAS ( VALUES ( 'Dim_Analysis'[Display] ), 'Dim_Store'[StoreName] )
VAR ProductName =
TREATAS ( VALUES ( 'Dim_Analysis'[Display] ), 'Dim_Product'[ProductName] )
VAR City =
TREATAS ( VALUES ( 'Dim_Analysis'[Display] ), 'Dim_Store'[City] )
VAR Analysis =
SELECTEDVALUE ( 'Dim_Analysis'[Analysis] )
RETURN
SWITCH (
TRUE (),
Analysis = "1", CALCULATE ( [C.KPI], Store ),
Analysis = "2", CALCULATE ( [C.KPI], ProductName ),
Analysis = "3", CALCULATE ( [C.KPI], City ),
BLANK ()
)
The effect is as follows :

White tea hopes that the title can also be automatically adapted according to the user's permission .
Add the following code :
E.Title =
VAR T1 =
IF ( SELECTEDVALUE ( Dim_KPI[Sort] ) = 1, "Sales Volume", "Revenue" )
VAR T2 =
SELECTEDVALUE ( Dim_Analysis[Analysis] )
VAR T3 =
SWITCH (
TRUE (),
T2 = "1", "Store",
T2 = "2", "Product",
T2 = "3", "City",
"BaiCha"
)
RETURN
T1 & " Analysis By " & T3
Add user permission metrics :
The measurements are as follows :
F.Access =
VAR UserAccess =
CALCULATETABLE (
VALUES ( Dim_Access[ Line authority ] ),
'Dim_Access'[ mailbox ] = USERPRINCIPALNAME ()
)
VAR Access =
SELECTEDVALUE ( Dim_Analysis[Analysis] ) IN UserAccess
RETURN
Access
Under the modeling panel , Select the management role , Enter character “Access”, Enter the following code :
[F.Access]=True()
give the result as follows :

Beautify the report , The final display effect is shown in the figure below :



(BOSS:Nice!)
Demo Documents on the planet of knowledge .
This is white tea , One PowerBI Beginners .
边栏推荐
- Uni app and uviewui realize the imitation of Xiaomi mall app (with source code)
- php伪原创api对接方法
- 1672. 最富有客户的资产总量
- 2022CoCa: Contrastive Captioners are Image-Text Fountion Models
- My colleagues quietly told me that flying Book notification can still play like this
- 【2022年江西省研究生数学建模】水汽过饱和的核化除霾 思路分析及代码实现
- File processing examples of fopen, FREAD, fwrite, fseek
- Rookie post station management system based on C language
- 物联网应用技术的就业前景和现状
- 【机器学习的数学基础】(一)线性代数(Linear Algebra)(上+)
猜你喜欢

Mxnet implementation of googlenet (parallel connection network)

读写关闭的channel是啥后果?

A method of using tree LSTM reinforcement learning for connection sequence selection

Li Kou brush question diary /day4/6.26
Summary and sorting of 8 pits of redis distributed lock

Rookie post station management system based on C language
![[发布] 一个测试 WebService 和数据库连接的工具 - DBTest v1.0](/img/4e/4154fec22035725d6c7aecd3371b05.jpg)
[发布] 一个测试 WebService 和数据库连接的工具 - DBTest v1.0

How to modify icons in VBS or VBE

Torchdrug tutorial

输入的查询SQL语句,是如何执行的?
随机推荐
【2022年江西省研究生数学建模】水汽过饱和的核化除霾 思路分析及代码实现
【OpenCV入门到精通之九】OpenCV之视频截取、图片与视频互转
Using SSH
基于lex和yacc的词法分析器+语法分析器
物联网应用技术的就业前景和现状
Is the securities account opened by qiniu safe?
技术分享 | 接口测试价值与体系
启牛开的证券账户安全吗?
Scala基础教程--19--Actor
Scala basic tutorial -- 17 -- Collection
1672. 最富有客户的资产总量
How to open an account is safe,
正则替换【JS,正则表达式】
使用canal配合rocketmq监听mysql的binlog日志
Nebula importer data import practice
Scala基础教程--18--集合(二)
Microservice architecture debate between radical technologists vs Project conservatives
Scala basic tutorial -- 14 -- implicit conversion
Nature Microbiology | 可感染阿斯加德古菌的六种深海沉积物中的病毒基因组
Scala基础教程--12--读写数据