Power BI中如何使用DAX Countax添加列统计颜色数与生成新百分比
Power BI 新增目标DAX计算列的实现方案
1. 新增 # colors 列(按产品统计颜色总数量)
进入数据视图,在表结构栏点击「新建列」,输入以下DAX代码,将代码中的占位字段替换为你数据模型里的实际列名即可:
# colors = CALCULATE( DISTINCTCOUNT('你的数据表名'[颜色字段名]), ALLEXCEPT('你的数据表名', '你的数据表名'[唯一产品标识列名]) )
- 逻辑说明:通过
ALLEXCEPT锁定当前行所属的产品维度范围,统计该产品下所有不重复的颜色数量。受业务规则限制每个产品最多对应2种颜色,最终输出结果只会是1或2,完全匹配展示要求。
2. 新增 New % 列(按规则匹配对应百分比值)
同样通过「新建列」入口添加以下DAX代码:
New % = VAR CurrentProductColorCount = CALCULATE( DISTINCTCOUNT('你的数据表名'[颜色字段名]), ALLEXCEPT('你的数据表名', '你的数据表名'[唯一产品标识列名]) ) VAR BlueValueOfCurrentProduct = CALCULATE( SELECTEDVALUE('你的数据表名'[百分比字段名]), '你的数据表名'[颜色字段名] = "蓝色", // 替换为数据中蓝色的实际匹配文本 ALLEXCEPT('你的数据表名', '你的数据表名'[唯一产品标识列名]) ) VAR SingleColorValueOfCurrentProduct = CALCULATE( SELECTEDVALUE('你的数据表名'[百分比字段名]), ALLEXCEPT('你的数据表名', '你的数据表名'[唯一产品标识列名]) ) RETURN IF(CurrentProductColorCount = 2, BlueValueOfCurrentProduct, SingleColorValueOfCurrentProduct)
- 注意事项:
- 代码内所有占位的表名、字段名、颜色匹配文本(如数据中蓝色标识为"Blue"需要同步替换)要和实际模型保持一致,否则会出现匹配错误
SELECTEDVALUE会自动判断筛选范围内的返回值唯一性,适配单产品最多2条记录的业务场景,不会触发多值返回的报错- 同一产品下的所有行记录,
New %列的展示值保持统一,和目标表的展示逻辑完全一致
内容的提问来源于stack exchange,提问作者Elau
相关产品推荐
相关产品推荐

