本篇文章将介绍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,若有需要,可自行加群获取。

  加入Q群