Power BI两类筛选需求:单选项切片器及A/B数据完整性筛选器
解决Power BI的两个筛选与展示需求
我来一步步帮你搞定这两个Power BI的需求,分两部分详细说明:
一、创建仅包含“Received”选项的切片器
要实现只有“Received”一个选项的切片器,我们可以通过新建自定义计算表来实现:
- 切换到Power BI的数据视图或建模视图
- 点击「新建表」,输入以下DAX公式(记得替换成你实际的表名):
这个公式会生成一个只有一行一列的表,唯一值就是Received Slicer = DATATABLE("Status", STRING, {{"Received"}})Received - 回到报告视图,从字段列表中把新建表的
Status字段拖到画布上,选择「切片器」视觉对象 - 此时切片器就只会显示“Received”这一个选项,直接勾选即可使用
二、实现“Yes/No”筛选器,过滤同时拥有A、B非Null数据的记录
先明确你的核心需求:当勾选“Yes”时,仅展示那些同一用户既有A列非空行、又有B列非空行的记录(即Neha和Arti),最终展示移除sno后的汇总数据。
原始数据集参考:
Name class sno A B Neha 11 A-1 10 Null Neha 11 B-1 Null 10 Arti 12 A-2 30 Null Arti 12 B-2 Null 40 Dua 9 A-3 20 Null Arun 8 B-4 Null 40
步骤1:创建判断用户是否符合条件的计算列
在你的数据集表中新建一个计算列,用DAX判断每个用户是否同时拥有A、B非空的数据:
Has Both A and B = VAR UserHasA = CALCULATE(COUNTROWS('你的数据集表名'), ALLEXCEPT('你的数据集表名', '你的数据集表名'[Name]), NOT(ISBLANK('你的数据集表名'[A]))) VAR UserHasB = CALCULATE(COUNTROWS('你的数据集表名'), ALLEXCEPT('你的数据集表名', '你的数据集表名'[Name]), NOT(ISBLANK('你的数据集表名'[B]))) RETURN IF(UserHasA > 0 && UserHasB > 0, "Yes", "No")
- 逻辑说明:通过
ALLEXCEPT锁定当前用户,分别统计该用户有多少行A非空、多少行B非空,两者都大于0则标记为“Yes”,否则为“No”
步骤2:创建“Yes/No”切片器
从字段列表中把刚创建的Has Both A and B字段拖到画布上,选择「切片器」视觉对象,此时切片器会显示“Yes”和“No”两个选项。
步骤3:创建汇总度量值,展示移除sno后的目标数据
为了得到移除sno后的汇总数据(每个用户的A、B非空值),需要创建两个度量值:
A Value = CALCULATE(MAX('你的数据集表名'[A]), NOT(ISBLANK('你的数据集表名'[A])))
B Value = CALCULATE(MAX('你的数据集表名'[B]), NOT(ISBLANK('你的数据集表名'[B])))
- 逻辑说明:通过
MAX提取当前用户的A/B列非空值(因为同一用户的A/B非空值各只有一个,用MAX/MIN都可以)
步骤4:配置目标展示表格
在画布上添加一个「表格」视觉对象,依次拖入:
- 字段:
Name、class - 度量值:
A Value、B Value
此时当你在切片器中勾选“Yes”时,表格就只会显示Neha和Arti的数据,A列总和为40(10+30),B列总和为50(10+40),完全符合你的需求。
内容的提问来源于stack exchange,提问作者user9239473
相关产品推荐
相关产品推荐

