admin管理员组

文章数量:1794759

DAX: 用SWITCH函数替换嵌套IF函数

DAX: 用SWITCH函数替换嵌套IF函数

IF函数和SWITCH函数的应用场景都比较简单,主要是根据设定不同的条件来获取不同的返回结果。两个函数可以相互替换,例如,IF(<logical_test>,<value_if_true>, value_if_false)可以用SWITCH函数改写为,SWITCH(<logical_test>, TRUE(), <value_if_true>, value_if_false)。 很多场景下,需要进行判断的条件只有两三种,因此相对来说IF函数使用的频率更高。但是很多时候,需要判断的条件可能会多余3条,此时,如果还使用IF函数进行书写,就会出现多层嵌套引用的情况,在阅读和书写上都带来不便。 例如下面是一个嵌套了四层IF函数的表达式,其中IF函数的判断条件部分使用了等于表达式:

IF Function = IF ( expression = A, 1, IF ( expression = 2, B, IF ( express = 3, C, IF ( expression = 4, D ) ) ) )

可以SWITCH函数进行替代。

SWITCH Function = SWITCH ( expression, 1, A, 2, B, 3, C, 4, D )

如果IF内的判断条件是下面这种大于或者小于这种比较情况。

If function = IF ( expression > A, 1, IF ( expression > B, 2, C ) )

则可以用下面这种形式的SWITCH表达式进行替换。

SWITCH function = SWITCH ( TRUE (), expression > A, 1, expression > B, 2, C )

在这个SWITCH表达式中用了TRUE()函数作为条件判断的参数,这就相当于无论这个SWITCH表达式在何种上下文环境中运行,该判断条件的结果都是TRUE。根据SWITCH的运算特点,Power BI会去依次检查其后面设定的看起返回结果是否为TRUE,如果是则返回其对应的参数结果。如果没有符合条件的就返回设定值。这样,通过使用一个TRUE()函数作为条件判断参数,就使得后面的SWITCH表达式实现了前一个IF表达式的功能。

本文标签: 函数嵌套DAXswitch