注册
DMETL5批量流程向导功能详解
技术分享/ 文章详情 /

DMETL5批量流程向导功能详解

海音 2023/03/31 1404 2 0

环境说明
操作系统版本:Windows 10
DMETL5版本:V5.0.3.05-Build(2021.12.20-104448)单机版
DM8源端库:本机Windows实例,端口5236
DM8目的库:本机Windows实例,端口5238
一、功能介绍

  • 在我们使用ETL工具时,经常会需要配置许多简单的转换,这些转换使用的组件很少,但是需要配置的表很多,如果一个一个的配置就非常的麻烦,全都是重复的没技术含量的操作。这个时候,批量流程向导功能应运而生,专门解决这个问题。
  • DMETL提供了基于模版的批量生成流程工具,使用批量生成工具可以帮助用户快速生成一系列的转换或者作业,从而避免用户手工去创建多个配置相似流程的繁琐过程。
  • 批量流程向导主要支持单个独立属性的替换,对于节点前后有依赖传递的属性并不支持。所以有些组件虽然可以复制(比如数据清洗转换),但是内部配置不能更改,可能出现生成的转换执行报错的问题。
  • 批量生成的转换可以直接执行无需再进行修改,帮助ETL工作者节省大量时间精力。

二、批量创建变量、函数释义

  • 使用批量流程向导,相当于是将模板的转换名称,数据集等进行相应的更换,因此需要用到许多变量及函数,来告诉ETL工具如何替换相应转换名称及数据集等。灵活运用这些函数及变量,可以使批量流程向导实现更批量生成更复杂的转换。下面仅列举常用变量及函数,更多变量及函数请参考“DMETL用户手册“的”附录二“,”附录三“章节

  • 批量创建变量
    index 批量创建时的下标(序列)
    date 系统当前日期
    time 系统当前时间
    dataSource1 数据读取数据源
    dataSource2 数据装载数据源
    dataSet1 数据源节点数据集
    dataSet2 数据装载节点数据集

  • 批量创建函数
    cutCDCSuffixName 截取去除CDC表名后缀
    getDataSetIdByName2 通过源数据集名,数据库名,模式名匹配
    getDataSetIdByName 通过源数据集名匹配

  • 批量创建变量及批量创建函数具体用法详见
    “三、配置案例2.配置批量生成向导3)配置生成流程c)设置流程名称”以及
    “三、配置案例2.配置批量生成向导5)配置节点信息c)装载节点属性配置”

