Kettle使用_22 维度更新 缓慢变化维 拉链表
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Kettle使用_22 維度更新 Type2 拉鏈表
?
需求:通過Kettle實現對員工維度數據的更新和插入。
解決方法:通過維度查詢更新組件實現。
注:補充部分有SQL版Type2實現代碼。
Previous work:
準備源數據和維度表結構與數據。
Slow Changing Dimensions(SCD 緩慢變化維)
即數據倉庫里的Type2
數據倉庫里維度的變化較慢,常用的有三類,分別為:
Type1:
cust_id name??? age
1?? 張三??? 30
如果對用戶的age由30更新到40,則
cust_id name??? age
1?? 張三??? 40
Type2:
針對1的情況則,這里假設更新時間是2020-10-21
cust_id name??? age start_date end_date is_current
1?? 張三??? 30? 2020-10-10? 2020-10-21? 0
1?? 張三??? 40? 2020-10-21? 9999-10-21? 1
Type3:
直接記錄當前最新的值和上一次變化前的值
cust_id name??? age pre_age
1?? 張三??? 30? 40
注:type3的缺點是沒法跟蹤歷史數據。
-- 創建原始用戶數據業務表 CREATE TABLE tb_user_source( user_id int, name varchar(12), job_title varchar(12), phone varchar(15) )-- 創建用戶維度表 CREATE TABLE tb_user_dimupdate( agency_it int, user_id int, name varchar(12), job_title varchar(12), phone varchar(15), versionno int, startdate date, enddate date )-- 清空原始數據 TRUNCATE TABLE tb_user_dimupdate; TRUNCATE TABLE tb_user_dimupdate;-- 初始化員工數據 INSERT INTO tb_user_source VALUES(1,'張三','CEO','13267564321'); INSERT INTO tb_user_source VALUES(2,'王五','CTO','18889897676');Step1: 新增個轉換
Step2:在轉換的輸入分類下拖個表輸入(這里是維度表的源表),并配置如下:
Step3:在轉換的數據倉庫分類下,拖個維度查詢/更新組件并SHIFT連接表輸入與當前組件。
Step4:配置維度查詢/更新組件
Step5:保存并運行轉換驗證:
-- 更新員工數據 UPDATE tb_user_source SET phone='13966666666' WHERE user_id = 1;-- 執行轉換后查看 SELECT * FROM tb_user_source;UPDATE tb_user_source SET job_title='COO' WHERE user_id = 2;-- 查看維度數據變化情況 SELECT * FROM tb_user_dimupdate ORDER BY user_id完整流程示意:
總結
以上是生活随笔為你收集整理的Kettle使用_22 维度更新 缓慢变化维 拉链表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果怎么读u盘启动盘 如何制作苹果系统启
- 下一篇: Kettle使用_23 Excel表格输