御用导航提示提醒页面_PowerBI 个性化定制你的报告导航

御用导航提示提醒页面_PowerBI 个性化定制你的报告导航“页导航”是PowerBI在2020年5月的更新中一个非常关键的功能。我也写过一篇文章,如何在书签和页导航中进行选择:PowerBI中的书签和导航页,如何选择呢?而通过页导航的自定义参数链接可以实现给最终用户提供个性化定制的页面。那么问题来了,为什么要给最终用户提供个性化的页面呢?每一个终端用户,对于所想看到的页面是不同的,或者希望看到的报告风格是有差异的。你作为报告的设计者/Power…

大家好,又见面了,我是你们的朋友全栈君。

“页导航”是PowerBI在2020年5月的更新中一个非常关键的功能。我也写过一篇文章,如何在书签和页导航中进行选择:

PowerBI中的书签和导航页,如何选择呢?

而通过页导航的自定义参数链接可以实现给最终用户提供个性化定制的页面。

那么问题来了,为什么要给最终用户提供个性化的页面呢?

每一个终端用户,对于所想看到的页面是不同的,或者希望看到的报告风格是有差异的。你作为报告的设计者/PowerBI管理员,可能需要为每一个用户分别设置不同的报告。

一旦你要在报告中进行一些修改或者添加一些内容,你要么会修改大量的模型,要么会修改很多的报告。本身,要维护多个差不多相同的报告,就是一件很让人恼火的事情。

而对于最终用户来说,看到报告是为自己个性化定制的,一定是一件让人高兴愉快的事情。如果我是华北大区的负责人,当我打开报告时,显然想先看华北大区的销售分析。

其实依靠行级别筛选器,你完全可以做一个标准的报告,每个人登录后都只能看到自己地区的分析。但是在本案例中,我们期望的是,每一个大区的负责人都能够看到其他大区的数据。所以呢,不能使用行级别筛选器去筛选数据集。但是,我们还是要使用行级别安全筛选,当然,是在其他位置。

动态页面导航设置

想要实现不同人导航的页面不同,可以使用页面URL+用户ID匹配的方式来搞定。因为每一个页面在发布时都会被分配一个独一无二的ReportsSectionId,也就是URL链接,所以我们通过设置不同的用户ID去筛选不同的页面URL来实现个性化跳转。

4621a818fce5d82d8487e8850896a236.png

最终实现效果:不同的人看到的页面数量是不同的:

eed8b31e6d4b8e734810ba0d509569e9.png

不过,这种方式的可视化效果可以说比较差劲了,再就是还有一个最大的问题:它会弹出另一个全新的页面来打开这个URL。而要返回查看其他数据时,需要关闭新的页面。而今天要介绍的这个方法,完全避免了这个问题。

创建一个包含PageName的表,可以通过导入表的方式,也可以通过直接输入数据的方式:

7fd08a29d861f16343bf235bbb0c9de2.png

再写一个度量值:

Page Navigation Destination = SELECTEDVALUE( ReportPages[PageName] )

之后我们就可以用这个度量值去进行导航了。

创建动态页面导航

在上图这个表中,我不仅输入了包含PageName的信息,同时也包含Page Description和Short Text这两列信息,所以说,目的自然不仅仅是单一地导航,做戏要做全套的,页面描述和按钮显示自然都是要有的:

  • 定义动态页面导航显示文本

  • 定义动态页面鼠标悬停时的提示

  • 定义动态页面链接的目的地

再重复一次我们的目的,是要让每一个最终用户打开报告时,点击同一个报告的同一个按钮,但是到达的目的地页面是不同的。

以下按照步骤进行:

1.添加用户表,包含用户名和页面目标

我们需要根据登录用户的用户名来确定,他打开的页面具体导航到哪一个页面,所以我们需要一个包含用户名筛选的表。

47b1b70997250b6d715f8b68e2b9813e.png

2.对表模型创建关系

将以上两个表建立模型,注意双向一对多关系,并且在两个方向上启用安全筛选器。这个是成功的关键。慢慢品。

9f95ce65b2fc5b325673489994e37a35.png

而则两个表与其他的维度表或数据表之间都没有任何关联,因为我们不对数据集本身进行筛选,仅仅是对页面导航进行筛选。

3.添加行级别安全筛选器

有了UserPrincipalName这一列,筛选时就很简单了,只要读取用户账号去做筛选即可:

[UserPrincipalName] = UserPrincipalName()

e558ac9aa1a71770d27163e2c0d9db78.png

完成了这一步,通过用户账号就能判断它所代表的导航页面,那么点击时自然就会跳转到相应的页面了。

4.写几个度量值

前文说过,ReportPages表中有三列,所以我们要对该按钮实现三个功能:

  • 定义动态页面导航显示文本

Button Title = SELECTEDVALUE( ReportPages[Short Text] )

  • 定义动态页面鼠标悬停时的提示

Button Tooltip = SELECTEDVALUE( ReportPages[Page Description] )

  • 定义动态页面链接

Page Navigation Destination = SELECTEDVALUE( ReportPages[PageName] )

5.设置页面导航

以上三个度量值分别对应在三个不同的参数位置上:

