历史版本17 :新增计算列功能说明 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本

FineDataLink 版本功能变动
4.0.23
支持对常量、参数和其他字段进行公式计算或逻辑映射,将结果放到新的一列,参与后续运算或进行输出
4.1.8.3

在公式编辑可选的参数中,looptimes类型从字符串变成了数值

cyctime类型从字符串变成了日期

4.1.11.3
  • 新增和优化公式REGEXP_SUBSTR、CONCATENATE、FORMAT

  • 优化计算逻辑问题,支持的字段类型为 bool、long、double、string、timestamp

  • 优化交互提示,写函数时下方联动出现函数介绍

1.2 功能简介

在不影响原有字段的情况下,新增计算列算子可利用原有字段通过引用或计算获得一个新的字段。

如下图所示:

8.png

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

用户有张「合同事实表」,表中已有字段「注册时间」和「签约时间」。如下图所示:

1683773294898923.png

2.2 新建定时任务

新建定时任务,拖入「数据转换」节点。如下图所示:

3.png

2.3 数据输入

进入数据转换节点,拖入DB 表输入算子,取出存放在数据库中的合同事实表数据。如下图所示:

4.png

2.4 新增列

1)拖入「新增计算列」算子,新增一列,字段名为时间差」,值为签约时间与注册时间之间的时间差。如下图所示:

6.png

点击「确定」按钮后,最后结果如下图所示:

注1:该页面支持字段的新增、删除,不支持字段的排序。

注2:新增后的字段将按列表顺序,追加到原字段末尾;如用户希望调整字段顺序,可在输出算子的「字段映射」处调整。

7.png

各设置项说明如下表所示:

设置项说明
字段名

新增字段的名称;默认为空,必填

  • 不允许为空

  • 限制长度<=30字符

  • 只能是字母 (a-z A-Z)、数字 (0-9)、下划线(_)、或中文的组合

  • 不能包含空格

  • 不能与已有字段名和新增的其他字段名重复

字段值

展示字段值;默认为空,必填

点击时直接弹出公式编辑框

公式编辑框

11.png

在公式编辑框左侧,可看到支持的函数

鼠标悬浮到某个函数时,在公式释义区域展示公式简介、参数说明、示例;鼠标点击左侧公式时,在公式编辑框中自动插入对应公式

注1:公式编辑框中的字段和参数,需要从左侧点选或通过自动补全补出;若想手动输入,需注意:手写参数使用 ${} 包裹生效,字段使用 #{} 包裹生效,参数和字段不匹配时标红(大小写敏感)。

注2:若新增列值的计算公式中包含参数,且参数为小数,将直接截取整数部分参与计算。

字段类型

1)根据字段计算的结果类型展示字段类型,不允许手动指定字段类型;用户如果想要做类型转换,可利用相关转换公式,或者接入字段设置算子完成

2)当输出结果类型无法自动识别,如手动输入 NULL 时,允许用户自行指定类型:

注:4.1.11.3 之前的数值类型默认为 double类型

4.1.11.3 以及以上版本支持的字段类型为 bool、long、double、string、timestamp。

2)点击数据预览,如下图所示:

8.png

2.5 数据后续处理

继续对「合同事实表」进行数据处理,或者使用「DB表输出」算子将数据输出到数据库中。

3. 拓展阅读编辑

3.1 使用示例

还可通过以下内容了解「新增计算列」算子的使用:

说明
相关文档
逻辑原理说明,例如功能逻辑说明、所支持运算符的对应计算逻辑等函数计算格式
支持的表达式具体介绍

文本函数概述

日期函数概述

逻辑函数概述

数值函数

其他函数

最佳实践

常见日期公式

缺失值处理

新增列_条件赋值

新增列_分组赋值

字符串拼接和截取

字符串清洗

3.2 问题解答

新增计算列算子中没有 sum 和窗口函数,建议使用「Spark SQL」算子实现,详情请参见:SparkSQL窗口函数