DMETL快速入门(下) ——信息整合

文章来自达梦技术社区http://bbs.dameng.com/


  一、DMETL介绍
  DMETL是达梦数据库有限公司研制开发的具有自主知识版权的、商品化的数据交换平台,可以快速地实现对基于数据的企业应用集成。DMETL通过建立底层数据交换平台来联系整个企业的异构系统、应用、数据源等,实现在企业内部的ERP、CRM、SCM、数据库、数据仓库,以及其它重要的内部系统之间无缝地共享和交换数据。
  二、模拟案例
  去年以来,甲流H1N1肆虐全球,国内患者也逐渐增多,某市卫生部门启动紧急预案,要求各医院对感冒病人进行登记,隔离观察,对确诊甲流的病人,要及时治疗。这些数据必须每天报送市甲流中心办公室,甲流中心办公室需对确诊甲流的病人,建立档案,补充病人详细个人信息,以便及时对病人家属及其居住所采取防范措施。
  三、实验环境准备
  使用一台电脑,安装DM5.6数据库、Oracle数据库、DMETL,并按以下要求建好库、表环境。

医院:
使用DM5.6数据库,建立数据库HOSPITAL,用户HOSPITAL
执行建表语句
CREATE TABLE GMBR
(
 ID INTEGER IDENTITY(1,1) NOT NULL, --自增ID号
 XM VARCHAR(50),    --姓名
 XB VARCHAR(2),    --性别
 SFZHM VARCHAR(18),   --身份证号码
 SFH1N1 VARCHAR(2),   --是否H1N1患者
 JCRQ TIMESTAMP(0),   --检查日期
 PRIMARY KEY(ID)
)

公安人口库:
使用Oracle10g数据库,实例名ORCL,用户GARKK
执行建表语句
CREATE TABLE RKXX
(
    ID    NUMBER(10,0) NOT NULL, --主健ID
    NAME  VARCHAR2(50) NULL,  --姓名
    SEX   VARCHAR2(2) NULL,  --性别
    HJSZD VARCHAR2(50) NULL,  --户籍所在地
    JZD   VARCHAR2(50) NULL,  --居住地
    HYZK  VARCHAR2(2) NULL,  --婚姻状况
    CSRQ  TIMESTAMP(6) NULL,  --出生日期
    SFZHM VARCHAR2(18) NULL,  --身份证号码
    PRIMARY KEY(ID)
)
甲流中心办公室:
采用DM5.6数据库,建立数据库H1N1CENTER,用户H1N1CENTER
CREATE TABLE GMBR
(
 ID INTEGER IDENTITY(1,1) NOT NULL, --自增ID号
 XM VARCHAR(50),    --姓名
 XB VARCHAR(2),    --性别
 SFZHM VARCHAR(18),   --身份证号码
 SFH1N1 VARCHAR(2),   --是否H1N1患者
 JCRQ TIMESTAMP(0),   --检查日期
 PRIMARY KEY(ID)
)

CREATE TABLE H1N1JL
(
 ID INTEGER,    --主键ID号
 XM VARCHAR(50),    --姓名
 SFZHM VARCHAR(50),   --身份证号码
 QZRQ TIMESTAMP(0),   --确诊日期
 HJSZD VARCHAR(50),   --户籍所在地
 CSRQ TIMESTAMP(0),   --出生日期
 JZD VARCHAR(50),   --居住地
 SFYH VARCHAR(2),   --是否已婚
 PRIMARY KEY(ID)
)
  四、甲流病人信息整合流程配置
  根据需求,当医院发现某些病人确诊为甲流后,将会在GMBR表中将SFH1N1字段的值更新为“是”,这些变化将传递到甲流中心的GMBR表。甲流中心每天将检查GMBR中这些确诊为甲流的病人记录,并将其整合公安人口库当中的性别、户籍所在地、居住地、婚姻状况、出生日期等信息,然后写到专门的甲流人员记录表H!N!JL中。
