Power BI簇状柱形图:实现单列独立筛选及SUM聚合功能求助
解决方案:用度量值实现独立筛选的簇状柱形图
你遇到的核心问题是用了计算列而非度量值——计算列是行级静态值,无法在视觉对象中灵活适配聚合和上下文筛选,而度量值是动态计算的聚合值,完美适配你的需求。
步骤1:创建两个带独立筛选的度量值
假设你的数据表名为业务数据表,需要的两个筛选条件分别是:
- 系列A:
状态="已完成"且部门="销售部"的金额总和 - 系列B:
状态="待处理"且部门="客服部"的金额总和
分别创建以下两个DAX度量值:
销售部已完成金额 = CALCULATE( SUM('业务数据表'[金额]), '业务数据表'[状态] = "已完成", '业务数据表'[部门] = "销售部" )
客服部待处理金额 = CALCULATE( SUM('业务数据表'[金额]), '业务数据表'[状态] = "待处理", '业务数据表'[部门] = "客服部" )
步骤2:构建簇状柱形图
- 将你需要分组的维度(比如
日期、客户类型)拖入轴区域 - 将上述两个度量值拖入值区域,此时图表会自动生成两个独立的柱形系列,各自遵循内部的筛选条件,不会被视觉对象的统一筛选同时影响
为什么计算列不行?
你之前用IF(AND())创建的计算列,是在数据加载时就为每一行生成固定值(比如符合条件就返回金额,否则返回0),拖入视觉对象后SUM这个列虽然结果正确,但存在两个弊端:
- 无法动态响应视觉对象的上下文筛选(比如你添加日期范围筛选时,计算列的结果不会自动更新,而度量值会)
- 计算列会增加数据集的存储体积,尤其当表行数很大时
进阶:保留部分公共筛选
如果需要让视觉对象的某些筛选(比如日期范围)同时作用于两个系列,可以在CALCULATE中加入ALLSELECTED函数来保留指定上下文,示例:
销售部已完成金额 = CALCULATE( SUM('业务数据表'[金额]), '业务数据表'[状态] = "已完成", '业务数据表'[部门] = "销售部", ALLSELECTED('业务数据表'[日期]) // 保留日期筛选的上下文 )
内容的提问来源于stack exchange,提问作者Laura Hill
相关产品推荐
相关产品推荐

