联合查询/更新
组件介绍
联合查询/更新控件是将输入流中的行集数据与数据库中的数据通过关联字段查询出来后,再对“代理关键字”中的值进行相应更新,再输出至流中。
- 输入:输入流中的行集数据与数据库中的数据
- 输出:数据库中进行查询/更新操作后的数据
页面介绍
运行联合查询/更新组件得到下图所示的界面:
参数选项
联合查询/更新组件页面包含如下选项:
选项 | 说明 | 样例值 |
---|---|---|
步骤名称 | 步骤的名称,在单一转换中,名称必须唯一 | 联合查询/更新 |
数据库连接 | 读取数据的JDBC连接名称,右边第一个“编辑”可以对连接信息进行编辑;第二个“新建”按钮可以新建JDBC连接;第三个“向导”按钮可以根据指引分步去建立JDBC连接 | |
目标模式 | 输入行集数据的表Schema的名称。可以点击右边的“浏览”按钮,进行选择 | |
目标表 | 行集写入数据的表名,可以点击右边的“浏览”按钮,进行选择 | dim table name |
提交记录数量 | 批处理行集数量限制(必须填整数) | 100 |
缓存大小 | 设置缓存到内存中的行数。当读取的数据行数小于设置的数值时,则直接缓存在内存中,不会使用临时文件。当读取的数据行数大于设置的数值时,则会将数据存储在临时文件,此时如果没有设置临时文件则该步骤会报错 | 9999 |
是否预加载 | 勾选此线,将把数据加载进缓存后进行查询,主要用于性能的优化 | |
关键字段 | 指定“维度字段”与“流里的字段”,指定后的字段将作为关键字段对数据进行查询,再在代理关键字中对查询后的数据进行更新。(1)维度字段:下拉选择“目标表”中的字段(2)流里的字段:下拉选择流中的字段 | |
代理关键字 | 输入“目标表”中需要操作的字段,用“流中的字段”的值来匹配“维度字段”的值,没有匹配的值会根据“创建代理键”设置的条件进行更新 | |
移除查询字段? | 在输入流中移出用于查询的字段 | |
使用哈希码? | 勾选此项,将激活“表中的哈希码字段”控件 | |
表中的哈希码字段 | 输入目标表中存储hashcode的字段,将会把生成的哈希码存入此字段中 | mixed |
记录最近更新日期的字段(可选) | 输入目标表中存入时间的字段,并将把最后一次数据更新时间存入该字段中 | GBK2312 |
使用案例
案例数据
表数据与结构:user_dimension_table.sql
该文件共包含2条数据
列名 | 说明 |
---|---|
agency_it | 主键 |
user_id | 用户表的主键 |
name | 姓名 |
version | 版本号 |
start_date | 开始日期 |
end_date | 结束日期 |
案例总览 下述案例记录用户名字更替的过程,从自定义常量数据组件中获取数据,与在user_dimension_table表中的数据进行比较,若有相同的数据则返回该数据与对应的代理键,若不存在相同的数据则插入新数据并返回生成的代理键
自定义常量数据
使用自定义常量数据组件定义字段信息并填充数据用于与数据库中的信息进行比对
联合查询/更新
使用联合查询/更新组件对自定义常量数据组件定义的数据进行判断,用户名与用户 ID 是否有变化,若有则增加新版本并生成代理键
结果预览
最终结果如下: