

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

# BOOLEAN\_OPERATION
<a name="recipe-actions.BOOLEAN_OPERATION"></a>

根据逻辑条件 IF 的结果创建新列。如果布尔表达式为 true，则返回 true 值；如果布尔表达式为 false，则返回 false 值，或者返回自定义值。

**参数**
+ `trueValueExpression`：满足条件时的结果。
+ `falseValueExpression`：未满足条件时的结果。
+ `valueExpression`：布尔值条件。
+ `withExpressions`：聚合结果的配置。
+ `targetColumn`：新创建的列的名称。

您可以在、和 ValueExpression 中使用常量值 trueValueExpression、列引用 falseValueExpression 和聚合结果。

**Example 示例：常量值**  
保持不变的值，例如数字或句子。  
  

```
{
  "RecipeStep": {
    "Action": {
      "Operation": "BOOLEAN_OPERATION",
      "Parameters": {
        "trueValueExpression": "It is true.",
        "falseValueExpression": "It is false.",
        "valueExpression": "`column.1` < 2000",
        "targetColumn": "result.column"
      }
    }
  }
}
```

**Example 示例：列引用**  
数据集中列的值。  
  

```
{
  "RecipeStep": {
    "Action": {
      "Operation": "BOOLEAN_OPERATION",
      "Parameters": {
        "trueValueExpression": "`column.2`",
        "falseValueExpression": "`column.3`",
        "valueExpression": "`column.1` < `column.4`",
        "targetColumn": "result.column"
      }
    }
  }
}
```

**Example 示例：聚合结果**  
聚合函数计算的值。聚合函数对列执行计算，并返回单个值。  
  

```
{
  "RecipeStep": {
    "Action": {
      "Operation": "BOOLEAN_OPERATION",
      "Parameters": {
        "trueValueExpression": "`:mincolumn.2`",
        "falseValueExpression": "`:maxcolumn.3`",
        "valueExpression": "`column.1` < `:avgcolumn.4`",
        "withExpressions": "[{\"name\":\"mincolumn.2\",\"value\":\"min(`column.2`)\",\"type\":\"aggregate\"},{\"name\":\"maxcolumn.3\",\"value\":\"max(`column.3`)\",\"type\":\"aggregate\"},{\"name\":\"avgcolumn.4\",\"value\":\"avg(`column.4`)\",\"type\":\"aggregate\"}]",
        "targetColumn": "result.column"
      }
    }
  }
}
```
用户需要通过转义将 JSON 转换为字符串。  
请注意，、和 ValueExpressi trueValueExpression on falseValueExpression 中的参数名称必须与 withExpressions 中的名称匹配。要使用某些列的聚合结果，您需要为它们创建参数并提供聚合函数。

**Example 示例：**  

```
{
  "RecipeStep": {
    "Action": {
      "Operation": "BOOLEAN_OPERATION",
      "Parameters": {
        "trueValueExpression": "It is true.",
        "falseValueExpression": "It is false.",
        "valueExpression": "`column.1` < 2000",
        "targetColumn": "result.column"
      }
    }
  }
}
```

**Example 示例：and/or**  
您可以使用 and 和 or 组合多个条件。  
  

