维度查询/更新
组件介绍
维度查询/更新组件主要涉及数据仓库中的缓慢变化维的概念。缓慢变化维,是由于维度在实际业务场景中并不是静态的,会随着时间发生缓慢的变化,相比于事实表或者业务表,主要区别在于维度表变化慢,频率低,特定场景下需要记录数据变化的过程。维度查找/更新步骤允许您实现 Ralph Kimball 两种类型缓慢变化的维度:类型 I(更新)和类型 II(插入)以及一些附加功能。您不仅可以使用此步骤来更新维度表,还可用于查找维度中的值。
- 输入:数据库中的所有数据
- 输出:数据库中经过查找/更新操作后的所有数据
页面介绍
运行维度查询/更新组件得到下图所示的界面:
参数选项
维度查询/更新组件页面包含如下通用选项:
选项 | 说明 | 样例值 |
---|---|---|
步骤名称 | 在画布上指定维度查询/更新步骤的唯一名称,可以自定义名称或保留默认名称。 | 维度查询/更新 |
更新维度吗? | 如果勾选,则进行插入/更新操作;如果未勾选,则该组件仅作查询用途,查询条件:a、关键字页面中的的对比字段;b、查询/更新字段页面中的时间流查询条件,开始日期<=stream日期字段<=截止日期字段 | |
数据库连接 | 维度表所在的数据库连接的名称。 | |
目标模式 | 允许指定模式名称 | |
目标表 | 维度表的名称 | |
使用缓存 | 使用缓存目的为了提升插入或更新的效率,该选项和“缓存行数”同步使用 | |
预加载缓存 | 在执行查找之前,可以通过读取维度表的完整内容来提高性能。通过消除到数据库的往返行程和排序列表查找算法来提高性能 | |
缓存行数 | 将持有的存储中的行数的缓存大小,通过减少到数据库的往返次数来加快查找速度 |
维度查询/更新关键字表格包含如下选项:
选项 | 说明 | 样例值 |
---|---|---|
维字段 | 在源系统中使用的键字段。例如:客户号、产品ID等。 | |
流里的字段 | 包含从源系统键字段获取的值的流字段。 |
维度查询/更新字段表格包含如下选项:
选项 | 说明 | 样例值 |
---|---|---|
维字段 | 包含维度实际信息的字段。 | |
比较的流字段 | 包含要分配给表字段的传入值的流字段。 | |
更新的维度的类型 | 应用的更新类型。 |
维度查询/更新关键字段表格包含如下选项:
选项 | 说明 | 样例值 |
---|---|---|
代理关键字段 | 由于会记录数据变化的历史过程信息,因此需在表设计初期定义代理键 | |
新的名称 | 自定义名称 | |
创建代理键 | 使用提供的三种方式中任意一种方式创建代理键:A:使用表最记录数+1 B:使用自增字段 C:使用sequence | A:使用表最记录数+1 |
维度查询/更新版本控制表格包含如下选项:
选项 | 说明 | 样例值 |
---|---|---|
version字段 | 每次keys相同的记录发生新增时,version字段自动+1,最大的verison为最新的记录 | version |
stream日期字段 | 记录数据流的日期范围,通常为设置为开始日期字段值即可 | |
开始日期字段 | 数据流导入的开始日期 | date_from |
最小的年份 | 可填写年份下限 | 1900 |
使用另外一个可用的开始日期 | 可选择提供的System date、Start date of transformation、Empty (null) value、A column value四个中任意一个 | |
结束日期字段 | 数据流导入结束日期 | date_to |
最大的年份 | 可填写年份上限 | 2199 |
使用案例
案例数据
表数据与结构:user_source.sql
该文件共包含2条数据
列名 | 说明 |
---|---|
user_id | 主键 |
name | 姓名 |
表数据与结构:user_dimension_table.sql
该文件共包含2条数据
列名 | 说明 |
---|---|
agency_it | 主键 |
user_id | 用户表的主键 |
name | 姓名 |
version | 版本号 |
start_date | 开始日期 |
end_date | 结束日期 |
案例操作
案例总览
下述案例记录用户名字更替的过程,从user_source表中抽取数据,记录在user_dimension_table表中
表输入
使用表输入组件抽取源表的数据(用户主键,用户名),添加当前时间字段
SELECT
user_id
, name
,current_date() as ETL_Date
FROM sakila.user_source
维度查询/更新
使用维度查询/更新组件对表输入组件抽取的数据进行判断,用户名是否有变化,若有则增加新版本 该组件配置主要分 5 步:
- 第一步:填写通用配置选项;
- 第二步:填写关键字表,指定与源表中主键对应的流里的字段;
- 第三步:填写字段表,指定要捕捉的源表中发生变化的字段;
- 第四步:填写关键字段表,指定代理键或新增代理键;
- 第五步:填写版本控制表,指定版本控制相关的选项;
阻塞数据直到Transform都完成
使用阻塞数据直到Transform都完成组件用于在执行sql前阻塞任务,否则sql脚本优先级较高
执行一个SQL脚本
使用执行一个SQL脚本组件执行sql删除user_id为空的数据
delete from user_dimension_table where user_id is null
结果预览
最终结果如下: