

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在公式表达式中使用条件函数
<a name="expression-conditional-functions"></a>

在[转换](transforms.md)和[指标](metrics.md)中，您可以使用以下函数来检查条件并返回不同的结果，无论该条件的计算结果为真还是假。


| 函数 | 说明 | 
| --- | --- | 
| `if(condition, result_if_true, result_if_false)` | 计算 `condition`，如果条件计算结果为真，则返回 `result_if_true`，如果条件计算结果为 `false`，则返回 `result_if_false`。<br />`condition` 必须是数字。此函数将 `0` 和一个空字符串视为 `false`，其他所有内容（包括 `NaN`）都视为 `true`。布尔值转换为 `0`（假）和 `1`（真）。<br />您可以从此函数返回 [无 常量](expression-constants.md#none-definition)，以丢弃特定条件的输出。这意味着您可以筛选出不符合条件的数据点。有关更多信息，请参阅 [筛选数据点](expression-tutorials.md#filter-data)。

**Example 示例**  
+ `if(0, x, y)` 返回变量 `y`。
+ `if(5, x, y)` 返回变量 `x`。
+ 如果变量 `temp` 大于 `300`，则 `if(gt(temp, 300), x, y)` 返回变量 `x`。
+ 如果 `if(gt(temp, 300), temp, none)` 大于或等于 `300`，则返回变量 `temp`，如果 `temp` 小于 `300`，则返回 `none`（无值）。<br />我们建议您将 UFCS 用于嵌套条件函数，其中一个或多个参数是条件函数。您可以使用 `if(condition, result_if_true)` 计算条件和 `elif(condition, result_if_true, result_if_false)` 计算其他条件。<br />例如，您可以使用 `if(condition1, result1_if_true).elif(condition2, result2_if_true, result2_if_false)`，而不使用 `if(condition1, result1_if_true, if(condition2, result2_if_true, result2_if_false))`。<br />您还可以链接其他中间条件函数。例如，您可以使用 `if(condition1, result1_if_true).elif(condition2, result2_if_true).elif(condition3, result3_if_true, result3_if_false)` 而不是嵌套多个 `if` 语句，例如 `if(condition1, result1_if_true, if(condition2, result2_if_true, if(condition3, result3_if_true result3_if_false)))`。 您必须将 `elif(condition, result_if_true, result_if_false)`与 UFCS 一起使用。  | 