如何在Tableau中使用单个过滤器同时筛选多列数据?
解决方案
1. 生成统一的筛选值列表
先把三列里的所有唯一值整合到一张独立表中,作为多值筛选器的可选值:
- Power Query 方法:
- 新建空白查询,分别引用原数据表的三列
- 对每列执行「删除重复项」,再用「追加查询」合并三个列表,最后再删除一次重复项,得到包含所有唯一值的表,命名为
FilterValues
- DAX 计算表方法:
FilterValues = DISTINCT( UNION( VALUES('数据表'[Column1]), VALUES('数据表'[Column2]), VALUES('数据表'[Column3]) ) )
2. 创建多值参数
基于FilterValues表创建多值参数(命名为SelectedValues),允许选择一个或多个值。
3. 设置筛选逻辑
用度量值实现动态筛选(推荐)
创建如下度量值,用来标记符合条件的行:
符合筛选条件 = VAR 选中值集合 = ALLSELECTED(FilterValues[Value]) RETURN IF( MAX('数据表'[Column1]) IN 选中值集合 || MAX('数据表'[Column2]) IN 选中值集合 || MAX('数据表'[Column3]) IN 选中值集合, 1, 0 )
把这个度量值拖到筛选面板,设置为「等于1」,就能筛选出任意一列匹配选中值的行。
用计算列实现静态筛选
如果数据更新不频繁,也可以用计算列预标记:
符合筛选条件 = IF( '数据表'[Column1] IN ALLSELECTED(FilterValues[Value]) || '数据表'[Column2] IN ALLSELECTED(FilterValues[Value]) || '数据表'[Column3] IN ALLSELECTED(FilterValues[Value]), "是", "否" )
之后筛选该列等于「是」即可。
快速替代方案
如果不需要单独维护筛选值表,也可以直接在可视化筛选器中添加自定义表达式:
[Column1] IN SELECTEDVALUES(FilterValues[Value]) || [Column2] IN SELECTEDVALUES(FilterValues[Value]) || [Column3] IN SELECTEDVALUES(FilterValues[Value])
内容的提问来源于stack exchange,提问作者Holmes IV
相关产品推荐
相关产品推荐

