前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BI技巧丨权限轴

BI技巧丨权限轴

原创
作者头像
PowerBI丨白茶
发布2022-07-02 23:22:53
3770
发布2022-07-02 23:22:53
举报
文章被收录于专栏:PowerBI

BOSS:(愁眉苦脸)白茶呢?

同事:(推一推)醒醒,白茶,BOSS喊你!

白茶:(一脸懵)咋了,老板?

BOSS:(一脸嫌弃)白茶,有个需求,用户要求在同一个图表中,指标可以切换。

白茶:这个之前做过啊,就是动态指标啊!

BOSS:别急,还有,就是我们不同的用户,角色是不一样的,能不能让不同用户进来看到图表的坐标轴因人而异?

白茶:权限轴?

BOSS:是的!

白茶:OK,能搞!

BI报表在实际应用中,往往需要对报表权限进行配置,例如RLS权限、OLS权限、页面权限等等。

其实,除了这三种权限之外,还有一种特殊的权限需求。

一张BI报表,面对的用户有很多,而不同的用户角色是不一样的。很多时候,用户期望打开报表时,可以根据自己的角色,看到自己需要观测的维度。

那么在PowerBI中,如何去实现这样的需求呢?

先来看看本期的案例数据:

案例数据共计五张表。Date日期表,Product产品表,Store门店表,Access权限表,Sales销售事实表。

从Access权限表中可以看到,我们一共有三个用户,分别代表分店负责人、产品负责人、市场负责人,我们需要做到,根据用户的不同角色,自动适配对应的维度坐标轴。

将数据导入到PowerBI,模型关系如下图:

小伙伴们注意,Access这张表,不需要和其他表建立模型关系。

构建基础的度量值:

销售数量:

代码语言:txt
复制
A.销售数量 =
SUM ( Fact_Sales[Quantity] )

销售金额:

代码语言:txt
复制
B.销售金额 =
SUMX ( 'Fact_Sales', [Quantity] * RELATED ( Dim_Product[Price] ) )

构建指标切换的维度表:

添加动态切换度量值:

代码语言:txt
复制
C.KPI = 
IF ( SELECTEDVALUE ( Dim_KPI[Sort] ) = 1, [A.销售数量], [B.销售金额] )

到这里,我们的准备工作就结束了,思考一下,下一步要如何达成权限轴的动态切换效果。

思考一下

1

2

3

......

权限动态轴需要完成两个条件:

1.需要有一张包含所有用户需求维度的表;

2.需要根据用户权限配置维度表的数据权限。

构建动态分析维度表:

新建一张表,输入如下代码:

代码语言:txt
复制
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 )

结果如下:

这段代码,相当于把门店、产品、城市这三个维度强行组合生成一张新的表。

添加如下度量值:

代码语言:txt
复制
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 ()
    )

效果如下:

白茶希望标题也可以根据用户的权限进行自动适配。

添加如下代码:

代码语言:txt
复制
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

添加用户权限度量值:

度量值如下:

代码语言:txt
复制
F.Access = 
VAR UserAccess =
    CALCULATETABLE (
        VALUES ( Dim_Access[行权限] ),
        'Dim_Access'[邮箱] = USERPRINCIPALNAME ()
    )
VAR Access =
    SELECTEDVALUE ( Dim_Analysis[Analysis] ) IN UserAccess
RETURN
    Access

在建模面板下,选择管理角色,输入角色“Access”,输入如下代码:

代码语言:txt
复制
[F.Access]=True()

结果如下:

美化一下报表,最终展示的效果如下图:

(BOSS:Nice!

Demo文件在知识星球。

这里是白茶,一个PowerBI的初学者。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档