?filter=Store/Territory eq 'NC' and Store/Chain eq 'Fashions Direct'
除了“and”之外,Power BI 还支持其他许多运算符。 下表列出了这些运算符及其支持的内容类型。
String
Number
日期数据类型
Power BI 支持 Date 和 DateTimeOffset 数据类型 OData V3 和 V4 。 对于 OData V3,日期必须用单引号括起来,并以 datetime 一词开头。 OData V4 中不需要单引号和 datetime 一词。
日期使用 EDM 格式 (2019-02-12T00:00:00) 表示:将日期指定为 'YYYY-MM-DD' 时,Power BI 将其解释为 'YYYY-MM-DDT00:00:00'。 请确保月和日是两位数,即 MM 和 DD。
为什么这种区别很重要? 假设你创建了一个查询字符串参数 Table/Date gt '2018-08-03'。 结果是包括 2018 年 8 月 3 日,还是始于 2018 年 8 月 4 日? Power BI 将查询转换为 Table/Date gt '2018-08-03T00:00:00'。 因此,结果包含具有非零时间部分的任何日期,因为这些日期大于 '2018-08-03T00:00:00'。
V3 和 V4 之间还存在其他差异。 OData V3 不支持日期,只支持日期时间。 因此如果使用 V3 格式,则必须使用完整日期时间限定它。 V3 表示法中不支持日期文字,如“datetime'2019-05-20'”。 但是在 V4 表示法只能将它编写为“2019-05-20”。 下面是 V3 和 V4 中的两个等效筛选器查询:
OData V4 格式:filter=Table/Date gt 2019-05-20
OData V3 格式:filter=Table/Date gt datetime'2019-05-20T00:00:00'
URL 筛选器中的特殊字符
表名和列名中的特殊字符
表名和列名中的特殊字符和空格需要其他格式设置。 如果查询包含空格、破折号或其他非 ASCII 字符,请使用转义码为这些特殊字符添加前缀,即以下划线字符和 X 开头 (_x),后面依次跟四位 Unicode 和另一个下划线字符。 如果 Unicode 少于四个字符,需要用零填充。 下面是一些示例。
Unicode
Power BI 的编码
Table_x0020_Name/Column_x002B_Plus eq 3
Table_x0020_Special/x005B_Column_x0020_Brackets_x005D eq '[C]'
值中的特殊字符
URL 筛选器支持在字段值中使用大多数特殊字符,但某些筛选器还需要转义代码。 例如,要搜索单引号字符,请使用两个单引号 ('')。
?filter=Table/Name eq 'O''Brien'
变为:
?filter=Table/Name eq 'Lee''s Summit'
变为:
in
运算符也支持这种转义:?filter=Table/Name in ('Lee''s Summit', 'O''Brien')
变为:
标准 URL 转义字符
使用包含空格和其他特殊字符的 URL 时,浏览器可能会将其自动替换为标准转义字符。 假设创建以下 URL 查询字符串:
https://app.powerbi.com/groups/me/reports/b7dea1d4-d9f0-47aa-a88d-xxxxxxxxxxxx/ReportSection2?filter=Executives/Executive eq 'Andrew Ma'
它打开“客户盈利率示例”,筛选显示 Andrew Ma。 但是,如果查看 URL,它现在可能如下所示:
https://app.powerbi.com/groups/me/reports/b7dea1d4-d9f0-47aa-a88d-xxxxxxxxxxxx/ReportSection2?filter=Executives%2FExecutive%20eq%20%27Andrew%20Ma%27
与其他空格一样,浏览器使用 %20
替换了 Andrew
和 Ma
之间的空格。 它使用 %2F
替换了表名 Executives
和字段名称 Executive
之间的正斜杠,使用 %27
替换了单引号 '
。
这一版本的 URL 可能很有用。 例如,可在 Microsoft Teams 中的聊天中粘贴它,它将返回所需的筛选结果。
使用 DAX 来对多个值进行筛选
对多个字段进行筛选的另一方法是创建将两个字段合并成一个值的计算列。 然后,便可以筛选此值。
例如,我们有以下两个字段:“Territory”和“Chain”。 在 Power BI Desktop 中,新建一个计算列(字段),并将其命名为“TerritoryChain”。 请注意,“字段”名称中不能有任何空格。 下面是此计算列的 DAX 公式。
TerritoryChain = [Territory] & " - " & [Chain]
将报表发布到 Power BI 服务,然后使用 URL 查询字符串筛选出 NC 中 Lindseys 商店的数据。
https://app.powerbi.com/groups/me/reports/8d6e300b-696f-498e-b611-41ae03366851/ReportSection3?filter=Store/TerritoryChain eq 'NC – Lindseys'
将筛选后的报表中的可视化效果固定到磁贴中
使用查询字符串参数筛选报表后,便可以将此报表中的可视化效果固定到仪表板中。 仪表板上的磁贴会显示筛选出的数据,选择该仪表板磁贴会打开用于创建磁贴的报表。 不过,使用 URL 进行的筛选不会随报表一起保存。 在你选择仪表板磁贴后,报表以未筛选状态打开。 因此,仪表板磁贴中的数据与报表可视化效果中的数据不一致。
若要查看不同结果(在仪表板中显示筛选后的数据,在报表中显示未筛选的数据),便会发现这一差异很有用。
注意事项和疑难解答
使用查询字符串参数时,需要注意两点。
使用 in 运算符时,in 右侧的值必须是括在括号中的逗号分隔列表 。
Power BI 报表服务器还支持使用“filter”URL 参数指定多个筛选器。 下面的示例展示了 URL 在 Power BI 报表服务器可能出现的呈现效果:https://reportserver/reports/powerbi/Store Sales?rs:Embed=true&filter= Store/Territory eq 'NC' and Store/Chain eq 'Fashions Direct'
报表 URL 筛选器有 10 个表达式限制(通过 AND 连接的 10 个筛选器)。
由于 JavaScript 限制,长数据类型限制为 (2^53-1)。
Power BI 不会限制 URL 查询字符串中的字符数。 不同浏览器具有不同的长度限制。
无法筛选以大写字母 INF 开头的表名或列名,例如,以“INFORMATION”开头的表名。 大写 INF 是 OData 中的一个特殊值。 如果要使表名或列名以“INF”开头,请将它改为小写“inf”。
一些嵌入场景支持 URL 筛选器,而另一些不支持。
支持在安全门户或网站中嵌入报表。
Power BI Embedded 中支持 URL 筛选器。 有关详细信息,请参阅 Power BI Embedded 高级 URL 筛选功能。
无法结合使用查询字符串筛选和发布到 Web 或导出到 PDF。
使用报表 Web 部件在 SharePoint Online 中嵌入报表不支持 URL 筛选器。
Teams 不允许指定 URL。
将可视化效果固定到仪表板
注册免费试用版
更多问题? 尝试咨询 Power BI 社区