```
{
  "RecipeStep": {
    "Action": {
      "Operation": "BOOLEAN_OPERATION",
      "Parameters": {
        "trueValueExpression": "It is true.",
        "falseValueExpression": "It is false.",
        "valueExpression": "`column.1` < 2000 and `column.2` >= `column.3",
        "targetColumn": "result.column"
      }
    }
  }
}
{
  "RecipeStep": {
    "Action": {
      "Operation": "BOOLEAN_OPERATION",
      "Parameters": {
        "trueValueExpression": "`column.4`",
        "falseValueExpression": "`column.5`",
        "valueExpression": "startsWith(`column1`, 'value1') or endsWith(`column2`, 'value2')",
        "targetColumn": "result.column"
      }
    }
  }
}
```

## 有效聚合函数
<a name="valid-aggregate-functions"></a>

下表显示了可以在布尔运算中使用的所有有效聚合函数。



- ** 数值 **
  - **条件:** 总和 / **valueExpression:** `:sum.column.1` / **withExpressions:**  <pre>[<br />   {<br />      "name": "sum.column.1",<br />      "value": "sum(`column.1`)",<br />      "type": "aggregate"<br />   }<br />]</pre>  / **返回值:** 返回 `column.1` 的总和
  - **条件:** 平均值 / **valueExpression:** `:mean.column.1` / **withExpressions:**  <pre>[<br />   {    <br />      "name": "mean.column.1",    <br />      "value": "avg(`column.1`)",    <br />      "type": "aggregate"  <br />   }<br />]</pre>  / **返回值:** 返回 `column.1` 的平均值。
  - **条件:** 平均绝对偏差 / **valueExpression:** `:meanabsolutedeviation.column.1` / **withExpressions:**  <pre>[<br />   {    <br />      "name": "meanabsolutedeviation.column.1",<br />      "value": "mean_absolute_deviation(`column.1`)",<br />      "type": "aggregate"<br />   }<br />]</pre>  / **返回值:** 返回 `column.1` 的平均绝对偏差
  - **条件:** 中位数 / **valueExpression:** `:median.column.1` / **withExpressions:**  <pre>[<br />   {<br />      "name": "median.column.1",<br />      "value": "median(`column.1`)",<br />      "type": "aggregate"<br />   }<br />]</pre>  / **返回值:** 返回 `column.1` 的中位数
  - **条件:** 产品 / **valueExpression:** `:product.column.1` / **withExpressions:**  <pre>[<br />   {<br />      "name": "product.column.1",<br />      "value": "product(`column.1`)",<br />      "type": "aggregate"<br />   }<br />]</pre>  / **返回值:** 返回 `column.1` 的乘积
  - **条件:** 标准差 / **valueExpression:** `:standarddeviation.column.1` / **withExpressions:**  <pre>[<br />   {<br />      "name": "standarddeviation.column.1",<br />      "value": "stddev(`column.1`)",<br />      "type": "aggregate"<br />   }<br />]</pre>  / **返回值:** 返回 `column.1` 的标准差
  - **条件:** 方差 / **valueExpression:** `:variance.column.1` / **withExpressions:**  <pre>[<br />   {<br />      "name": "variance.column.1",<br />      "value": "variance(`column.1`)",<br />      "type": "aggregate"<br />   }<br />]</pre>  / **返回值:** 返回 `column.1` 的方差
  - **条件:** 均值标准误差 / **valueExpression:** `:standarderrorofmean.column.1` / **withExpressions:**  <pre>[<br />   {<br />   "name": "standarderrorofmean.column.1",<br />   "value": "standard_error_of_mean(`column.1`)",<br />   "type": "aggregate"<br />   }<br />]</pre>  / **返回值:** 返回 `column.1` 平均值的标准误差
  - **条件:** 偏度 / **valueExpression:** `:skewness.column.1` / **withExpressions:**  <pre>[<br />   {<br />      "name": "skewness.column.1",<br />      "value": "skewness(`column.1`)",<br />      "type": "aggregate"<br />   }<br />]</pre>  / **返回值:** 返回 `column.1` 的偏度
  - **条件:** 峰度 / **valueExpression:** `:kurtosis.column.1` / **withExpressions:**  <pre>[<br />   {<br />      "name": "kurtosis.column.1",<br />      "value": "kurtosis(`column.1`)",<br />      "type": "aggregate"<br />   }<br />]</pre>  / **返回值:** 返回 `column.1` 的峰度

- ** Datetime/Numeric/Text **
  - **条件:** 计数 / **valueExpression:** `:count.column.1` / **withExpressions:**  <pre>[<br />   {<br />      "name": "count.column.1",<br />      "value": "count(`column.1`)",<br />      "type": "aggregate"<br />   }<br />]</pre>  / **返回值:** 返回 `column.1` 中的总行数。
  - **条件:** 去重计数 / **valueExpression:** `:countdistinct.column.1` / **withExpressions:**  <pre>[<br />   {<br />      "name": "count.column.1",<br />      "value": "count(distinct `column.1`)",<br />      "type": "aggregate"<br />   }<br />]</pre>  / **返回值:** 返回 `column.1` 中的去重总行数
  - **条件:** 最小值 / **valueExpression:** `:min.column.1` / **withExpressions:**  <pre>[<br />   {<br />      "name": "min.column.1",<br />      "value": "min(`column.1`)",<br />      "type": "aggregate"<br />   }<br />]</pre>  / **返回值:** 返回 `column.1` 的最小值
  - **条件:** 最大值 / **valueExpression:** `:max.column.1` / **withExpressions:**  <pre>[<br />   {<br />      "name": "max.column.1",<br />      "value": "max(`column.1`)",<br />      "type": "aggregate"<br />   }<br />]</pre>  / **返回值:** 返回 `column.1` 的最大值。



## valueExpression 中的有效条件
<a name="valid-conditions-table"></a>

下表显示了支持的条件和您可以使用的值表达式。



- ** 字符串 **
  - **条件:** 包含 / **valueExpression:** contains(`column`, 'text') / **说明:** 用于测试列中的值是否包含文本的条件
  - **条件:** 不包含 / **valueExpression:** \!contains(`column`, 'text') / **说明:** 用于测试列中的值是否不包含文本的条件
  - **条件:** Matches / **valueExpression:** matches(`column`, 'pattern') / **说明:** 用于测试列中的值是否与模式匹配的条件
  - **条件:** 不匹配 / **valueExpression:** \!matches(`column`, 'pattern') / **说明:** 用于测试列中的值是否与模式不匹配的条件
  - **条件:** 开头为 / **valueExpression:** startsWith(`column`, 'text') / **说明:** 用于测试列中的值是否以文本开头的条件
  - **条件:** 开头不是 / **valueExpression:** \!startsWith(`column`, 'text') / **说明:** 用于测试列中的值是否不以文本开头的条件
  - **条件:** 结尾为 / **valueExpression:** endsWith(`column`, 'text') / **说明:** 用于测试列中的值是否以文本结尾的条件
  - **条件:** 不以以下值结尾 / **valueExpression:** \!endsWith(`column`, 'text') / **说明:** 用于测试列中的值是否不以文本结尾的条件

- ** 数值 **
  - **条件:** Less than / **valueExpression:** `column` < number / **说明:** 用于测试列中的值是否小于数字的条件
  - **条件:** 小于或等于 / **valueExpression:** `column` <= number / **说明:** 用于测试列中的值是否小于或等于数字的条件
  - **条件:** Greater than / **valueExpression:** `column` > number / **说明:** 用于测试列中的值是否大于数字的条件
  - **条件:** 大于或等于 / **valueExpression:** `column` >= number / **说明:** 用于测试列中的值是否大于或等于数字的条件
  - **条件:** 介于 / **valueExpression:** isBetween(`column`, minNumber, maxNumber) / **说明:** 用于测试列中的值是否介于 minNumber 和 maxNumber 之间的条件
  - **条件:** 不在二者之间 / **valueExpression:** \!isBetween(`column`, minNumber, maxNumber) / **说明:** 用于测试列中的值是否不在 minNumber 和 maxNumber 之间的条件

- ** 布尔值 **
  - **条件:** 为 true / **valueExpression:** `column` = TRUE / **说明:** 用于测试列中的值是否为布尔值 TRUE 的条件
  - **条件:** 为 false / **valueExpression:** `column` = FALSE / **说明:** 用于测试列中的值是否为布尔值 FALSE 的条件

- ** 日期/时间戳 **
  - **条件:** 早于 / **valueExpression:** `column` < 'date' / **说明:** 用于测试列中的值是否早于日期的条件
  - **条件:** 早于或等于 / **valueExpression:** `column` <= 'date' / **说明:** 用于测试列中的值是否早于或等于日期的条件
  - **条件:** 晚于 / **valueExpression:** `column` > 'date' / **说明:** 用于测试列中的值是否晚于日期的条件
  - **条件:** 晚于或等于 / **valueExpression:** `column` >= 'date' / **说明:** 用于测试列中的值是否晚于或等于日期的条件

- ** String/Numeric/Date/Timestamp **
  - **条件:** 正好是 / **valueExpression:** `column` = 'value' / **说明:** 用于测试列中的值是否正好是值的条件
  - **条件:** 不是 / **valueExpression:** `column` \!= 'value' / **说明:** 用于测试列中的值是否不是值的条件
  - **条件:** 缺失 / **valueExpression:** isMissing(`column`) / **说明:** 用于测试列中的值是否缺失的条件
  - **条件:** 未缺失 / **valueExpression:** \!isMissing(`column`) / **说明:** 用于测试列中的值是否未缺失的条件
  - **条件:** 有效 / **valueExpression:** isValid(`column`, datatype) / **说明:** 用于测试列中的值是否有效的条件（该值属于数据类型或可以转换为数据类型）
  - **条件:** 无效 / **valueExpression:** \!isValid(`column`, datatype) / **说明:** 用于测试列中的值是否无效的条件（该值属于数据类型或可以转换为数据类型）

- ** 嵌套 **
  - **条件:** 缺失 / **valueExpression:** isMissing(`column`) / **说明:** 用于测试列中的值是否缺失的条件
  - **条件:** 未缺失 / **valueExpression:** \!isMissing(`column`) / **说明:** 用于测试列中的值是否未缺失的条件
  - **条件:** 有效 / **valueExpression:** isValid(`column`, datatype) / **说明:** 用于测试列中的值是否有效的条件（该值属于数据类型或可以转换为数据类型）
  - **条件:** 无效 / **valueExpression:** \!isValid(`column`, datatype) / **说明:** 用于测试列中的值是否无效的条件（该值属于数据类型或可以转换为数据类型）

