Power BI Online Service前几个与的更新中提供了一个新功能:Filter a report using query string parameters in the URL,也就是允许用户对发布到Power BI Service的报表URL后添加一些过滤条件,使得Power BI可以根据这些条件去过滤当前Report内容,这样当用户通过这个包含Filter的URL来访问Power BI数据时,就只会看到过滤后的信息,方便Report的共享和使用。
这个新功能操作也比较简单,就是在Power BI Online上面找到你要添加过滤条件的Report。在Report URL后面添加?filter=;之后以Table/Field格式填写要过滤的表单下面的具体列名,然后添加空格,再接过滤操作标签,例如 eq(等于)ne(不等于),再接空格,最后用单引号包裹过滤条件即可(即Field列下的具体值)。
大概格式如下
https://app.powerbi.com/groups/me/reports/69822dbc-3a60-4567-a532-98811b95bc11/ReportSection2?filter=Gender/Gender eq 'Male'
有几点需要注意的地方:
- 此处需要使用Report URL,使用基于该Report生成的Dashboard URL来设置过滤条件是不奏效的。
- Table和Filed名大小写敏感,必须跟表单名称一直,否则不奏效。
- 操作符前后必须有空格,不能省略。
- 过滤条件必须用单引号包裹,否则Power BI无法识别。
URL过滤生效之后在Power BI Online Service Report管理页面能看到,Filters状态栏下被过滤的Field当中只剩下了过滤后的选项,不符合过滤条件的值被隐藏,并且这种隐藏无论是Basic Filtering还是Advanced Filtering下都生效。这就意味着通过这个过滤URL来查看报表的用户,无法通过在报表中修改过滤项来更改报表筛选结果。
以上的功能都需要手动配置,如果想让Power BI根据用户选择,自动生成相应的URL过滤选项,则需要借助通过几个DAX表达式来实现。方法如下:
- 首先需要保证Power BI Desktop是2018年8月份或者以后Release的版本。想要判断是否安装的是8月份release以后的版本也很简单,可以看一下File控制面板下是否有Export to PDF功能,有的话就符合要求,没有的话就需要安装最新版本。
- Copy一下Report URL,在结尾处添加?filter这几个关键字,之后输入数据,新建一个表单,里面只包含一行数据,即当前这个修改过后的Report URL。
- 有了这个URL之后就可以开始在后面添加过滤条件,由于要实现根据用户选择动态更改过滤条件,这就只能通过创建度量值来实现该功能。因此,先要做一下准备,将URL从新建的这个表单中提取出来存放到一个度量值当中,此处可以使用SELECTCOLUMNS 来实现。
ReportURL =
SELECTCOLUMNS ( 'URL', "NewURL", 'URL'[URL] )
- 接下来就可以做拼接过滤选项部分,先用SELECTEDVALUE函数来获取用户对某一个列值的选择,之后再根据URL添加Filter条件的格式,将获取到的用户选项拼接到ReportURL这个结果后面即可。先做只有Gender一个选项的Filter URL。
FilterURL =
[ReportURL] & "Gender/Gender eq "
& "'"
& SELECTEDVALUE ( Gender[Gender] )
& "'"
6. 如果想要再追加一个Region作为过滤条件,可以在按照之前格式用SELECTEDVALUE获取Region VALUE,之后添加到之前的公式当中。为了防止出现URL非法的情况,可以追加一个IF判断。
FilterURL =
[ReportURL] & "Gender/Gender eq "
& "'"
& SELECTEDVALUE ( Gender[Gender] )
& "'"
& IF (
ISBLANK ( SELECTEDVALUE ( BU[Region] ) ),
"",
" and BU/Region eq " & "'"
& SELECTEDVALUE ( BU[Region] )
& "'"
)
7. URL生成之后,选择FilterURL这个度量值,然后将它的类型转换成WebURL格式,这样就表单中的URL就可以变成hyperlink,被直接点击使用了。