当前位置:网站首页>Bi skills - permission axis
Bi skills - permission axis
2022-07-03 11:15: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 " & T3Add 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
AccessUnder 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 .
边栏推荐
- Struct function & function pointer
- Clion debug
- The solution that prompts "system group policy prohibits the installation of this device" under win10 system (home version has no group policy)
- 历经一个月,终于拿到金蝶Offer!分享一下四面面经+复习资料
- ByteDance layoffs, test engineers were almost destroyed: how terrible is the routine behind the recruitment of large factories?
- Qt:qss custom qgroupbox instance
- Ext file system mechanism principle
- EPS电动转向系统分析
- Balance between picture performance of unity mobile game performance optimization spectrum and GPU pressure
- 帝国cms 无缩略图 灵动标签(e:loop)判断有无标题图片(titlepic)的两种写法
猜你喜欢

ByteDance layoffs, test engineers were almost destroyed: how terrible is the routine behind the recruitment of large factories?

What are the strengths of "testers"?

Overview of testing theory

软件测试工程师的5年之痒,讲述两年突破瓶颈经验

做软件测试三年,薪资不到20K,今天,我提出了辞职…

8年测试总监的行业思考,看完后测试思维认知更深刻

AMS Series 1 - AMS startup process

有赞CTO崔玉松:有赞Jarvis核心目标是使产品变得更加聪明和可靠

Software testing redis database

如何清理v$rman_backup_job_details视图 报错ORA-02030
随机推荐
Imread change image display size
Activity and fragment lifecycle
Solve the problem that pycharm Chinese input method does not follow
【obs】obs的ini格式的ConfigFile
What are the strengths of "testers"?
Definition and properties of summation symbols
图解网络:什么是虚拟路由器冗余协议 VRRP?
AMS series - application startup process
ExecutorException: Statement returned more than one row, where no more than one was expected.
大厂技术专家:工程师如何提升沟通能力?
如何成为一名高级数字 IC 设计工程师(1-4)Verilog 编码语法篇:表达式
Qt:qss custom QSlider instance
Using activity to realize a simple inputable dialog box
Android log system
面试题总结(2) IO模型,集合,NIO 原理,缓存穿透,击穿雪崩
[true question of the Blue Bridge Cup trials 44] scratch eliminate the skeleton Legion children programming explanation of the true question of the Blue Bridge Cup trials
How to realize automatic testing in embedded software testing?
Qt:qss custom qlineedit instance
线性表的双链表
Inexplicable problems in the nesting of constraintlayout and relativelayout