如何在PowerBI中用DAX自定义列实现含NOT IN的SQL CASE WHEN逻辑
在PowerBI中用DAX重构SQL CASE WHEN逻辑
要把你提供的SQL CASE WHEN转换成PowerBI自定义列的逻辑,用DAX的SWITCH函数最清晰(比嵌套IF更易读),以下是对应实现:
最终DAX代码(自定义列)
my_custom_column = SWITCH( TRUE(), // 对应第一个CASE条件:Account=2且Currency属于EUR/GBP [Account] = 2 && [Currency] IN {"EUR", "GBP"}, "Europe", // 对应第二个CASE条件:Account=3且Currency不属于USD/JPY [Account] = 3 && NOT([Currency] IN {"USD", "JPY"}), "Emerging Market", // 对应第三个CASE条件:Account=4 [Account] = 4, "Account 4", // 对应第四个CASE条件:code以123开头(模糊匹配前缀) STARTSWITH([code], "123"), 1, // 对应第五个CASE条件:code以222结尾(模糊匹配后缀) ENDSWITH([code], "222"), 2, // 对应ELSE分支 [Country_Name] )
关键逻辑对应说明
- IN/ NOT IN判断:DAX里用
IN运算符直接实现SQL的IN逻辑,否定则加NOT()包裹 - 前缀模糊匹配:用DAX内置函数
STARTSWITH()替代SQL的like '123%' - 后缀模糊匹配:用DAX内置函数
ENDSWITH()替代SQL的like '%222' - 多条件AND:直接用
&&连接两个条件,和SQL的AND逻辑一致
使用步骤
- 在PowerBI数据视图中,选中目标表
- 点击顶部菜单栏的「列工具」→「新建列」
- 粘贴上述DAX代码,按回车完成自定义列创建
内容的提问来源于stack exchange,提问作者dingo
相关产品推荐
相关产品推荐

