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


相关推荐

  • pycharm加注释的快捷方式_pycharm如何批量注释

    pycharm加注释的快捷方式_pycharm如何批量注释1、主题  在开发项目的过程中经常需要创建任务列表,对于一些小任务,在代码中插入便签注释会有奇效。  这种注释的格式如下:  2、创建便签注释  非常简单:  首先,将光标定位到相应行。  然后,创建一行注释(Ctrl+Slash)。  最后,在#后面,输入TODO或者todo,然后输入注释  3、浏览便签  在T

    2022年8月28日
    5
  • 神经网络loss函数意义_lossfunction

    神经网络loss函数意义_lossfunctionL1Loss平均绝对误差(MAE),用于回归模型对于包含NNN个样本的batch数据D(x,y)D(x,y)D(x,y),losslossloss计算如下:loss=1N∑n=1Nlnloss=\frac{1}{N}\sum_{n=1}^{N}l_{n}loss=N1​∑n=1N​ln​其中,ln=∣xn−yn∣l_{n}=\left|x_{n}-y_{n}\right|ln​=∣xn​−yn​∣classL1Loss(_Loss):__constants__=[‘redu

    2026年1月15日
    3
  • django1.8_django-vue-admin

    django1.8_django-vue-admin前言由于之前我们一直使用的django-rest-framework-jwt这个库,但是作者在17年的时候就已经不再维护了(有部分bug没有解决),所以我们也就不用了,目前我们使用django-r

    2022年8月7日
    8
  • 哈佛幸福课笔记上篇「建议收藏」

    哈佛幸福课笔记上篇「建议收藏」改变一生的课:哈佛幸福课笔记上篇第1课什么是积极心理学?第2课为什么要学习积极心理学?第3课幸福是一种随机现象吗?第4课积极的环境能改变人第5课环境的力量第6课乐观主义第7课逆境还是机遇?第8课感激链接:哈佛大学公开课:幸福课.《哈佛幸福课》是改变我生活最大的一项事物,没有之一。我学习了5遍幸福课,并且用过去6年的时间去尝试它践行它,感觉完全改变了我的生活。第1课什么是积极心理学?1.享受安静2.这门课不光是传授信息,而且关于如何变形。重要的不仅仅是获得了什么信息,还是何形状

    2022年7月25日
    11
  • 生成Android App签名(为APK签名)

    生成Android App签名(为APK签名)

    2021年8月19日
    67
  • 树莓派4B基础教程

    树莓派4B基础教程树莓派4B基础教程准备:硬件:树莓派4B,SD一张软件:SDCardFormatter(SD卡格式化工具),Win32DiskImager(烧录系统工具)这是一个纯新手教程,由于更新换代,有些东西3b的教程能用4b用不了,由于版本原因,有些东西直接出错,所以干脆花时间自己整理了一下.作者自述:对!东西全是百度来的,劳资只是一个搞Java开发的,也没有见过这些小东西可能比普通…

    2022年6月10日
    56

发表回复

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

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