从数据到信息
从信息到洞察

逻辑函数

我们经常需要在表达式中构建逻辑条件,例如,根据列值或截获的错误条件来实现不同的计算。在这些情况下,你可以使用 DAX 中的逻辑函数。在上一节“处理DAX表达式中的错误”中,你已经了解到这类DAX表达式的两个最重要的函数是IF和IFERROR。

了解逻辑函数

逻辑函数非常直观,函数的名字就代表了功能,它们是AND, FALSE, IF, IFERROR, NOT, TRUE和OR。例如,你希望仅当价格列包含正确的数值时,才将数量乘以价格,则可以使用以下模式:

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

如果你没有使用IFERROR,并且价格列包含无效的数字,那么计算列将提示错误,因为如果单个行产生了计算错误,这个错误将传递到整个列。但是,使用IFERROR会截获错误,并将其替换为空值。在处理DAX表达式中的错误一文的最后,你将了解到IFERROR是个需要谨慎使用的函数。

SWITCH

这个类别中另一个有趣的函数是SWITCH,当你有一个包含少量不重复值的列,并且希望根据列值获得不同的行为时,它非常有用。例如,产品表的尺寸列包含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函数有个有趣的用法,你可以用它来检查同一个表达式中的多个条件,因为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"
)
使用TRUE作为第一参数的作用是,返回条件判断List中为第一个为TRUE的结果
原创内容 转载请联系作者授权:PowerBI极客 » 逻辑函数

说点什么

avatar
1000
 
鼓掌微笑开心憧憬爱你色并不觉得吃瓜doge二哈喵喵思考笑哭捂脸悲伤大哭抓狂汗偷笑打脸捂眼黑线问号晕拜拜闭嘴衰咒骂ok作揖
  订阅本文评论  
提醒