IF 函数 (DAX)

检查是否满足作为第一个参数提供的条件。如果该条件为 TRUE,则返回一个值;如果该条件为 FALSE,则返回另一个值。

语法

IF(logical_test>,<value_if_true>, value_if_false)

参数

术语

定义

logical_test

计算结果可以为 TRUE 或 FALSE 的任何值或表达式。

value_if_true

在逻辑测试为 TRUE 时返回的值。如果省略,则返回 TRUE。

value_if_false

在逻辑测试为 FALSE 时返回的值。如果省略,则返回 FALSE。

返回值

可由表达式返回的任何类型的值。

注释

如果省略了 value_if_true 或 value_if_false 的值,则 IF 将其视为空字符串值 ("")。

如果在表达式中引用的值是某一列,则 IF 将返回与当前行相对应的值。

IF 函数尝试返回列中的单个数据类型。因此,如果 value_if_true 和 value_if_false 返回的值属于不同的数据类型,则 IF 函数会隐式转换数据类型以便适合列中的这两种值。例如,公式 IF(<condition>,TRUE(),0) 返回由 1 和 0 组成的列,并且可以对结果求和,但公式 IF(<condition>,TRUE(),FALSE()) 只返回逻辑值。有关隐式数据类型转换的详细信息,请参阅 PowerPivot 工作簿中支持的数据类型

示例

下面的示例使用嵌套 IF 函数,这些函数对 Adventure Works DW2008R2 中表 FactCallCenter 的 Calls 列中的数字进行计算。该函数按如下所示分配标签:如果电话的数目少于 200,则为 low;如果电话的数目少于 300 但多于 200,则为 medium;对于其他所有值,则为 high。

=IF([Calls]<200,"low",IF([Calls]<300,"medium","high"))

下面的示例通过使用来自 Adventure Works DW2008R2 的表 ProspectiveBuyer 中的列,获取包含 California 地区的潜在客户的城市的列表。因为该列表旨在计划一个面向已婚人士或者有小孩人士的市场活动,所以,IF 函数中的条件将检查 [MaritalStatus] 和 [NumberChildrenAtHome] 列的值,并且在满足任何一个条件且该客户位于 California 时输出城市。 否则,它将输出空字符串。 

=IF([StateProvinceCode]= "CA" && ([MaritalStatus] = "M" || [NumberChildrenAtHome] >1),[City])

请注意,括号用于控制 AND (&&) 和 OR (||) 运算符的使用顺序。还要注意,没有为 value_if_false 指定任何值。因此,该函数返回默认值,即空字符串。