PowerBI报表中如何实现按选定项目维度动态搜索数据
Power BI 实现可切换维度的搜索功能
适用场景:已有包含publisher(出版商)、author(作者)、Category(分类)、Title(标题)列的产品详情表,需要实现用户自主选择搜索维度、输入关键词后过滤对应结果的效果。
实现步骤
1. 新建维度选择表
首先新建一张独立的、不与原产品表建立任何关系的维度选项表,用来给用户选择搜索维度,新建表的DAX代码如下:
搜索维度选项 = { "按作者搜索", "按标题搜索", "按出版商搜索" }
把这张表的Value字段拖到切片器视觉对象上,将切片器设置为单选模式,放在报表页合适位置即可。
2. 创建搜索关键词输入框
点击顶部菜单栏「建模」→「新建参数」→选择「文本参数」,将参数命名为搜索关键词,默认值留空后确认。系统会自动生成一个支持自由输入文本的切片器,作为用户输入搜索内容的输入框。
3. 编写动态匹配度量值
新建以下度量值,用来判断每一行数据是否符合当前选中维度+输入关键词的匹配规则:
是否匹配 = VAR 选中维度 = SELECTEDVALUE('搜索维度选项'[Value], "按标题搜索") // 未选维度时默认按标题搜索 VAR 关键词 = TRIM(SELECTEDVALUE('搜索关键词'[搜索关键词], "")) // 自动去除输入内容前后的空格 VAR 待匹配字段值 = SWITCH( 选中维度, "按作者搜索", SELECTEDVALUE('产品表'[author]), "按标题搜索", SELECTEDVALUE('产品表'[Title]), "按出版商搜索", SELECTEDVALUE('产品表'[publisher]), BLANK() ) RETURN // 搜索框为空时展示全部内容,输入内容后做不区分大小写的模糊匹配 IF( 关键词 = BLANK() || SEARCH(关键词, 待匹配字段值, 1, 0) > 0, 1, 0 )
如果需要精确匹配而非模糊包含,把SEARCH(关键词, 待匹配字段值, 1, 0) > 0替换为待匹配字段值 = 关键词即可。
4. 配置结果展示表格
拖入表格视觉对象,把需要展示的Category、Title、author、publisher字段加到表格列里。打开视觉对象的筛选面板,把刚才新建的是否匹配度量值拖到「此视觉对象的筛选器」区域,设置筛选规则为显示值等于1的项,应用筛选即可。
参考样例
输入产品表结构

最终实现效果

使用逻辑:
- 先在维度选择切片器点选要检索的维度
- 在搜索输入框输入关键词,表格会自动过滤出对应维度下匹配关键词的记录
- 搜索框留空时,表格默认展示全量产品数据
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

