前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ETL(十二):缓慢变化维(其中一种实现方式)

ETL(十二):缓慢变化维(其中一种实现方式)

作者头像
数据分析与统计学之美
发布2021-11-25 09:51:07
4670
发布2021-11-25 09:51:07
举报
文章被收录于专栏:Python+数据分析+可视化
1、什么是缓慢变化维?
在这里插入图片描述
在这里插入图片描述
2、本文章使用的表是客户基本信息表department表,总共有743条数据,截取部分数据展示如下;
在这里插入图片描述
在这里插入图片描述
3、ETL开发流程如下
1)定义源表
在这里插入图片描述
在这里插入图片描述
2)定义目标表

① 利用源表创建目标表;

在这里插入图片描述
在这里插入图片描述

② 给目标表重命名;

在这里插入图片描述
在这里插入图片描述

③ 给目标表进行字段设置;

在这里插入图片描述
在这里插入图片描述

④ 生成并执行sql,在目标数据库中才会生成该目标表;

在这里插入图片描述
在这里插入图片描述

⑤ 去目标数据库edw用户下,查看该目标表;

在这里插入图片描述
在这里插入图片描述
3)创建映射

① 创建一个映射;

在这里插入图片描述
在这里插入图片描述

② 将源表和目标表都拖拉到右侧的灰色区域;

在这里插入图片描述
在这里插入图片描述

③ 添加一个“查找转换”组件,因为是要往目标表中插入数据,这里选择的的是“目标”;

在这里插入图片描述
在这里插入图片描述

④ 将源表的dept_id也移动到“查找转换”组件中;

在这里插入图片描述
在这里插入图片描述

⑤ 双击“查找转换”组件,设置查找匹配条件;

在这里插入图片描述
在这里插入图片描述

⑥ 设置目标表的连接对象。你使用“查找转换”组件去查找目标表,你总要知道目标表从哪里来吧?

在这里插入图片描述
在这里插入图片描述

⑦ 添加一个“路由器转换”组件,同时将“查找转换”组件中目标表的dept_id移动到“路由器转换”组件,同时将源表中的所有字段移动到“路由器转换”组件。

在这里插入图片描述
在这里插入图片描述

注意:添加一个“路由器转换”组件,是用于做条件分发,意思就是说:当我们在目标表中查到的dept_id为空,就将源表的数据插入到目标表中;当我们在目标表中查到的dept_id不为空,那么就做更新操作。因此,在这里可以看到dept_id是来自于目标表,其他字段都是来自于源表。

⑧ 双击“路由器转换”组件,设置分发规则;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⑨ 上述操作的效果如下;

在这里插入图片描述
在这里插入图片描述

⑩ 添加“更新策略转换组件”;

在这里插入图片描述
在这里插入图片描述

⑪ 双击“更新策略转换组件”,进行“插入”转换条件设置;

在这里插入图片描述
在这里插入图片描述

⑫ 将“路由器转换”组件中的insert组中的字段,传递给对应的“更新策略转换组件”;

在这里插入图片描述
在这里插入图片描述

⑬ 再添加“更新策略转换组件”;

在这里插入图片描述
在这里插入图片描述

⑭ 双击“更新策略转换组件”,进行“更新”转换条件设置;

在这里插入图片描述
在这里插入图片描述

⑮ 将“路由器转换”组件中的update组中的字段,传递给对应的“更新策略转换组件”;

在这里插入图片描述
在这里插入图片描述

⑯ 再拖动一个目标表到右侧灰色区域;

在这里插入图片描述
在这里插入图片描述

⑰ 此时可以看到:“更新策略转换”组件中没有ETL_DATE字段,因此我们需要借助于“表达式转换”组件,新增一个ETL_DATE字段,所以这一步添加两个“表达式转换”组件;

在这里插入图片描述
在这里插入图片描述

⑱ 分别将“更新策略转换组件”中的字段,移动到对应的“表达式转换组件”中;

在这里插入图片描述
在这里插入图片描述

⑲ 双击“表达式转换组件”,新增一个ETL_DATE字段;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⑳ 将“表达式转换组件”中的字段,流入到目标表中;

在这里插入图片描述
在这里插入图片描述

㉑ 使用CTRL + S保存创建的映射;

