御用导航提示提醒页面_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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • sql游标的基本语法

    sql游标的基本语法DeclareSursorsCURSORforselectu.U_UserName,u.U_IDfromUsersu;–whereu.UserNamelike’%w%’;–打开游标openSursors;–提取数据–格式declare@useridvarchar(50)declare@usernamevarchar(50)fe

    2022年7月12日
    26
  • juniper srx将配置文件备份到ftp服务器

    juniper srx将配置文件备份到ftp服务器

    2021年8月18日
    81
  • Ubuntu保存退出vim编辑器「建议收藏」

    Ubuntu保存退出vim编辑器「建议收藏」命令模式,从键盘上输入的任何字符都被作为编辑命令来解释,vi下很多操作如配置编辑器、文本查找和替换、选择文本等都是在命令模式下进行的。输入模式,从键盘上输入的所有字符都被插入到正在编辑的缓冲区中,被当作正文。1.编辑进入vi/vim后按字母“i”或“I”即可进入编辑状态(此时左下角会出现“插入”),另外还可以用a…

    2022年6月11日
    42
  • ZBar 源码分析 beta

    ZBar 源码分析 beta前言身在物流行业 扫描条码的场景很多 为了改造 ZBar 使其返回条码方向 条码与水平线的夹角 阅读了 ZBar 的源码 总结一下 没有弄清楚所有细节 只说说我弄清楚的部分 主流程应该大家都知道 ZBar 是 Z 字型扫描的 为什么要 Z 字型扫描 不清楚 一次扫描一行或者一列 在扫描过程中做滤波 EWMA 指数加权移动平均 可以消除部分噪声影响 然后计算梯度变化 确定边缘 计算当前

    2025年11月28日
    4
  • ext表示什么_rent和lease

    ext表示什么_rent和leaseExtjs的组件有两个看起来类似的配置项,applyTo和renderTo,这两个配置项都是用来指定将该extjs组件加载到什么位置。那他们到底有什么区别呢,网上搜了下,有两篇博文也是关于这个的。ExtJS中的renderTo和applyTo的差别[url]http://hi.baidu.com/agzfsshohpcdegr/item/50370f1912dc05e3…

    2022年7月28日
    5
  • 分布式全局唯一ID生成器(支持多种注册中心)的实现

    分布式全局唯一ID生成器(支持多种注册中心)的实现在订单、支付的业务场景中,单号的生成规则与生成方式十分重要,实现有很多种,最简单的是基于mysql自增主键实现,方案优劣不多说,大家都清楚。我们今天实现一种分布式的、可扩展的并且在高并发场景能保证高性能的全局唯一ID生成方案(基于twitter的snowflake原理进行改编和扩展)。不多说直接上代码。packagecom.zxm.adapter;importorg.apache.z…

    2022年6月21日
    31

发表回复

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

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