1. 概述编辑
在不影响原有字段的情况下,「新增计算列」算子可利用原有字段通过引用或计算获得一个新的字段。
本文介绍「新增计算列」算子的一些逻辑原理。
2. 功能概述编辑
2.1 算子功能逻辑说明
| 功能说明 | 参与计算的元素 | 计算方式(可组合嵌套) |
|---|---|---|
| 列间单行计算: 不跨行,在单列或列间进行计算后,将计算值放到新的一列中 | 常量、其他字段、参数、公式 | 直接计算表达式获取结果,表达式包括: 1)元素引用 2)元素间四则运算 3)元素间比较运算 4)元素间逻辑运算 5)元素公式计算
|
逻辑映射: 根据多个条件对原始数据进行分组或其他映射计算处理,将分组结果放到新的一列中 | 常量、其他字段、参数、公式 | 通过IF、SWITCH对作为条件的表达式进行判断,选取符合条件的分支,计算对应表达式获取结果 |
2.2 支持的运算符
2.2.1 四则运算
| 运算符 | 说明 | 参数类型与对应计算逻辑 | 结果类型 |
|---|---|---|---|
| + | 数值相加 日期计算 文本拼接 | 文本 + 文本 / 数值 / 日期时间 / 布尔
日期时间 + 数值X(数值X + 日期时间)(逻辑同ADDTODATE)
数值X + 数值Y
注:不支持日期+日期操作 | 1)文本 + 文本 / 数值 / 日期时间 / 布尔:文本类型 2)日期时间 + 数值X(数值X + 日期时间):日期时间类型 3)数值X + 数值Y:数值类型 |
| / | 数值相除 | 布尔类型,FALSE视为数值0,TRUE视为数值1参与运算 数值 / 数值,数值相除 | 数值类型 运算数中存在NULL,结果为NULL 除数为 0 时,结果为NULL 注:该操作符两端必须为数值类型 |
| * | 数值相乘 | 布尔类型,FALSE视为数值0,TRUE视为数值1参与运算 数值 * 数值,数值相乘 | 数值类型 运算数中存在NULL,结果为NULL 注:该操作符两端必须为数值类型 |
| - | 数值相减 日期计算 | 布尔类型,FALSE视为数值0,TRUE视为数值1参与运算 数值X - 数值Y,数值减 日期时间 - 数值X(逻辑同ADDTODATE),计算指定日期X天前的日期 日期时间 - 日期时间,计算指定日期时间之间的毫秒数 | 1)数值X - 数值Y:数值类型 2)日期时间 - 数值X:日期时间类型 3)日期时间 - 日期时间:数值类型 4)运算数中存在NULL,结果为NULL 注:不支持数值-日期操作;文本类型不能作为减数或被减数 |
2.2.2 比较运算
| 运算符 | 说明 | 参数类型与对应计算逻辑 | 结果类型 |
|---|---|---|---|
> < >= <= = == != | 比较运算 | 文本、数值、日期时间、布尔 1)>、<、>=、<=:要求比较符两侧必须是同类型,不进行自动转换 2)=、==、!=:不要求比较符两侧类型,类型不一致视为不等,类型一致再进行值比较 =和==视为等价输入 | 布尔类型 运算数中存在NULL,结果为NULL 先判断类型,后判断NULL值情况 |
2.2.3 逻辑运算
| 运算符 | 说明 | 参数类型与对应计算逻辑 | 结果类型 |
|---|---|---|---|
| ! | 逻辑非 | 布尔类型 FALSE视为数值0,TRUE视为数值1参与运算 对于数值类型数据:
| 布尔类型 运算数中存在NULL,结果为NULL |
2.2.4 优先级
| 运算符 | 说明 | 参数类型与对应计算逻辑 | 结果类型 |
|---|---|---|---|
| () | 提高运算优先级 | - | - |
2.3 手写公式
手写参数使用${}包裹生效,字段使用#{}包裹生效,参数和字段不匹配时标红(大小写敏感)。
2.4 常量写法
| 表达式种类 | 说明 |
|---|---|
| 文本 | 用双引号包括的内容 |
| 数值 | 无符号包括的数字 |
| NULL | 直接写 NULL 即可 大小写均有效 |
| 布尔 | 直接写 TRUE、FALSE 即可 大小写均有效 |

