Power BI中基于availableDataTypes数组字段创建多选择切片器需求
数组字段多选切片器实现方案
1. 新建切片器专用表
先创建一个独立的切片器选项表,别直接用原表的availableDataTypes字段(它存的是数组字符串,没法直接做切片选项)。用DAX新建表:
切片器选项 = DATATABLE( "选项值", STRING, { {"[1]"}, {"[2]"}, {"[3]"}, {"无"} } )
这个表就是切片器的下拉选项来源,包含你需要的四个选项。
2. 编写筛选度量值
写一个度量值来判断每行是否符合切片器的选择条件:
符合筛选条件 = VAR 所选值 = SELECTCOLUMNS('切片器选项', "值", SUBSTITUTE(SUBSTITUTE([选项值], "[", ""), "]", "")) VAR 所选数字列表 = FILTER(所选值, [值] <> "无") VAR 已选无选项 = CONTAINS('切片器选项', [选项值], "无") VAR 当前行数据 = SUBSTITUTE(SUBSTITUTE(MAX('原表'[availableDataTypes]), "[", ""), "]", "") VAR 当前行数据列表 = SPLIT(当前行数据, ",") VAR 所选数字都在当前行 = COUNTROWS(所选数字列表) = COUNTROWS(INTERSECT(所选数字列表, 当前行数据列表)) VAR 当前行为空 = 当前行数据 = "" RETURN SWITCH( TRUE(), // 只选了"无",显示空值行 已选无选项 && COUNTROWS(所选数字列表) = 0, IF(当前行为空, 1, 0), // 选了"无"加数字选项,显示空值行+包含所有所选数字的行 已选无选项 && COUNTROWS(所选数字列表) > 0, IF(当前行为空 || 所选数字都在当前行, 1, 0), // 只选数字选项,显示包含所有所选数字的行(不管顺序和组合) COUNTROWS(所选数字列表) > 0, IF(所选数字都在当前行, 1, 0), // 没选任何选项,显示所有行 1 )
逻辑说明
- 先把切片器选项的
[]去掉,提取纯数字或“无” - 拆分当前行的
availableDataTypes为单独的数值列表 - 根据切片器的选择组合判断:
- 选单个数字时,显示包含该数字的行(单值或组合值都算)
- 选多个数字时,显示包含所有所选数字的行(不管顺序)
- 选“无”时,显示
availableDataTypes为空的行;和数字选项搭配时,同时显示空值行与符合数字条件的行
3. 配置筛选和切片器
- 把
切片器选项表的「选项值」字段拖到画布上做成切片器,开启多选功能 - 给原表的视觉对象(比如表格)添加筛选条件:选择「符合筛选条件」等于1
额外注意
如果原表的availableDataTypes里有空格(比如[1, 2]),要在处理当前行数据时加上替换空格的操作,把当前行数据的DAX改成:
VAR 当前行数据 = SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(MAX('原表'[availableDataTypes]), "[", ""), "]", ""), " ", "")
内容的提问来源于stack exchange,提问作者Pervez Bellary
相关产品推荐
相关产品推荐

