DAX中是否存在与SQL CASE语句功能类似的函数?
DAX 实现 SQL CASE 逻辑的方案
DAX 没有与 SQL CASE 语句同名的原生语法,SWITCH 函数是和 SQL CASE 功能、执行逻辑完全对齐的等价实现,单条件简单场景也可以用 IF 函数简化写法。
针对你给出的SQL示例逻辑:当pri column字段值为'p'时返回policy number字段值,无匹配时返回空,结果列命名为policy pri number,对应DAX写法如下:
- 通用多条件兼容写法(完全匹配CASE执行逻辑)
使用SWITCH(TRUE(), ...)模式,该模式会按书写顺序依次判断条件,匹配到第一个满足的条件即返回对应结果,所有条件不满足时返回设置的默认值,和SQL CASE的执行顺序、逻辑完全一致:
-- 计算列写法,替换成你实际的表名即可 policy pri number = SWITCH( TRUE(), '你的表名'[pri column] = "p", '你的表名'[policy number], BLANK() -- 所有条件不匹配时返回空,和原SQL无ELSE分支的默认行为一致 )
如果是编写度量值,只需要根据计算上下文调整字段的聚合方式即可,比如用SELECTEDVALUE取筛选上下文的当前值、或者用MAX/SUM等做聚合,判断结构不需要改动。
- 单条件简化写法
只有一个判断条件时,可以直接用IF函数实现,代码更简短:
policy pri number = IF( '你的表名'[pri column] = "p", '你的表名'[policy number], BLANK() )
语法对应关系参考:
SQL中多分支CASE写法CASE WHEN 条件1 THEN 值1 WHEN 条件2 THEN 值2 ... ELSE 默认值 END,可以1:1转换为DAX写法SWITCH(TRUE(), 条件1, 值1, 条件2, 值2, ..., 默认值),支持任意数量的条件分支,没有数量限制。
内容的提问来源于stack exchange,提问作者zain qazi
相关产品推荐
相关产品推荐

