在 iUAP DI 中进行数据连接
数据 连接 是 两个 结果 集水平方向的 按照 一定条件合并 , 连接 是 关系代数中 8 中 运算 的 一种。 连接 类型有内连接 、 左外连接、 右外连接 、全连接 。根据两个 结果集 存储 的 实际 情况, 还可以分为 异构连接和同构连接。在 iUAP DI 中对 上述 的数据连接 都 提供了良好的支持。
- 同构 连接
如果两个表在 同一个数据库中,最好 使用 SQL 进行连接, 关系型 数据库对连接操作提供了 很好 的性能优化。 同时 要注意连接字段上要建立索引,这样可以 大幅提高 查询速度。
如果两个 表在同种类型的数据库,但不是 在 同一个数据库时,可以使用数据 库 的连接工具建立数据链接,例如 Oracle 的 DB Link , DB2 联邦数据库等。 当然 也可以 使用 异构 连接 ,在下文 中 会有 方案 描述 。
- 异构 连接
异构 连接是指两张表不在同一 个 数据库的情况, 实际 情况有很多种,两个表可以在同类型数据但不是同一个数据库上,可以是不同类型的数据上,甚至是在平面文件上。 在 实践中,两个 表 的连接可以分为 两个 大表连接,一 张 大表 和 一 张 小 表 连接,两张小 表 连接 (这里 指的大表是 记录 数在 50 万 以上的,反之为小表) ,两张 小表连接 既可以 按照两张大表连接处理,也可以按照 一大 一小处理,这里不再 赘述,这里 主要讲解一大一小和 两个 大表的处理方法。
a) “一大 一 小” 连接
在 ETL 开发过程经常 涉及 清洗和补充数据,例如利用 编码 查询出 名称 等,此时使用 Meta 查询或 DB 查询是一个很好的选择, 前者 是 针对 AE 元数据的 封装 ,后者更适用于一般数据库。 在下例中是 DB 查询的一个设置 截图 ,其目的是利用编码查询返回其主键 , 通过 DB 查询可以是 数据流 中的字段多出了 “表 返回 的 值 ” 的 两个字段。如果 数据 量小于 50 万 ,建议使用开启缓存并一次性从表中加载所有的数据。这样 可以 大幅度提高效率。
DB 查询配置截图
b) “两张 大表 ”连接
如果 是大表 使用 数据查询 , 由于不能缓存全部数据,可能需要多次查询数据库,这样运行可能就效率不高 。 在这种 情况 下比较合适使用 记录 连接就 。 在 下面 的 DI转换 中 订单 详情和顾客信息都是比较大的数据表 (都 超过了 100万 ) , 使用数据连接 进行 了连接操作。注意 ,两个 表输入必须按照连接字段排序,否则连接的结果不正确。
转换 截图
记录 连接配置截图
Attachments:
在iUAP DI中进行异构数据连接.docx (application/vnd.openxmlformats-officedocument.wordprocessingml.document)
在iUAP DI中进行异构数据连接.docx (application/vnd.openxmlformats-officedocument.wordprocessingml.document)