如何将Power BI DAX中的嵌套IF语句替换为SWITCH函数
将嵌套IF的DAX代码转换为SWITCH格式
DAX中的SWITCH函数比多层嵌套IF更易读、更易维护,以下是转换后的代码:
SWITCH( VALUES(Rankings[Attribute]), "AERIAL DUELS WON %", FORMAT(SUM(Rankings[Value]), "##%"), "CROSSES", FORMAT(SUM(Rankings[Value]), "##"), "Crossing%", FORMAT(SUM(Rankings[Value]), "##%"), "FORWARD PASSES %", FORMAT(SUM(Rankings[Value]), "##%"), "FOULS COMMITTED", FORMAT(SUM(Rankings[Value]), "##"), "GOALS", FORMAT(SUM(Rankings[Value]), "##"), "GOALS CONCEDED", FORMAT(SUM(Rankings[Value]), "##"), "GROUND DUELS WON %", FORMAT(SUM(Rankings[Value]), "##%"), "NON-PENALTY SHOT CONVERSION RATE %", FORMAT(SUM(Rankings[Value]), "##%"), "NON-PENALTY SHOTS", FORMAT(SUM(Rankings[Value]), "##"), "OWN HALF BALL LOSS", FORMAT(SUM(Rankings[Value]), "##"), "PASS FORWARD IN FINAL 3RD %", FORMAT(SUM(Rankings[Value]), "##%"), "PASSES", FORMAT(SUM(Rankings[Value]), "##"), "POSSESSION REGAINS IN OPPO HALF TOTAL", FORMAT(SUM(Rankings[Value]), "##"), "Possession%", FORMAT(SUM(Rankings[Value]), "##%"), "RED CARDS", IF(SUM(Rankings[Value]) > 0, FORMAT(SUM(Rankings[Value]), "##"), 0), "SHOTS INSIDE BOX", FORMAT(SUM(Rankings[Value]), "##"), "SHOTS ON TARGET %", FORMAT(SUM(Rankings[Value]), "##%"), "SHOTS OUTSIDE BOX", FORMAT(SUM(Rankings[Value]), "##"), "Successful Box Cross", FORMAT(SUM(Rankings[Value]), "##"), "YELLOW CARDS", FORMAT(SUM(Rankings[Value]), "##") // 如需处理未匹配的Attribute值,可在此添加默认返回值,例如:BLANK() )
转换要点
- 提取重复的
VALUES(Rankings[Attribute])作为SWITCH的统一判断表达式,避免重复书写 - 原IF的每个条件与结果直接对应为SWITCH的一组键值对
- 保留"RED CARDS"分支的嵌套IF逻辑,因为该分支需要额外判断数值是否大于0
- 若存在未覆盖的Attribute值,可在SWITCH末尾添加默认返回值
内容的提问来源于stack exchange,提问作者PowerSports
相关产品推荐
相关产品推荐

