

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

# CASE\_OPERATION
<a name="recipe-actions.CASE_OPERATION"></a>

根据逻辑条件 CASE 的结果创建新列。CASE 操作遍历 CASE 条件并在满足第一个条件时返回值。条件为 true 后，该操作将停止读取并返回结果。如果没有条件为 true，则返回默认值。

**参数**
+ `valueExpression`：条件。
+ `withExpressions`：聚合结果的配置。
+ `targetColumn`：新创建的列的名称。

**Example 示例**  
  

```
{
  "RecipeStep": {
    "Action": {
      "Operation": "CASE_OPERATION",
      "Parameters": {
        "valueExpression": "case when `column11` < `column.2` then 'result1' when `column2` < 'value2' then 'result2' else 'high' end",
        "targetColumn": "result.column"
      }
    }
  }
}
```

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

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



- ** 数值 **
  - **条件:** 总和 / **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) / **说明:** 用于测试列中的值是否无效的条件（该值属于数据类型或可以转换为数据类型）

