本文介绍如何通过ODI进行多表联合查询并设置定时任务。准备工作如下:

  • 准备物理方案和逻辑方案;
  • 创建模型并通过“逆向工程”同步方案;
  • 创建项目(根据实际情况创建或者使用现有的);
  • 确保源表和目标表都有主键存在。
    以上内容的前三点可以参考我博客中的相关文章。

    一、Preparing

    1.1 源SQL语句

    SELECT a.ID,
       a.ORG_ID,
       a.NAME_ID,
       a.EVR_ID,
       a.PACKAGE_ARCH_ID,
       a.PACKAGE_GROUP,
       a.RPM_VERSION,
       a.DESCRIPTION,
       a.SUMMARY,
       a.PACKAGE_SIZE,
       a.PAYLOAD_SIZE,
       a.INSTALLED_SIZE,
       a.BUILD_HOST,
       a.BUILD_TIME,
       a.SOURCE_RPM_ID,
       a.CHECKSUM_ID,
       a.VENDOR,
       a.PAYLOAD_FORMAT,
       a.COMPAT,
       a.PATH,
       a.HEADER_SIG,
       a.COPYRIGHT,
       a.COOKIE,
       a.LAST_MODIFIED,
       a.CREATED,
       a.MODIFIED,
       a.HEADER_START,
       a.HEADER_END
    FROM rhnpackage a LEFT JOIN web_customer b ON a.org_id = b.ID
    WHERE a.name_id > 5 AND a.package_group = 4;

    1.2 创建映射

  • 拖动模型源数据库中的相关表到映射框;
  • 在映射框中插入组件栏里的联接以及过滤,根据SQL设置相关连接;
  • 推动模型目标数据库中的相关表到映射框,并设置相关连接。如下图所示:
    Oracle ODI 12c之多表联合查询以及定时任务设置_第1张图片

    1.2.1 设置联接

    在映射的逻辑结构里,点击连接图标,在Condition中,输入“Join Condition”和“Join Type”,点击保存。如下图所示:
    Oracle ODI 12c之多表联合查询以及定时任务设置_第2张图片

    1.2.2 设置过滤

    在映射的逻辑结构里,点击过滤图标,在Condition中,输入“Filter Condition”,点击保存。如下图所示:
    Oracle ODI 12c之多表联合查询以及定时任务设置_第3张图片

    1.2.3 设置目标表整合类型

    在映射的逻辑结构里,点击目标表,设置“Target”的“Integration Type”为“Incremental Update”,点击保存。如下图所示:
    Oracle ODI 12c之多表联合查询以及定时任务设置_第4张图片

    1.2.4 设置目标组的知识模块

    在映射的物理结构里,设置AP的知识模块为“LKM SQL to SQL(Built-In).GLOBAL”,点击保存。如下图所示:
    Oracle ODI 12c之多表联合查询以及定时任务设置_第5张图片
    在射的物理结构里,设置目标表的知识模块为“IKM Oracle Incremental Update”,点击保存。如下图所示:
    Oracle ODI 12c之多表联合查询以及定时任务设置_第6张图片

    1.3 验证映射

    点击下图中的“√”进行验证,如下图所示:
    Oracle ODI 12c之多表联合查询以及定时任务设置_第7张图片

    二、Scheduling

    2.1 生成场景

    右击“映射名称”,选择“ Generate Scenario...”,如下图所示:
    Oracle ODI 12c之多表联合查询以及定时任务设置_第8张图片
    场景名称和版本号自定义,如下图所示:
    Oracle ODI 12c之多表联合查询以及定时任务设置_第9张图片

    2.2 定时任务设置

    展开场景,右击Scheduling,选择“New Scheduling”,根据实际情况定义自动调度时间。这里是每天下午的16:00开始运行。如下图:
    Oracle ODI 12c之多表联合查询以及定时任务设置_第10张图片
    最后,更新下agent的调度信息,即可查看到即将运行的作业信息,如下图所示:
    Oracle ODI 12c之多表联合查询以及定时任务设置_第11张图片