日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kettle使用_22 维度更新 缓慢变化维 拉链表

發布時間:2024/9/27 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 维度更新 缓慢变化维 拉链表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。