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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SCD缓慢变化维拉链表

發(fā)布時間:2024/9/27 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SCD缓慢变化维拉链表 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ? ? ? ? ? ? ? ? ? ? ? ? ?SCD緩慢變化維拉鏈表SQL實現(xiàn)

1 緩慢變化維概述

SCD英文Slow Changing Dimensions(緩慢變化維),它是數(shù)據(jù)倉庫建模過程中一個非常重要的概念。眾所周知數(shù)據(jù)倉庫是基于歷史數(shù)據(jù)的,而歷史數(shù)據(jù)的變化依賴于維度的定義,緩慢變化維就是用來跟蹤和表現(xiàn)維度表變化的一種方法。事實表往往在跟維度表關(guān)聯(lián)時需要“卡”住相應(yīng)的時間節(jié)點,這就是SCD記錄歷史變化的作用。

注: 1 當(dāng)前代碼演示環(huán)境是SQL Server,基于Merge語法,其它數(shù)據(jù)庫類似。

? ? ? 2 SCD緩慢變換維Kettle實現(xiàn)

? ? ? 3?Kettle轉(zhuǎn)換作業(yè)應(yīng)用50個案例腳本?

數(shù)據(jù)倉庫里維度表的字段改變(變化)常見的有3種,分別記作Type1、Type2、Type3。這里假如我們有用戶維度表customer客戶(cust_id用戶編號、name姓名、jobtitle職位),如果在某個時間將某個用戶的職位由Dev更新成CTO,我們看下三種維度處理的方法的情況:

  • Type1(不會記錄維度里關(guān)鍵字段值的變化歷史情況):
cust_idnamejobtitle
1張三Dev

新的customer表為:

cust_idnamejobtitle
1張三CTO
  • Type2(記錄維度里關(guān)鍵字段每次的變化情況):

針對1的情況假設(shè)更新時間是2020-10-21,那么對應(yīng)到客戶維度表里(這里end_date對應(yīng)最新時一般設(shè)置為9999-12-31或者NULL),則有如下的軌跡:

cust_idnamejobtitlestart_dateend_dateis_current
1張三Dev2020-10-102020-10-210
1張三CTO2020-10-21NULL1
  • Type3(直接記錄當(dāng)前最新的值和上一次變化前的值)
cust_idnamejobtitlepre_jobtitle
1張三CTODev

綜上所述不難發(fā)現(xiàn)type1和type3不能很好的記錄維度的每次變化情況,type1沒有,type3只能記錄最新的一次變化,而type2會記錄每次變化(關(guān)注的字段需自定義)的情況。

注:一般來說事實表會存放維度表的ID,而事實表抽取(ETL)的過程中是通過維度表的start_date和end_date來確定事實表里度量(指標(biāo))的時間范圍(即維度表的對應(yīng)時間)。

2 代碼與注釋

2.1 表結(jié)構(gòu)與數(shù)據(jù)

-- step1 準(zhǔn)備表和數(shù)據(jù),當(dāng)前運行在SQL Server里。-- 業(yè)務(wù)系統(tǒng)(OLTP)的客戶表 CREATE TABLE Customer(ID int IDENTITY(1,1) NOT NULL,FullName nvarchar(50) NULL,City nvarchar(50) NULL,Occupation nvarchar(50) NULL)-- 數(shù)據(jù)倉庫的(OLAP)的客戶維度表 CREATE TABLE DimCustomer(CustomerID int IDENTITY(1,1) NOT NULL,CustomerAlternateKey int NULL,FullName nvarchar(50) NULL,City nvarchar(50) NULL,Occupation nvarchar(50) NULL,StartDate datetime NULL,EndDate datetime NULL,IsCurrent bit NULL,PRIMARY KEY CLUSTERED(CustomerID ASC) )GOALTER TABLE DimCustomer ADD? DEFAULT ((1)) FOR IsCurrent INSERT INTO Customer(FullName,City,Occupation) SELECT 'BIWORK','Beijing','CEO' UNION ALL SELECT 'ZhangSan','Shanghai','Education' UNION ALL SELECT 'Lisi','Guangzhou','IT' UNION ALL SELECT 'Wangwu','Beijing','Finance'

2.2 緩慢變換維代碼