分析以上需求,医院GMBR数据到甲流中心GMBR的同步已经在流程一完成,现在的任务是将甲流中心GMBR中的数据,筛选出SFH!N!=是的信息,并根据该记录的身份证号码,到公安的人口库的RKXX中去查找性别、户籍所在地、居住地、婚姻状况、出生日期信息,组合成完整的信息后,写入到甲流中心的H1N1JL表。

  首先,我们先增加一个新的数据源GARKK,并添加表RKXX。注意这次是选择Oracle10数据库,填写用户名GARKK及相应密码,数据库名为ORCL,可点击测试连接来验证是否填写正确。


 
  另外在H1N1CENTER数据源中,添加另一张表H1N1JL,下面的转换流程中要用到。

  新建一个转换H1N1,先放上一个表数据源命名为GMBR,指向甲流中心的GMBR表,放上一个表目的,命名为H1N1JL,指向甲流中心的H1N1JL表。
  先看第一个需求,筛选确诊为甲流的记录。从右边工具箱中—转换栏中,选择一个条件性拆分组件,添加到编辑区,并将表数据源与其连接起来。


 

  双击条件性拆分,弹出属性编辑框,添加一个输出“确诊甲流”,表达式使用相等判断函数,equals(SFH1N1,”是”)。


 
  确定后,将条件性拆分的绿色箭头拖向表目的H1N1JL,这是会弹出选择条件,选中确诊甲流,表示满足确诊甲流条件的数据将传递到表目的。


 
  保存并执行流程,会发现H1N1JL表中输入了几条记录,正是GMBR表中SFH1N1=“是”的记录。
  由于这次设计的GMBR是全量抽取,因此可在流程每次执行前,执行一个SQL脚本,清除表目的当中的记录,这样每次可将数据全部完整处理一遍。
  从工具箱中,选择一个SQL脚本组件加入,双击属性,选则数据源H1N1CENTER,输入SQL语句 DELETE FROM H1N1JL,执行时机为 开始时,这样该语句只在流程开始时执行一次。


 
  将其插入到表数据源GMBR与条件性拆分之间。


 

  为实现对公安人口库的整合,可从工具箱中添加一个数据库查找组件,放到条件性拆分之后。配置其属性如下:

  数据源:选中 GARKK,模式GARKK,表RKXX。


 

  查找列:输入列SFZHM,引用列SFZHM,表示到数据库GARKK的表RKXX中去查找SFZHM字段等于进入该节点的待处理数据中的SFZHM字段的值,对流经该节点的每条数据都要进行查找。


 

  在输出列中,选中以下字段,分别是性别、户籍所在地、居住地、婚姻状况、出生日期。


 

  高级选项使用默认配置。

  确定后,执行流程,可发现H1N1JL表中已经有部分字段集成了公安人口信息,但还有部分字段是空的。
  双击表目的H1N1JL表,可看到部分字段前面没有绿色对勾,说明前面输入的字段与表目的的字段存在不匹配,需要采取另一个组件—列映射来解决。
  选择列映射组件插入到数据库查找组件和表目的之间,配置属性,其中输入列JCRQ输出别名改为QZRQ,输入列HYZK改为SFYH。


 

  到此,由于H1N1JL1每次将重新生成,希望每次生成的时候,其ID是连续的,而现在输入到H1N1JL中的ID值是原来感冒病人中的ID,经过甲流确诊条件过滤后,不连续,我们可以增加一个序列组件解决这个问题。


 

  最后的完整流程图如下,实现了确诊甲流的感冒病人信息与公安人口信息的整合。


  五、定期执行
  根据需求,从医院到甲流中心的数据同步,以及甲流中心数据与公安数据的整合,最终形成甲流病人记录的过程,需要每天进行一次。
  这个可以通过DMETL的作业调度功能来实现。

  新建一个作业,名称为甲流数据同步
  从工具箱—引用中,选择加入两个转换引用,分别配置其属性指向GMBR,H1N1,并将GMBR的绿色输出线指向H1N1。


 

  在作业甲流数据同步节点上右键,选择属性,弹出属性对话框。
  选择调度信息。
  新建一个调度,选则反复执行,每天执行一次,于20:00:00执行。


   配好调度之后,点击工具栏上的启动引擎按钮:


 
  则该作业将于每天晚上8:00钟开始执行。
  至此,我们已经实现了对甲流病人数据处理过程的定期执行,实现了高度自动化的数据处理过程,为卫生部门及时准确掌握甲流疫情提供了数据支持。
 
  DMETL高级应用系列文章
  准备过程中,敬请期待……

  利用FTP、文件数据源穿越网闸
  采用远程数据源、远程目的实现跨网段高效数据传输
  利用自定义转换插件实现复杂的数据清洗汇总流程
  使用自定义函数、变量实现批量数据文件处理
  巧用OS命令实现特殊控制
  使用Email通知数据处理结果
  在作业中嵌套、组合使用转换、作业和远程活动
  ……

请使用浏览器的分享功能分享到微信等