掌握SWITCH函数的秘诀:一篇文章就够了

您看看需不需要 2024-05-09 01:59:41

SWITCH函数是DAX语言中的一个非常实用的函数,它主要用于在一系列的条件或表达式中进行选择,它的作用和IF一样,不过在进行多个条件的判断时,写法更简洁,而不用像IF一样多层嵌套。

关于它的用法,在之前分享的DAX函数卡片中也有介绍:

万人期待的DAX函数卡片,开放下载中……

这个函数不难,但是还是有很多星友对它有很多困惑,这里就以这个简单的数据为例,来介绍它的三种用法。

如果将A、E划分到一班,B、C、D划分到二班,用SWITCH判断的方式如下。

方式一

班级 =

SWITCH(

[姓名],

"A","一班",

"B","二班",

"C","二班",

"D","二班",

"E","一班"

)

方式二:

班级 =

SWITCH(

TRUE(),

[姓名]="A","一班",

[姓名]="B","二班",

[姓名]="C","二班",

[姓名]="D","二班",

[姓名]="E","一班"

)

以上两种方式返回相同的结果,其实SWTICH的逻辑很简单,第一个参数是判断依据,如果第2个参数等于第1个参数,返回第3参数(如果有更多判断,后面2个参数为一组,如果第4参数等于第一个参数,返回第5参数……依次类推)。

第一种写法,判断依据就是姓名列,如果当前上下文的姓名是"A",返回"一班";第二种写法,判断依据是TRUE(),如果当前上下文 [姓名]="A" 表达式的结果为真,返回“一班”;

如果是简单的比较是否等于某个值的情况,上面两种写法都可以用,第一种写法更加简洁。不过第二种方式更加灵活,也更加普适,适用的场景更多,所以也更常见。

上面第二种写法还可以利用IN进行优化(参考:IN运算符),也会简洁很多:

班级 =

SWITCH(

TRUE(),

[姓名] IN {"A","E"},"一班",

[姓名] IN {"B","C","D"},"二班"

)

如果是判断依据不是简单的等于某个值,就不适合用第一种方式了,比如对分数进行分组,90分及以上的“优秀”、75分以上90分以下的"良好"……

就不能用第一种写法了,只能用第二种:

成绩分类 =

SWITCH(

TRUE(),

[成绩]>=90,"优秀",

[成绩]>=75,"良好",

[成绩]>=60,"及格",

"不及格"

)

最后一个参数可以不成对出现,如果只有一个,就是不满足以上所有条件时所返回的值,省略时返回BLANK()。

如果注意的是,条件的顺序不能随意调整,如果满足了第一个条件,整个表达式运算结束,不会再判断后面的了。

也正因为如此,上面在写第二个条件判断“良好”时,只需要写成绩大于等于75,不需要重复写小于90,因为不满足第一个条件,默认就是小于90的。

其实还有第三种写法,它和第二种写法类似,不过第一个参数TRUE,换成了FALSE。

第三种方式

对于成绩分组,还可以这样写:

成绩分类 =

SWITCH(

FALSE(),

[成绩]<90,"优秀",

[成绩]<75,"良好",

[成绩]<60,"及格",

"不及格"

)

它是如果条件为假,返回特定值,在某些排除的情况,用FALSE还是挺方便的。

另外,关于SWITCH函数,在写很多条件时,经常有人问问什么报这种错误:SWITCH函数中的参数"n"是必须的。

如下图:

这种错误很明显就是多写了一个逗号,或者你复制别人的度量值时忘记删掉了,把多余的逗号删掉就可以解决,平时写DAX时细心点就好了。

以上就是SWITCH的3种用法,仔细看完后相信你就能完全理解它的用法啦~

更多PowerBI学习资源见:

PowerBI星球

0 阅读:4

您看看需不需要

简介:感谢大家的关注