如何将取值1-30的普通切片器改造为含all、1、2、3+的切片器
改造1-30数值切片器为分组选择逻辑
要把取值1-30的普通切片器改成「all/1/2/3+」的分组选择模式,直接修改原切片器无法实现,需通过辅助表+度量值完成,具体步骤如下:
1. 给原表添加分组映射列
在数据原表中,针对切片器对应的数值列(假设名为原数值列),新建计算列,使用DAX表达式:
分组切片列 = SWITCH( TRUE(), [原数值列] = 1, "1", [原数值列] = 2, "2", [原数值列] >= 3 && [原数值列] <= 30, "3+", BLANK() )
该列会自动将原数值按规则映射为目标分组标签,1-30以外的数值会被标记为空值。
2. 新建切片器专用选项表
由于计算列无法直接添加「all」选项,需单独创建一张表作为切片器的数据源,使用DAX新建表:
切片器选项表 = UNION( ROW("分组选项", "all"), VALUES('原表'[分组切片列]) )
执行后该表会生成四个固定选项:all、1、2、3+,不会随原表数据变动而改变。
3. 编写筛选控制度量值
新建一个度量值,用于根据切片器的选择过滤原表数据:
筛选开关 = VAR 选中选项 = SELECTEDVALUE('切片器选项表'[分组选项]) RETURN SWITCH( 选中选项, "all", 1, "1", IF(MAX('原表'[原数值列]) = 1, 1, 0), "2", IF(MAX('原表'[原数值列]) = 2, 1, 0), "3+", IF(MAX('原表'[原数值列]) >= 3 && MAX('原表'[原数值列]) <= 30, 1, 0), 1 )
4. 配置切片器与筛选逻辑
- 删除原有普通切片器,新建一个切片器,将
切片器选项表中的分组选项字段拖入; - 给所有需要被该切片器控制的视觉对象添加筛选器:将
筛选开关度量值拖入,设置为等于1; - 调整切片器样式至需求状态即可。
注意事项
- 若原表包含1-30以外的数值,计算列中的
BLANK()会排除这些值,如需保留可在SWITCH表达式中添加对应分支; - 确保
切片器选项表与原表未建立关联,完全依靠度量值实现筛选逻辑。
内容的提问来源于stack exchange,提问作者John Doe
相关产品推荐
相关产品推荐

