回忆是一座桥
却是通往寂寞的牢

17、理解IF与SWITCH

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

未经允许不得转载:夕枫 » 17、理解IF与SWITCH
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论