You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 03:24:51