Power BI中如何仅筛选可视化对象而不影响底层数据?
Power BI可视化筛选不影响底层数据统计的解决方案
核心思路
不直接对flow_start_date设置可视化级筛选(会过滤底层数据),而是通过DAX度量值实现两个目标:
- 矩阵仅显示
t、t-1、t-2三个日期作为行标签 - 每个日期行的统计值包含所有仍在流程中的数据(包括
flow_start_date < t-2的记录)
具体步骤
1. 定义当前日期t
根据你的报表逻辑创建DAX度量值获取t:
- 若基于数据表中最新的日期:
当前日期 t = MAX('你的数据表'[flow_start_date])
- 若使用当前系统日期:
当前日期 t = TODAY()
2. 创建统计度量值
编写度量值统计所有仍在流程中的数据,不受后续可视化筛选的影响:
在流程中数量 = VAR CurrentDate = [当前日期 t] RETURN CALCULATE( COUNT('你的数据表'[记录ID]), -- 替换为实际统计字段 -- 替换为判断数据是否在流程中的逻辑,比如用结束日期为空表示未完成 ISBLANK('你的数据表'[flow_end_date]), '你的数据表'[flow_start_date] <= CurrentDate )
3. 控制矩阵行标签显示范围
- 将
flow_start_date拖入矩阵的行区域 - 对行标签设置可视化级筛选:选择「高级筛选」,设置规则为:
这样矩阵仅显示flow_start_date 大于或等于 [当前日期 t] - 2 且 flow_start_date 小于或等于 [当前日期 t]t、t-1、t-2三个日期行
4. 适配行级统计(可选)
如果需要每个日期行显示「截至该日期仍在流程中的总数据量」,修改度量值为:
截至行日期的在流程数量 = VAR RowDate = SELECTEDVALUE('你的数据表'[flow_start_date]) RETURN CALCULATE( COUNT('你的数据表'[记录ID]), ISBLANK('你的数据表'[flow_end_date]), '你的数据表'[flow_start_date] <= RowDate )
此时矩阵的t、t-1、t-2行,会分别展示截至对应日期、所有仍在流程中的数据总量(包含更早启动的记录)。
关键说明
可视化级筛选仅控制矩阵显示哪些行,不会过滤度量值计算时调用的底层数据,完全满足你“计入统计但不显示早于t-2日期行”的需求。
内容的提问来源于stack exchange,提问作者Roberto92
相关产品推荐
相关产品推荐

