CASE_OPERATION
根据逻辑条件 CASE 的结果创建新列。CASE 操作遍历 CASE 条件并在满足第一个条件时返回值。条件为 true 后,该操作将停止读取并返回结果。如果没有条件为 true,则返回默认值。
参数
-
valueExpression:条件。 -
withExpressions:聚合结果的配置。 -
targetColumn:新创建的列的名称。
例 示例
{ "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" } } } }
有效聚合函数
下表显示了可以在 CASE 运算中使用的所有有效聚合函数。
| 列类型 | 状况 | valueExpression | withExpressions | 返回值 |
|---|---|---|---|---|
|
数值 |
总和 |
`:sum.column.1` |
|
返回 |
|
平均值 |
`:mean.column.1` |
|
返回 |
|
|
平均绝对偏差 |
`:meanabsolutedeviation.column.1` |
|
返回 |
|
|
中位数 |
`:median.column.1` |
|
返回 |
|
|
乘积 |
`:product.column.1` |
|
返回 |
|
|
标准偏差 |
`:standarddeviation.column.1` |
|
返回 |
|
|
方差 |
`:variance.column.1` |
|
返回 |
|
|
均值标准误差 |
`:standarderrorofmean.column.1` |
|
返回 |
|
|
偏度 |
`:skewness.column.1` |
|
返回 |
|
|
峰度 |
`:kurtosis.column.1` |
|
返回 |
|
|
日期时间/数值/文本 |
计数 |
`:count.column.1` |
|
返回 |
|
去重计数 |
`:countdistinct.column.1` |
|
返回 |
|
|
最小值 |
`:min.column.1` |
|
返回 |
|
|
最大值 |
`:max.column.1` |
|
返回 |
valueExpression 中的有效条件
下表显示了支持的条件和您可以使用的值表达式。
| 列类型 | 状况 | valueExpression | 描述 |
|---|---|---|---|
|
字符串 |
包含 |
contains(`column`, 'text') |
用于测试列中的值是否包含文本的条件 |
|
不包含 |
!contains(`column`, 'text') |
用于测试列中的值是否不包含文本的条件 |
|
|
匹配项 |
matches(`column`, 'pattern') |
用于测试列中的值是否与模式匹配的条件 |
|
|
不匹配 |
!matches(`column`, 'pattern') |
用于测试列中的值是否与模式不匹配的条件 |
|
|
开头为 |
startsWith(`column`, 'text') |
用于测试列中的值是否以文本开头的条件 |
|
|
开头不是 |
!startsWith(`column`, 'text') |
用于测试列中的值是否不以文本开头的条件 |
|
|
结尾为 |
endsWith(`column`, 'text') |
用于测试列中的值是否以文本结尾的条件 |
|
|
不以以下值结尾 |
!endsWith(`column`, 'text') |
用于测试列中的值是否不以文本结尾的条件 |
|
|
数值 |
小于 |
`column` < number |
用于测试列中的值是否小于数字的条件 |
|
小于或等于 |
`column` <= number |
用于测试列中的值是否小于或等于数字的条件 |
|
|
大于 |
`column` > number |
用于测试列中的值是否大于数字的条件 |
|
|
大于或等于 |
`column` >= number |
用于测试列中的值是否大于或等于数字的条件 |
|
|
介于 |
isBetween(`column`, minNumber, maxNumber) |
用于测试列中的值是否介于 minNumber 和 maxNumber 之间的条件 |
|
|
不在二者之间 |
!isBetween(`column`, minNumber, maxNumber) |
用于测试列中的值是否不在 minNumber 和 maxNumber 之间的条件 |
|
|
布尔值 |
为 true |
`column` = TRUE |
用于测试列中的值是否为布尔值 TRUE 的条件 |
|
为 false |
`column` = FALSE |
用于测试列中的值是否为布尔值 FALSE 的条件 |
|
|
日期/时间戳 |
早于 |
`column` < 'date' |
用于测试列中的值是否早于日期的条件 |
|
早于或等于 |
`column` <= 'date' |
用于测试列中的值是否早于或等于日期的条件 |
|
|
晚于 |
`column` > 'date' |
用于测试列中的值是否晚于日期的条件 |
|
|
晚于或等于 |
`column` >= 'date' |
用于测试列中的值是否晚于或等于日期的条件 |
|
|
字符串/数值/日期/时间戳 |
正好是 |
`column` = 'value' |
用于测试列中的值是否正好是值的条件 |
|
不是 |
`column` != 'value' |
用于测试列中的值是否不是值的条件 |
|
|
缺失 |
isMissing(`column`) |
用于测试列中的值是否缺失的条件 |
|
|
未缺失 |
!isMissing(`column`) |
用于测试列中的值是否未缺失的条件 |
|
|
有效 |
isValid(`column`, datatype) |
用于测试列中的值是否有效的条件(该值属于数据类型或可以转换为数据类型) |
|
|
无效 |
!isValid(`column`, datatype) |
用于测试列中的值是否无效的条件(该值属于数据类型或可以转换为数据类型) |
|
|
嵌套 |
缺失 |
isMissing(`column`) |
用于测试列中的值是否缺失的条件 |
|
未缺失 |
!isMissing(`column`) |
用于测试列中的值是否未缺失的条件 |
|
|
有效 |
isValid(`column`, datatype) |
用于测试列中的值是否有效的条件(该值属于数据类型或可以转换为数据类型) |
|
|
无效 |
!isValid(`column`, datatype) |
用于测试列中的值是否无效的条件(该值属于数据类型或可以转换为数据类型) |