当前位置:   article > 正文

DAX: 用SWITCH函数替换嵌套IF函数_dax case when

dax case when

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
            )
        )
    )
)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

可以SWITCH函数进行替代。

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

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

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号