1. 概述
1.1 版本
FineDataLink 版本 | 功能变动 |
---|---|
4.0.23 | 支持对常量、参数和其他字段进行公式计算或逻辑映射,将结果放到新的一列,参与后续运算或进行输出 |
4.1.8.3 | 在公式编辑可选的参数中,looptimes类型从字符串变成了数值 cyctime类型从字符串变成了日期 |
4.1.11.3 |
|
1.2 功能简介
在不影响原有字段的情况下,「新增计算列」算子可利用原有字段通过引用或计算获得一个新的字段。
如下图所示:
1.3 注意事项
用户的数据源是 MySQL,使用「新增计算列」算子时,遇到以下问题:
对 600.185 和 700.185 分别取前两位小数,四舍五入后的结果不一样,分别为:600.18、700.19。
4131.9*0.45 两数相乘,正常计算结果是 1859.355,「新增计算列」算子的结果为 1859.3549999999998。
「新增计算列」算子中,数值计算是用 double 类型的,在处理一些精度问题上会有一些问题。
建议用户将字段类型调整为 decimal,使用「Spark SQL」算子进行计算。
2. 示例
2.1 场景模拟
在对表数据进行处理过程中,用户想新增一列数据,记录合同签约时间与注册时间之间的时间差。
示例数据:合同事实表.xls
用户有张「合同事实表」,表中已有字段「注册时间」和「签约时间」。如下图所示:
2.2 新建定时任务
新建定时任务,拖入「数据转换」节点。如下图所示:
2.3 数据输入
进入「数据转换」节点,拖入「DB 表输入」算子,取出存放在数据库中的「合同事实表」数据。如下图所示:
2.4 新增列
1)拖入「新增计算列」算子,新增一列,字段名为「时间差」,值为签约时间与注册时间之间的时间差。如下图所示:
点击「确定」按钮后,最后结果如下图所示:
注1:该页面支持字段的新增、删除,不支持字段的排序。
注2:新增后的字段将按列表顺序,追加到原字段末尾;如用户希望调整字段顺序,可在输出算子的「字段映射」处调整。
各设置项说明如下表所示:
设置项 | 说明 |
---|---|
字段名 | 新增字段的名称;默认为空,必填
|
字段值 | 展示字段值;默认为空,必填 点击时直接弹出公式编辑框 |
公式编辑框 | 在公式编辑框左侧,可看到支持的函数 鼠标悬浮到某个函数时,在公式释义区域展示公式简介、参数说明、示例;鼠标点击左侧公式时,在公式编辑框中自动插入对应公式 注1:公式编辑框中的字段和参数,需要从左侧点选或通过自动补全补出;若想手动输入,需注意:手写参数使用 ${} 包裹生效,字段使用 #{} 包裹生效,参数和字段不匹配时标红(大小写敏感)。 注2:若新增列值的计算公式中包含参数,且参数为小数,将直接截取整数部分参与计算。 |
字段类型 | 1)根据字段计算的结果类型展示字段类型,不允许手动指定字段类型;用户如果想要做类型转换,可利用相关转换公式,或者接入字段设置算子完成 2)当输出结果类型无法自动识别,如手动输入 NULL 时,允许用户自行指定类型: 注:4.1.11.3 之前的数值类型默认为 double类型 4.1.11.3 以及以上版本支持的字段类型为 bool、long、double、string、timestamp。 |
2)点击「数据预览」,如下图所示:
2.5 数据后续处理
继续对「合同事实表」进行数据处理,或者使用「DB表输出」算子将数据输出到数据库中。