三、配置案例

  1. 创建模板转换
  • 创建具有代表性的模板流程,主要包含节点信息和连接线信息,后续将以该流程为准创建多个类似的流程。

  • 本次案例采用的是影子表增量同步,在源数据集与目的数据集之间,配置了一个数据清洗转换。如下图:
    image.png

  • 源数据集属性如下图:
    image.png

  • 数据清洗转换配置如下图:
    image.png

  • 规则内部使用了乱码检测功能,将乱码替换为空,如下图:
    image.png

  • 目的数据集配置如下:
    image.png

  1. 配置批量生成向导
    2.1 打开批量流程向导
    image.png
    2.2 选择流程类型
    在设计中打开批量生成工具,流程类型选择界面,如下图所示:
    image.png
  • 用户在此页需指定批量创建流程所在的工程,点击"选择"按钮即可从工程列表中选择相应工程,并选择批量创建流程类型。本次示例选择指定工程为“test”,选择创建类型为“转换”。
    2.3 配置生成流程
    在完成工程和流程类型选择后,点击"下一步"进入“配置生成流程”界面,本次示例以批量生成转换为例,界面如下图所示:
    image.png
    a) 指定转换目录:用于指定批量创建流程所在的目录,点击"选择目录"可以在已指定的工程中选择转换目录。
    b) 指定转换模版:用于指定批量创建流程所基于的模版,点击"选择模版"可以在已指定的工程中选择任意转换作为批量生成转换的模版。
    c) 设置流程名称:因为要保证批量流程名称不同这里使用了变量,变量使用#{}包含,流程名默认为"源数据集名称_#{index}_#
    {current_timestamp_str()}"。#{index}表示批量创建时的下标,#{current_timestamp_str()}表示创建时的时间,可以使用变量date和time代替,一般建议保留#{index}保证名称不同。
    2.4 配置节点信息
    a) 源节点属性配置
    image.png
  • 选中节点"编辑属性"会弹出相应的属性编辑列表,如表源与表装载中支持数据集ID属性的批量配置,有些特殊节点不支持批量配置该页面不会显示属性列表。支持批量配置属性的节点有:CSV、EXCEL、TXT、XML文件装载读取节点,mongoDB、Hbase、表的装载读取节点,SQL脚本读取节点,SQL脚本执行转换节点。
  • 点击表读取节点"编辑值",选择批量配置中表源的数据集,按住ctrl可多选,由于模板是增量同步,因此要在cdcs中选取cdc表,配置信息如下图所示:
    image.png
    b) 数据清洗转换节点
    不支持配置,会直接复制,确保所有表均有NAME域即可
    c) 装载节点属性配置
    image.png
  • 操作列,默认#{dataSet1.getColumns()[1].getName()},获取数据源节点数据集的第二列的名字,一般不需要更改,如下图:
    image.png
  • 数据集ID表达式
    默认#{getDataSetIdByName2 ("dataSourceName","catalogName","scheamName" ,dataSet1.getDataSetName().split("_SHADOW_CDC")[0])}
    需修改为#{getDataSetIdByName2 ("DM8目的端",null,"EMS_TEST" ,dataSet1.getDataSetName().split("_SHADOW_CDC")[0])}
    此处null是由于dm8默认只有一个库,如果是类似dm6的多库形式则要按需填写,如下图:
    image.png
  • 点击”批量创建函数“,选择”getDataSetIdByName2“函数,编辑函数对应的三个参数”dataSourceName“,“catalogName“,“ scheamName ”,此次示例中函数编辑如上图所示,然后点击”确定”。
  • 数据集在名字上存在一定关联性。这时候在属性配置表达式可使用批量创建函数getDataSetIdByName2依据数据源数据集名称在数据源下查找对应数据集返回ID。在本例中具体参数对应如下:
    #{getDataSetIdByName2 (String dataSourceName,String catalogName,String scheamName ,String dataSetName)}
    #{getDataSetIdByName2 ("DM8目的端",null,"EMS_TEST" ,dataSet1.getDataSetName().split("_SHADOW_CDC")[0])}
  • 这里dataSet1是所有包含数据集的节点中变量的一个用法,dataSet1后面的序号"1"对应节点列表中的序号。如果存在特定的对应关系可以创建全局函数进行处理。
  • 查找列属性与模板保持一致,如下图:
    image.png
  • 勾选,生成的目的表属性才会配置插入更新栏配置,如下图:
    image.png
    2.5 确认创建流程
    配置完成后点击下一步,便会在缓存中构建流程信息,流程信息界面如下图所示:
  • 选择需要创建的流程,或创建所有,亦或是有需求将所有转换的引用创建在同一个作业中。勾选上方法选择框,输入作业名称为“增量作业TEST“,再创建流程则会在指定的项目作业目录下创建作业,作业中包含所有流程的引用。
    image.png
  1. 执行批量生成的转换
    3.1 检查批量创建的转换及作业
    image.png
    3.2 执行作业
  • 显示全部执行成功
    image.png
    3.3 检查目的表数据是否插入成功

四、总结

  • 使用“批量流程向导”功能确实可以实现批量生成多个转换,避免了用户手工去创建多个配置相似流程的繁琐过程。节省时间精力。
  • 但是该功能也存在一些不足,比如需要先配置模板、配置向导本身也需要一定的学习成本、不支持较复杂的转换、如果配置错误,那么生成的转换可能全都存在问题。
  • 总的来说,利大于弊,学会了使用该功能,那么日后在碰到类似需求时便可做到胸有成竹,如鱼得水。
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服