-- step2 SCD 模塊 -- 1 修改狀態(tài) MERGE INTO dbo.DimCustomer AS Dim USING dbo.Customer AS SrcON Dim.CustomerAlternateKey = Src.ID WHEN NOT MATCHED BY TARGETTHEN INSERT VALUES(Src.ID,Src.FullName,Src.City,Src.Occupation,GETDATE(),NULL,1) WHEN MATCHED AND (Dim.City <> Src.City OR Dim.Occupation <>? Src.Occupation) AND Dim.IsCurrent=1THEN UPDATE SET Dim.EndDate =CASE WHEN Dim.EndDate IS NULL THEN GETDATE() ELSE Dim.EndDate END,Dim.IsCurrent = 0;-- 2 修改數(shù)據(jù) MERGE INTO dbo.DimCustomer AS Dim USING dbo.Customer AS SrcON Dim.CustomerAlternateKey = Src.IDAND Dim.City = Src.City AND Dim.Occupation = Src.OccupationWHEN NOT MATCHED BY TARGETTHEN INSERT VALUES(Src.ID,Src.FullName,Src.City,Src.Occupation,getDATE(),NULL,1);

2.3? 修改數(shù)據(jù)驗證

-- Step3 驗證 -- 新插入一條 INSERT INTO Customer(FullName,City,Occupation) VALUES ('qinliu','Beijing','Finance')-- Case1: 執(zhí)行如下更新后執(zhí)行SCD模塊,這里的ID依賴于自增序列生成的序號UPDATE Customer SET Occupation = 'IT' WHERE ID = 6-- Case2: 執(zhí)行如下更新后執(zhí)行SCD模塊,這里的ID依賴于自增序列生成的序號 UPDATE Customer SET Occupation = 'Publisher',City = 'Hangzhou' WHERE ID = 6-- 每次修改后對照查看DimCustomer表的變化,查看是否追蹤到數(shù)據(jù)的歷史變更信息。以下為查詢示例: SELECT * FROm DimCustomer WHERE FullName='qinliu'

總結(jié)

以上是生活随笔為你收集整理的SCD缓慢变化维拉链表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 少妇影院在线观看 | 伊人久久久久久久久久久 | 欧美日韩在线视频播放 | 亚洲天堂免费av | 偷拍超碰 | 国产偷v| 九热精品视频 | 午夜在线精品偷拍 | 韩国无码一区二区三区精品 | 肉色超薄丝袜脚交一区二区 | 我要看黄色大片 | 538国产精品一区二区免费视频 | 日韩欧美一区在线观看 | 在线不卡免费视频 | 草草影院在线播放 | 在线观看的av网站 | 亚洲a中文字幕 | 亚洲精品成a人 | 91入囗 | 精品国产麻豆 | caopor在线视频 | 在线观看日本一区二区 | 国产不卡视频在线播放 | 一二三区av | 欧美一级片在线播放 | 亚洲中文字幕一区二区在线观看 | 久久999| 国产亚洲综合av | 久久久久久影院 | 亚洲AV无码一区二区三区少妇 | 青青草视频污 | 丁香六月激情综合 | 欧美一级黄 | 爱的色放在线 | 放荡的美妇在线播放 | 伦理片一区二区 | 五月天综合久久 | 国产高清自拍视频 | 超碰最新在线 | 欧美无砖区| 黄色a在线 | 国产欧美在线视频 | 亚洲一区和二区 | 国产欧美日韩在线视频 | 97se在线视频| 少妇特黄一区二区三区 | 国产伦精品一区二区三区千人斩 | 国产人妻精品久久久久野外 | 国产成年人视频网站 | 欧美绿帽合集videosex | 91久久精品国产91性色69 | 亚洲精品在线一区二区 | 三上悠亚 在线观看 | 日韩中文字幕二区 | 婷婷九月丁香 | 久久精品1 | 午夜国产一级 | 国产精品久久久网站 | 红猫大本营在线观看的 | av最新版天堂资源在线 | 久久男人天堂 | 日韩av在线网 | 中文字幕视频一区 | 色狠狠综合网 | 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 在线综合网 | 亚洲女人被黑人巨大进入 | 国产欧美日韩成人 | 亚洲精品一级 | 日本肉体xxxx裸体137大胆图 | v天堂在线观看 | 男女精品视频 | 国产三级在线播放 | 中国少妇av | 可以免费观看的av网站 | 91国产视频在线观看 | 精品国产一区二区三区久久久久久 | 国产精品久久一区二区三区 | 国产视频在线一区 | 亚洲女人的天堂 | 亚洲欧洲日本一区二区三区 | 无码粉嫩虎白一线天在线观看 | 黄色国产精品 | 男人的天堂av网 | 91亚洲精品久久久蜜桃 | 欧美私人影院 | 欧美色999| 奇米影视一区二区 | 天天草比 | 日本成人黄色片 | 小俊大肉大捧一进一出好爽 | 天天操天天干天天操 | 视频在线观看你懂的 | 亚洲成人一区二区三区 | 日本在线高清视频 | 奇米一区| 少妇特黄一区二区三区 | 涩涩视频在线观看免费 | 精品裸体舞一区二区三区 |