在这里插入图片描述
在这里插入图片描述

4)创建任务 ① 创建一个任务;

在这里插入图片描述
在这里插入图片描述

② 选择该任务要执行的映射;

在这里插入图片描述
在这里插入图片描述

③ 设置源表的连接对象;

在这里插入图片描述
在这里插入图片描述

④ 设置目标表的连接对象;

在这里插入图片描述
在这里插入图片描述

设置另外目标表的连接对象(其实都是一张目标表);

在这里插入图片描述
在这里插入图片描述

⑤ 使用CTRL + S保存创建的任务;

在这里插入图片描述
在这里插入图片描述
5)创建工作流

① 创建一个工作流;

在这里插入图片描述
在这里插入图片描述

② 将任务拖动到右侧灰色区域,同时建立工作流与任务之间的连接;

在这里插入图片描述
在这里插入图片描述

③ 使用 CTRL + S保存创建的工作流;

在这里插入图片描述
在这里插入图片描述

④ 通过任务启动工作流;

在这里插入图片描述
在这里插入图片描述

⑤ 上述操作会自动打开M客户端,从图中可以看出,第一次进行ETL开发,目标表中是没有任何数据,因此直接是将源表中的743条记录,插入到目标表中;

在这里插入图片描述
在这里插入图片描述

⑥ 可以去edw用户中,验证一下目标表中的数据;

在这里插入图片描述
在这里插入图片描述
4、验证
1)验证update;

① 更新源表department中的部分数据;

代码语言:javascript
复制
UPDATE department SET dept_name = '海淀', full_name = '海淀', dept_no = 'haidian' WHERE dept_id = '0000000349';
UPDATE department SET dept_name = '丰台', full_name = '丰台', dept_no = 'fengtai' WHERE dept_id = '0000000350';
UPDATE department SET dept_name = '朝阳', full_name = '朝阳', dept_no = 'chaoyang' WHERE dept_id = '0000000351';
UPDATE department SET dept_name = '东城', full_name = '东城', dept_no = 'dongcheng' WHERE dept_id = '0000000352';
UPDATE department SET dept_name = '大兴', full_name = '大兴', dept_no = 'daxing' WHERE dept_id = '0000000353';
UPDATE department SET dept_name = '西城', full_name = '西城', dept_no = 'xicheng' WHERE dept_id = '0000000354';

② department表中的原始数据如下;

在这里插入图片描述
在这里插入图片描述

③ 修改后的department表中的数据如下;

在这里插入图片描述
在这里插入图片描述

④ 直接在M客户端中“重新启动”;

在这里插入图片描述
在这里插入图片描述

⑤ 效果如下图;

在这里插入图片描述
在这里插入图片描述

⑥ 去目标表中查看最终数据,可以发现数据已经更新;

在这里插入图片描述
在这里插入图片描述
2)验证insert;

① 给department源表中插入两条新的记录;

代码语言:javascript
复制
insert into DEPARTMENT (DEPT_ID, AREA_ID, LEVEL_NO, DEPT_NO, DEPT_NAME)
values ('0000006666', '0000000006', '666666', '666', '66社区');
insert into DEPARTMENT (DEPT_ID, AREA_ID, LEVEL_NO, DEPT_NO, DEPT_NAME)
values ('0000008888', '0000000008', '888888', '888', '88社区');

结果如下:

在这里插入图片描述
在这里插入图片描述

② 直接在M客户端中“重新启动”;

在这里插入图片描述
在这里插入图片描述

③ 效果如下,可以看到第三次开发,直接是对上次开发后的目标表进行操作,原始数据如果没有新增数据,直接走的是“更新操作”,原始数据新增的数据,直接走的是“插入操作”;

在这里插入图片描述
在这里插入图片描述

④ 此时,去edw用户下,也可以查看到这两条新增的数据;

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/12/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、什么是缓慢变化维?
  • 2、本文章使用的表是客户基本信息表department表,总共有743条数据,截取部分数据展示如下;
  • 3、ETL开发流程如下
    • 1)定义源表
      • 2)定义目标表
        • 3)创建映射
          • 5)创建工作流
          • 4、验证
            • 1)验证update;
              • 2)验证insert;
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档