技术开发 频道

DMETL快速入门之信息整合

  【IT168 技术文档一、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钟开始执行。

  至此,我们已经实现了对甲流病人数据处理过程的定期执行,实现了高度自动化的数据处理过程,为卫生部门及时准确掌握甲流疫情提供了数据支持。

1
相关文章