美文网首页DAX从入门到精通
DAX从入门到精通 2-6-2 逻辑函数

DAX从入门到精通 2-6-2 逻辑函数

作者: PowerBI入门到实践 | 来源:发表于2019-06-21 22:55 被阅读0次

    逻辑函数

    有时候,你需要在表达式中建立一个逻辑关系,例如。根据列的值不同而实施不同的计算或者拦截错误。这时候,你可以使用DAX中的逻辑函数。之前我们已经学过if和iferror函数。
    逻辑函数很简单,它们的功能和它们的名字一样,有AND, FALSE, IF, IFERROR, NOT, TRUE, and OR。例如,当price价格包含正确的数值时候,计算数量*价格。可以这样写表达式:

    Amount = IFERROR ( Sales[Quantity] * Sales[Price], BLANK ( ) )
    

    如果没有使用iferror,那么如果其中一行出现计算错误,那么该错误将传导到整个列,导致整个列计算错误。所以使用了iferror,就可以拦截报错,并且替换为一个空值blank。
    另外一个有趣的函数是switch,当你有一列包含不多的唯一值时候,你想对这些值进行不同的计算。例如product表有一列包含了L,M,S,XL,你要把它们转换为有意义的表达式。可以用if函数嵌套的写法。如下:

    SizeDesc =
    IF ( DProduct[Size] = "S", "Small",
    IF ( Product[Size] = "M", "Medium",
    IF ( Product[Size] = "L", "Large",
    IF ( Product[Size] = "XL", "Extra Large", "Other" ) ) ) )
    

    另一种更高效的写法是使用switch函数:

    SizeDesc =
    SWITCH ( Product[Size],
    "S", "Small",
    "M", "Medium",
    "L", "Large",
    "XL", "Extra Large",
    "Other"
    )
    

    后面的代码具有更高的可读性,虽然不会速度更快,因为DAX会自动把switch转换为嵌套的if函数。

    小技巧
    这里有个关于switch的小技巧,针对同样的表达式实行多个条件的判断。因为switch会自动转换为多个嵌套的if函数,第一个达到匹配要求的会被返回,因此,可以使用下面的写法格式:

    SWITCH (
    TRUE (),
    Product[Size] = "XL" && Product[Color] = "Red", "Red and XL",
    Product[Size] = "XL" && Product[Color] = "Blue", "Blue and XL",
    Product[Size] = "L" && Product[Color] = "Green", "Green and L"
    )
    

    使用ture()作为第一个参数,意思就是返回第一个判断结果为true的表达式。

    相关文章

      网友评论

        本文标题:DAX从入门到精通 2-6-2 逻辑函数

        本文链接:https://www.haomeiwen.com/subject/yoepqctx.html