Skip to main content

字段映射

字段映射

在支持向导模式配置的数据源中,均需要配置字段映射,标识源表与目标表之间每个字段的映射关系。离线开发仅支持「基本功能」中的format转换,不支持其他类型的数据转换功能,不建议在数据传输过程中进行过多的转换,而是在落盘后再转换

基本功能

离线开发所支持的任意数据源、目标之间,字段映射模块支持以下基本功能:

  • 支持选择部分字段进行读取/写入。
  • format处理:数据源为字符串类型的字段,若存储了日期数据,且映射到目标库的date或time等时间类型,支持指定format格式,例如 "yyyy-MM-dd hh:mm:ss,若不配置此转换规则,则此数据可能被认为是脏数据。format处理支持Java格式化时间的标准格式,可参考 [SimpleDateFormat]
  • 支持在数据源一侧添加常量/系统变量作为虚拟字段值,请参考[虚拟字段]
caution

在配置字段映射时,建议检查源表、目标表之间的字段类型映射关系,建议将目标表的字段类型统一设置为string,并在下游数据加工任务中进行类型转换,提高数据同步环节的可靠性,尤其是写入Hive表

连线映射

在源表和目标表的字段之间连线,标识对应的2个字段的映射关系,离线开发目前仅支持一一映射,不支持一对多,或多对一映射。虽然可以手动连线,但建议用户采用同名映射或同行映射,便于快速配置。

同名与同行映射

按照字段名,或者左右两侧的字段序号进行映射匹配,再次点击可取消映射关系。

元数据刷新

在「字段映射」中,新增元数据「刷新」按钮。点击按钮后,将重新获取来源和目标表的信息,字段信息也随之更新切分键和增量标识可选择字段也会进行更新。

image-20221008140606658

虚拟字段

支持在数据源端增加虚拟字段,作为附加信息写入到目标端

tip

虚拟字段必须被映射至结果表,否则不会生效

常量字段

当需要添加某个常量信息至结果表时,可使用虚拟字段的常量字段功能,点击「添加常量」按钮,在弹窗中的「常量值」文本框中输入,例如 shanghai(注意无需输入引号),则此字符串常量将会被写入目标端的指定字段

变量字段

这里的变量字段指的是系统的调度参数,点击「添加常量」按钮,在「常量值」文本框中输入系统变量(变量名称需单独填写),例如${bdp.system.bizdate},则系统将根据周期调度中系统变量的取值作为此字段的值。对于变量字段,同样可以将此字段的内容进行format处理,format处理请参考本页的[基本功能]

数据同步字段转换

在日常使用数据同步过程中,可能存在需要对某些字段进行加密解密或其他字段转换操作,针对这种场景,用户可以使用「数据同步字段转换」的功能。

配置数据同步字段转换流程如下:

一、根据demo编写jar包

(1)maven工程构建
                <dependency>
<groupId>com.dtstack.flinkx</groupId>
<artifactId>flinkx-extend</artifactId>
<version>1.12-SNAPSHOT</version>
<scope>provided</scope>
</dependency>

注意点:

  1. flink原生依赖引入后,依赖的scope级别一定要为provided,不要是compile级别。否则会出现类冲突的问题。

  2. 自定义Converter会应用于各个插件,如需要引入guava、hadoop、fastjson等常用依赖,尽量shade

  3. 其他非flink依赖的scope为compile级别即可。

(2)接口实现

正常情况下,如果要实现自定义Converter,引入以上依赖后,只需要实现com.dtstack.flinkx.converter.IColumnConverter接口即可。在这里对该接口中的方法简单说明下:

@param source

T convert(Object source) throws Exception

(3)参数解析

例:如需将Mysql的Int类型转换为一个String类型

  • 泛型T:需要设置为结果类型String

  • Object source :Flinkx通过jdbc的ResultSet.getObject(int index)方式读取的数据

(4)Demo示例

下面是自定义解析XML文件接口实现示例:

public class Int2StringConverter implements IColumnConverter<String>{
@Override
public String convert(Object source) throws Exception {
return String.valueOf(source);
}
}
(5)编译打包

将对应的maven工程进行编译打包

mvn clean package -DSkipTests

二、上传jar包

jar包封装完成后,在「数据开发->资源管理」中进行上传。

字段转换1

三、引用jar包进行字段转换

在填写完成「数据来源」和「选择目标」两个步骤的相关信息后,进行「字段映射」配置,可在此处进行「数据来源」字段的转换,如图所示

字段转换2

点击字段列表操作下的「编辑icon」,如图所示

  1. 从资源目录中选取「转换方式」jar包

  2. 填写jar包中方法对应的类名

  3. 填写字段转换后的字段类型(默认为原字段类型)

点击确认后,就完成了单个字段的配置

字段转换3

点击字段列表上方的「批量字段转换」按钮,可以快捷地进行批量字段转换,如下图所示,这样就完成了数据同步字段转换的配置

字段转换4

再进行字段映射连线的配置以及通道控制信息的填写,完成任务配置。点击运行或提交到调度运行,就可进行字段转换。