本篇文章将介绍IF与SWITCH函数的各种用法,这两个函数属于逻辑函数,虽然比较简单,但却是不可或缺的。
IF函数
- 语法:
IF( <logical_test> , <value_if_true> [, <value_if_false>] )
- 作用:检查第一参数的判断结果,如果为 TRUE,则返回第二参数的值,如果为FALSE则返回第三参数的值。其中,第三参数可省略,默认为空。
DAX中的IF函数完全继承于Excel,而且也比较简单,因此就不再啰嗦,我们直接通过一个例子来学习。用到的计算列表达式如下:
销售额是否大于100 = IF('订单表'[销售额]>100,"是","否")
价格区间 =
IF('订单表'[销售额]<40,"0-40",
IF('订单表'[销售额]<80,"40-80",
IF('订单表'[销售额]<120,"80-120",
IF('订单表'[销售额]<160,"120-160",
IF('订单表'[销售额]<200,"160-200","≥200")))))
结果如下图所示:
此外,IF函数有一个特性,那就是当第二参数与第三参数同时存在逻辑值与空值时,会把空值强制转换成逻辑值FALSE。下面用一个例子来说明这一点,用到的计算列表达式如下:
2-销售额是否大于100 = IF('订单表'[销售额]>100,"是",BLANK())
3-销售额是否大于100 = IF('订单表'[销售额]>100,TRUE(),BLANK())
结果如下图所示:
SWITCH函数
- 语法:
SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])
- 作用:对给定的第一参数的表达式的值,依次判断是否与
<value>
参数相等,然后返回第一个相等的<value>
所对应的<result>
,若与所有的<value>
都不相等,那么就返回<else>
参数,<else>
参数可省略,默认为空。
下面通过一个例子来学习,用到的计算列表达式如下:
产品是否属于智能设备 =
SWITCH(
'产品表'[产品名称],
"智能手表","智能手表属于智能设备",
"智能手环","智能手环属于智能设备",
"VR眼睛","VR眼睛属于智能设备",
"否"
)
单位利润是否大于50 =
SWITCH(
'产品表'[单位利润]>50,
TRUE(),"是",
FALSE(),"否"
)
结果如下:
此外,SWITCH的各个value
参数都是表达式,第一参数的表达式的值是与value
参数的表达式的值进行判断的,因此,SWITCH的用法比较灵活。下面来看一个SWITCH函数的非常规用法的例子,用到的计算列表达式如下:
利润区间 =
SWITCH(
TRUE(),
'产品表'[单位利润]<10 , "0-10",
'产品表'[单位利润]<20 , "10-20",
'产品表'[单位利润]<30 , "20-30",
'产品表'[单位利润]<40 , "30-40",
'产品表'[单位利润]<50 , "40-50",
"≥50"
)
结果如下图所示:
DAX系列文章中涉及到的案例文件,均已上传到QQ群:344353627,若有需要,可自行加群获取。