使用函数表达式为目标表字段赋值

DataWorks数据集成在整库实时同步任务中,支持通过函数表达式为目标表字段赋值。

使用限制

当前仅数据来源为MySQLPolarDB,数据去向为MaxComputeHologres整库实时同步任务,支持在目标表字段赋值时使用函数表达式定义赋值。

支持的函数和语法

支持的函数

函数名称

说明

参数

表达式示例

CONCAT

字符串连接。

  • 参数1...n:可以是另一个字段(#{col})值、内置变量或者字符串常量("string"),可选,无数量限制。

concat(#{name},${table_name_src},"_01")

DATE_FORMAT

将时间戳转换为特定格式的时间字符串。

  • 参数1:数值类型上游字段,10UNIX时间戳或13位毫秒时间戳。

  • 参数2:时间戳类型,unix表示10UNIX时间戳,millis表示13位毫秒时间戳。

  • 参数3:转换时使用的时区。

  • 参数4:需要格式化为的日期字符串格式,例如yyyy-MM-dd HH:mm:ss:SSS ZZyyyy代表年份,MM代表月份,dd代表天,HH代表24小时制时,mm代表分钟,ss代表秒,SSS代表毫秒,ZZ代表时区。

date_format(#{timestamp},"millis","Asia/Shanghai","yyyy-MM-dd HH:mm:ss.SSS ZZ")

TO_TIMESTAMP

将时间转换成10位或者13位时间戳。

  • 参数1:文本类型上游字段,特定格式的时间字符串。

  • 参数2:时间字符串格式,例如yyyy-MM-dd HH:mm:ss:SSS ZZyyyy代表年份,MM代表月份,dd代表天,HH代表24小时制时,mm代表分钟,ss代表秒,SSS代表毫秒,ZZ代表时区。

  • 参数3:转换时使用的时区。

  • 参数4:转换的时间戳类型,unix表示10UNIX时间戳,millis表示13位毫秒时间戳。

to_timestamp(#{create_time},"yyyy-MM-dd HH:mm:ss","Asia/Shanghai","millis")

DATE_CONVERT

将特定格式位于特定时区的时间字符串转换为另一种特定格式位于另一特定时区的时间字符串。

  • 参数1:文本类型上游字段,特定格式的时间字符串。

  • 参数2:上游字段时间字符串格式,例如yyyy-MM-dd HH:mm:ss:SSS ZZyyyy代表年份,MM代表月份,dd代表天,HH代表24小时制时,mm代表分钟,ss代表秒,SSS代表毫秒,ZZ代表时区。

  • 参数3:转换的原时区。

  • 参数4:需要格式化为的目标日期字符串格式,例如yyyy-MM-dd HH:mm:ss:SSS ZZyyyy代表年份,MM代表月份,dd代表天,HH代表24小时制时,mm代表分钟,ss代表秒,SSS代表毫秒,ZZ代表时区。

  • 参数5:转换的目标时区。

date_convert(#{create_time},"yyyy-MM-dd HH:mm:ss","Asia/Shanghai","yyyyMMdd","UTC")

SUBSTRING

获取字符串中的子串。

  • 参数1:文本类型上游字段。

  • 参数2:子串的起始位置,子串包含起始位置字符,最小起始位置为0。

  • 参数3:(可选)子串长度,长度值小于等于0时返回从起始位置到末尾的子串。

substring(#{name},0,2)

LOWER

字符串转小写。

  • 参数1:文本类型上游字段或者内置变量。

lower(#{name})

UPPER

字符串转大写。

  • 参数1:文本类型上游字段或者内置变量

upper(#{name})

支持的语法

  • 仅支持函数调用表达式,表达式内容为函数名、括号和参数,不支持其他类型表达式,例如:DATE_FORMAT(#{create_time},"millis","Asia/Shanghai","yyyyMMdd")

  • 函数表达式参数支持使用""引用字符常量,例如:CONCAT("hello","world")

  • 函数表达式参数支持使用数字引用数值常量,例如:SUBSTRING(#{col1},0,10)

  • 函数表达式的参数支持嵌套函数调用,例如:CONCAT(SUSTRING(#{col1},0,10),"test")

  • 函数表达式的参数支持使用#{}引用上游节点输出列值。

  • 函数表达式的参数支持使用${}引用内置变量,支持的内置变量类型与各通道附加列设置可选的内置变量类型相同,例如:CONCAT(SUSTRING(#{col1},0,10),${DATASOURCE_NAME_SRC})

  • 函数名和内置变量名大小写不敏感。

前提条件

操作步骤

一、进入整库实时任务编辑页

  1. 登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的数据集成 > 数据集成,在下拉框中选择对应工作空间后单击进入数据集成

  2. 在左侧导航栏单击image,进入同步任务页面。

  3. 找到已创建的整库实时同步任务,单击操作列的更多 > 编辑,进入同步任务编辑页。

二、在目标表添加函数处理列

添加的函数处理需要写入到目标表的列中,您可以先编辑目标表结构添加字段。

  1. 在整库实时任务编辑页,单击下一步,找到目标表映射区域,单击刷新映射

  2. 找到需要增加函数处理列的目标表,单击目标表名image按钮进入目标表结构编辑页面。

    image

  3. 字段区域单击添加字段,配置完成后单击应用并刷新映射

    image

    您也可通过批量操作中的目标表结构-批量修改和新增字段选项,对多个目标表添加函数处理列。

    image

三、定义函数表达式

  1. 目标表字段赋值列单击配置,进入字段赋值页面。

    image

  2. 目标表字段区域找到已添加的函数处理列,选择赋值方式函数。然后在赋值列填写函数内容。支持的函数和语法,请参见支持的函数和语法

    image