按钮文本:点击fx选择button title:

c524adb61ae876d7691e5a21e2d970a9.png

操作:目标fx点击选择Page Navigation Destination:

0032babcccf633fe9661f868d93255d0.png

同样,工具提示点击fx选择Button Tooltip。不过工具提示有没有意义不大其实。有,稍微好看一点,没有,也不影响大局。

结果呈现:

由于我们是在本地进行呈现,本地的UserPrincipalName是计算机名,显然并不是用户账号,所以我们需要在建模中一角色身份查看,勾选其他用户和PageNavigation,然后输入一个账号:

fff7cc7e4c67a52a96c5d4c509deef2f.png

这样,报告就被筛选了特定的用户,用户再筛选page信息,这样Title、Tooltip和Destination就都被限定了唯一值,自然就可以导航了:

aaafafcdfb377e8d4e9476b6c6b149bf.png

导航目的页面:

e0a28f8b0cc32525e31808c2e10821fd.png

选择另一个账号试试:

64781bf877f5946c86a4d005e3699b2b.png

导航目的页面:

f9a273984e61d9b44c46e76ef9efc094.png

以上可以看出,不同的导航页面风格是不同的,适合最终用户的体验。

总个结:

通过以上的自定义动态页面导航,可以做到让每一个最终用户在点击同一个报告的同一个按钮,实现不同风格的页面跳转,让他们感觉,这报告就是完全为他们而设计,同时也符合不同用户的功能需要。

尤其是当你隐藏这些页面导航最终页面,只通过最开始的导航页进行跳转,整个报告会更加清晰整洁。

需要注意的一点是,以上方式看上去的确实现了不同用户只能看到特定的页面,而不能看到其他页面。但是,我们前文说过,每一个发布到云端的页面都会有独一无二的ReportSectionId,虽然你可能会将页面隐藏了,但是通过某些特定的算法,ReportSectionId,即你所隐藏的页面URL,是可以被计算出来的,尤其是当你学习了Power BI REST API之后,想看报告的隐藏页面还是so easy的。有时间后边写几篇。

个性化定制,需要开发者充分发挥自己的想象,来实现各式各样的功能。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138993.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月30日 下午3:00
下一篇 2022年5月30日 下午3:00


相关推荐

  • 微服务架构—服务降级

    微服务架构—服务降级1、简介什么是服务降级?当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或…

    2022年6月11日
    47
  • SPSS教程——进行卡方检验的相关步骤

    SPSS教程——进行卡方检验的相关步骤作为非参数检验之一的卡方检验用于判断样本是否来自特定分布的总体的检验方法,主要用于研究总体分布和理论分布是否存在显著差异。适用于有多个分类值的总体分布的分析。在这次教程中,我们给大家演示SPSS如何进行卡方检验。下面我们使用IBMSPSSStatistics26(win10)结合具体案例详细演示一遍吧。打开样本数据医学家研究发现,在一周中,周一心脏病患者猝死的人数较多,其他时间相同。周一到周日的比例近似为2.8:1:1:1:1:1:1。为此在网上搜集了一份心脏病人死亡日期的样本数据,用于推断

    2022年5月17日
    49
  • 你了解System.out.println()的真正含义吗?

    你了解System.out.println()的真正含义吗?在Java编程中,我们常常用 System.out.println(); 来输出字符串,也许我们都已经猜到println()是方法名,但System是什么,out又是什么呢?  其实System是java.lang里面的一个类,如下图:     而out就是System里面的一个静态数据成员,而且这个成员是java.io.PrintStream类的引用。如下图,被关键字static修饰的成员可…

    2025年7月24日
    6
  • Python自动化测试面试题及答案(持续更新中)

    1、自动化代码中,用到了哪些设计模式?单例设计模式工厂模式PO设计模式数据驱动模式面向接口编程设计模式2、什么是断言(Assert)?断言Assert用于在代码中验证实际结果是不是符合预期结果,如果测试用例执行失败会抛出异常并提供断言日志3、什么是web自动化测试Web自动化测试是从UI(用户界面)层面进行的自动化测试测试人员通过编程自动化程序(测试用例脚本)来打开浏览器测试网站的业务逻辑4、什么是seleniumSelenium是一个开源的web自动化测试框架,支持

    2022年4月8日
    132
  • excel图片链接显示为图片_怎样将图片拼接成长图

    excel图片链接显示为图片_怎样将图片拼接成长图由于公司需要统计根据门店业绩和装修档次定制扶持政策,所以要到处携带门店门头照片+业绩的报表,而数据库存储的是图片的链接。由于后台统计报表相对应的库暂时没有插入图片的功能。所以通过宏来完成将Excel中url替换为插入图片,又为了避免插入图片太多,导致Excel大小暴增,所以在选择了对应门店门头照片链接时才插入图片。具体步骤如下:1、进入对应sheet页的ViewCode一种…

    2026年2月18日
    5
  • HTML上document的方法

    HTML上document的方法document:属性document.title//设置文档标题等价于HTML的<title>标签document.bgColor//设置页面背景色document.fgColor

    2022年7月1日
    30

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号