如何在PowerBI矩阵组件中添加自定义计算列(如State3)?
在PowerBI矩阵中添加自定义计算列(State3)的解决方案
可以实现,推荐以下两种实用方法:
方法一:使用计算组(无需修改原始数据)
计算组是PowerBI中扩展矩阵动态列的最佳方式,步骤如下:
- 点击顶部「建模」选项卡,选择「新建计算组」
- 在弹出的计算组编辑界面,添加一个计算项,命名为
State3,输入DAX公式:
State3 = VAR OK_Count = CALCULATE(COUNTROWS('data'), 'data'[Value] = "OK") VAR State1_Count = CALCULATE(COUNTROWS('data'), 'data'[Value] = "State1") RETURN OK_Count - State1_Count
注:如果你的计数逻辑不是
COUNTROWS,替换成你当前使用的度量值即可
- 将计算组中的「计算项」字段拖到矩阵的列区域,放在原
Value字段的后方,矩阵会自动新增State3列并计算对应值
方法二:构建状态维度表(适合基础模型场景)
如果不想使用计算组,可通过新增维度表实现:
- 新建一个手动输入的表「状态维度」,包含以下行:
状态 OK State1 State2 State3 - 在「模型」视图中,建立
data表的Value列与「状态维度」表的「状态」列的单向关系(仅从维度表指向data表) - 新建统一度量值
状态计数,用于处理不同状态的计算逻辑:
状态计数 = SWITCH( SELECTEDVALUE('状态维度'[状态]), "OK", CALCULATE(COUNTROWS('data'), 'data'[Value] = "OK"), "State1", CALCULATE(COUNTROWS('data'), 'data'[Value] = "State1"), "State2", CALCULATE(COUNTROWS('data'), 'data'[Value] = "State2"), "State3", CALCULATE(COUNTROWS('data'), 'data'[Value] = "OK") - CALCULATE(COUNTROWS('data'), 'data'[Value] = "State1"), 0 )
- 修改矩阵配置:将「状态维度」的「状态」字段拖到列区域,把
状态计数拖到值区域,即可得到包含State3的目标矩阵
关键说明
你之前无法直接将度量值拖到列区域,是因为矩阵列区域默认接受的是字段的枚举值(比如Value列的OK/State1/State2),而度量值是动态计算结果,不属于固定字段值,因此需要通过计算组或维度表来扩展列的范围。
内容的提问来源于stack exchange,提问作者Malo
相关产品推荐
相关产品推荐

