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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

使用SSIS Slow Changing Transformation组件管理缓慢变化维

發(fā)布時間:2025/3/17 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用SSIS Slow Changing Transformation组件管理缓慢变化维 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

介紹

?

作為數(shù)據(jù)庫專家或者ETL的開發(fā)者你可能偶爾會碰到需要維護和管理緩慢變化唯的場景。在SQL Server中有多種方法來實現(xiàn),最簡單的是使用SSIS 數(shù)據(jù)流組件中的Slowly Changing DimensionTransformation。

?

在這片文章中,我會通過一個例子提供如何使用SSIS的Slowly Changing DimensionTransformation管理緩慢變化唯的步驟和指導。

?

理解緩慢變化維的場景

?

維度是數(shù)據(jù)管理和數(shù)據(jù)倉庫中的術(shù)語。它指邏輯分組數(shù)據(jù)比如地理位置,客戶或者產(chǎn)品信息。通過緩慢變化維(SCDs),數(shù)據(jù)緩慢變化而不是基于時間,定期的變化。~Wikipedia

有不同類型的緩慢變化唯獨:

?

  • SCD Type 0 ? ? (Fixed)?–?這種類型是最不常用的,在第一次插入后就固定了不接受變化。這意味著一旦寫入,這些數(shù)據(jù)就不會被覆蓋。

  • SCD Type 1 ? ? (Changing)?–?這種類型,如果數(shù)據(jù)被更改,她會被新的值覆蓋。

相關(guān)文章:

    • SQL Server 2012 Integration Services ? ? ?- Package Deployment

    • SQL Server 2012 Integration Services ? ? ?- Package and Project Parameters

    • SQL Server 2012 Integration Services ? ? ?- Package Variables

    • SQL Server 2012 Integration Services ? ? ?- Package and Project Configurations

    • SQL Server 2012 Integration Services ? ? ?- Unattended Execution of SSIS Packages

    • SQL Server 2012 Integration Services ? ? ?- GUI-Friendly Ways of Managing Execution of SSIS Packages

例如考慮這個例子: 

SupplierCode

SupplierName

Address

S0000001

ABC Company

USA

S0000002

XYZ ?Corporation

USA

如果供應商的名字隨著時間的推移被更改,正如你在下面看到的供應商的名字已經(jīng)被新的記錄更新了。這種看起來非常簡單去實現(xiàn),但是無法追蹤歷史記錄。

SupplierCode

SupplierName

Address

S0000001

ABC Company Ltd.

USA

S0000002

XYZ ?Corporation

USA

  • SCD Type 2 ? ? (Historical)?–在這個類型中,如果數(shù)據(jù)被更改,它將會保存一個新的記錄,舊的記錄被標志位過時的。

SupplierCode

SupplierName

Address

EffectiveDate

Expiration ?Date

S0000001

ABC ?Company

USA

3/2/2013

3/2/2013

S0000002

XYZ ?Corporation

USA

3/2/2013

S0000001

ABC Company Ltd.

USA

3/3/2013

  • 為了維護SCD ? ? type 2,不同的人采用不同的方法。比如,一種方法是通過增加有效日期和過期日期表示記錄是活躍的。如果截止日期為NULL表示當前的記錄是活躍的。另外一種方法是添加一個標志列表示當前活動記錄。通常人們會使用第一種方法或者兩者的結(jié)合。

  • ?

  • SCD Type 4 ? ? (Limited history)?–這不是一個常用的類型因為只能維護有限的更改。在這種SCD類型中,通過表中添加額外的列保存舊值。

SupplierCode

SupplierName

Address

OldSupplierName

S0000001

ABC ?Company

USA

ABC Company Ltd.

S0000002

XYZ ?Corporation

USA

在SQLServer中有多種方法實現(xiàn)緩慢變化維度,最簡單的是使用SSIS 數(shù)據(jù)流組件中的Slowly Changing Dimension Transformation,盡管會有一些限制,文章結(jié)尾的時候會提到這些限制。

在我開始Slowly Changing Dimension Transformation組件解釋之前,讓我先解釋一下代理鍵并且為什么它對數(shù)據(jù)倉庫很重要。

我們經(jīng)常會在維度中增加一個沒有意義的鍵叫做代理鍵。代理鍵通常是整數(shù),充當唯獨表的唯一鍵或者主鍵,并且作為事實表外鍵約束。代理鍵對于管理緩慢變化唯變得非常重要。

?

使用Slowly Changing Dimension Transformation

?

我們首先創(chuàng)建一個供應商表并添加一些數(shù)據(jù)。你應該可以看到,我增加了SupplierCode字段作為主鍵,當作業(yè)務鍵。

USE?[AdventureWorks2012]

GO

CREATE?TABLE?[dbo].[Supplier](

???????[SupplierCode]?CHAR(8)?PRIMARY?KEY,

???????[SupplierName]?[varchar](50)?NULL,

???????[Address]?[varchar](50)?NULL,

)?ON?[PRIMARY]

GO

INSERT?INTO?[dbo].[Supplier]([SupplierCode],?[SupplierName],?[Address])

VALUES

('S0000001',?'ABC Company',?'USA'),

('S0000002',?'XYZ Corporation',?'USA')

GO

SELECT?*?FROM?[dbo].[Supplier]

現(xiàn)在我們創(chuàng)建一個維度表存儲供應商信息,你應該注意到我增加了SupplierId字段作為代理鍵,生效時間和截止時間用來追蹤歷史變化。另外我增加了CurrentFlag列用來標注當前記錄是否活躍。

USE?[AdventureWorks2012]

GO

CREATE?TABLE?[dbo].[DimSupplier](

???????[SupplierId]?[int]?IDENTITY(1,1)?NOT?NULL,

???????[SupplierCode]?CHAR(8),

???????[SupplierName]?[varchar](50)?NULL,

???????[Address]?[varchar](50)?NULL,

???????[EffectiveDate]?[date]??NULL,

???????[ExpirationDate]?[date]??NULL,

???????[CurrentFlag]?[char](1)?NULL,

???????CONSTRAINT?[PK_DimSupplier]??PRIMARY?KEY?CLUSTERED?([SupplierId]?ASC)

)?ON?[PRIMARY]

GO

到目前為止一切順利,現(xiàn)在我們創(chuàng)建一個SSIS包,增加一個數(shù)據(jù)流任務,拖入數(shù)據(jù)源組件從原始表獲取數(shù)據(jù)?,F(xiàn)在新增一個SlowlyChanging Dimension Transformation組件連接到上面的數(shù)據(jù)源組件。雙擊SlowlyChanging Dimension Transformation進行修改,向?qū)Ы缑嫒缦?#xff1a; 

?


Slowly ChangingDimension Wizard

?

單擊下一步按鈕進入到下一個界面,在新的界面首先要選擇目標維度表和字段映射。緊接著你需要從源表中指定例作為業(yè)務鍵。在我的例子中SupplierCode是源表的主鍵因此我把它作為業(yè)務鍵,如下:

?

Business key

?

點擊Next按鈕進入到向?qū)У南乱唤缑?#xff0c;在這個界面中你需要指定維度表中的字段是否被當作SCDType 0, Type 1 or Type 2處理。

?

Specify eachcolumn of the dimension

?

在我的例子中我選擇地址列作為SCD Type 1處理,名字作為SCD Type 2處理,如下: 

?

SCD Type 1 and SCDType 2

?

點擊Next進入向?qū)У南聜€界面,在這個界面需要指定(因為我們一個列作為SCD Type 2處理)開始日期(生效日期)結(jié)束日期列(有效期),和設置產(chǎn)生日期的變量,如圖:

?

Start and EndDates

?

點擊Next進入向?qū)У南聜€界面,在這個界面指定推斷維度成員設定如圖:

?

Inferred DimensionMembers

?

點擊Next進入向?qū)У南聜€界面,點擊完成按鈕完成配置。下面就是在數(shù)據(jù)流任務中看到的:

?

Complete theWizard

?

緩慢變化維度向?qū)鶕?jù)你的選擇和配置添加幾個任務管理緩慢變化維。在上面屏幕中“Changing Attribute Updates Output”路徑將為SCDType 1(基本覆蓋)更新記錄。“New Output”路徑將增加新條目到唯獨表,為了維護歷史記錄。“Historical Attribute Inserts Output”路徑會更新之前過期日期列的記錄。

?

當你第一次執(zhí)行包你會注意到源表中的兩條記錄被加載到維度表,如圖:

?


The DimensionTable

?

現(xiàn)在執(zhí)行下面的語句驗證Supplier維度表的數(shù)據(jù): 

USE?[AdventureWorks2012]

GO

SELECT?*?FROM?[dbo].[DimSupplier]

GO

這是你在執(zhí)行上面的腳本后看到的結(jié)果,跟我們預期的差不多:

?

Results ofexecuted query

?

現(xiàn)在我們打開源表使用下面的腳本更新一些記錄。我將要更改SupplierCode = ‘S0000001’的供應商名稱。

USE?[AdventureWorks2012]

GO

UPDATE?[dbo].[Supplier]

SET?[SupplierName]?=?'ABC Company Ltd.'

WHERE?[SupplierCode]?=?'S0000001'

GO

SELECT?*?FROM?[dbo].[Supplier]

GO

現(xiàn)在再次執(zhí)行包,你會看到一條記錄(新)已經(jīng)插入并且一條記錄(舊的)已經(jīng)被更新或者標記為過時。這是因為更新的列被配置成SCD Type 2:

?

One recordinserted and one record outdated

?

現(xiàn)在執(zhí)行上面的查詢語句驗證數(shù)據(jù)。正如我們預測的,SupplierCode = ‘S0000001’有兩條記錄。前面的記錄已經(jīng)更新了截至日期表面數(shù)據(jù)已經(jīng)是過時的,最新的記錄對應了最新的供應商名稱:

USE?[AdventureWorks2012]

GO

SELECT?*?FROM?[dbo].[DimSupplier]

GO

Query results

?

限制:

?

Slowly Changing Dimension transformation?被設計為簡單易用,主要為了小的維度表。如我們上面看到的,Slowly Changing DimensionTransformation是一個開箱即用的SSIS組件,對于小的維度可以快速配置。但是Slowly Changing Dimension Transformation并不適合所有的情況尤其是你的維度很大,下面是一些原因:

  • Slowly ChangingDimension transformation根據(jù)你的配置將組件添加到數(shù)據(jù)流任務去管理緩慢變化維。如果在這些組件上做了一些定制化,然后再次修改Slowly Changing Dimension transformation你做的定制化會丟失。

  • 對于大的維度因為沒有緩存查找數(shù)據(jù),性能會很慢。

  • 只可以用到SQL ? ? Server。

  • 它使用OLEDB命令進行行更新而不是批量更新。

Conclusion結(jié)論

在這篇文章中,我談到了緩慢變化維度轉(zhuǎn)換,在SSIS提供開箱即用的工具包,可以輕松快速地配置用于管理較小的緩慢變化維度。在下一篇文章中我將討論一些備選方案,您可以使用管理更大的緩慢變化維度。

?


本文轉(zhuǎn)自 lzf328 51CTO博客,原文鏈接:

http://blog.51cto.com/lzf328/1533666


總結(jié)

以上是生活随笔為你收集整理的使用SSIS Slow Changing Transformation组件管理缓慢变化维的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 日本色片网站 | 性爱免费在线视频 | 奇米四色网 | 久久成人国产 | 日韩不卡在线 | 视频一区二区国产 | 一区二区三区91 | 亚洲无吗在线观看 | 国产剧情久久久 | 超碰最新在线 | 欧美一区二区三区四区五区 | 亚洲一区观看 | 91影院在线 | 人人妻人人澡人人爽人人欧美一区 | 久久久久亚洲AV | 国产swag在线观看 | 色婷婷av一区二区三区之红樱桃 | 男人都懂的网站 | 久久夜色精品 | 中文字幕+乱码+中文乱码www | 成人欧美一区二区三区 | 日本免费在线播放 | 白嫩情侣偷拍呻吟刺激 | 欧美成人综合一区 | 呦呦精品 | 美女扒开腿让男人捅 | 亚洲综合色站 | 伊人网视频在线观看 | 黄色片aa | 福利小视频 | 国产精品jizz视频 | 国产在线中文字幕 | 欧美色乱 | 国产69精品久久久久久久 | 小明看国产 | a级片免费在线观看 | 西方裸体在线观看 | 国产精品精品国产 | 中文字幕在线精品 | 欧美人妻一区二区三区 | wwwxxx在线 | 婷婷色在线视频 | 天堂资源在线 | 国产ts人妖调教重口男 | 一道本久在线中文字幕 | www.婷婷.com | 91国在线啪| 国产在线播放一区二区 | 特黄特色大片免费视频大全 | 在线射| 在线观看少妇 | 精品九九视频 | 亚洲精品一区二区三区蜜桃久 | 你懂的视频网站 | 欧美精品 日韩 | www.777含羞草 | 无码人妻精品一区二区三区99不卡 | 9l视频自拍蝌蚪9l视频 | 91涩漫成人官网入口 | 精品国产99一区二区乱码综合 | 99热8| 99久久久无码国产精品性 | 九九免费视频 | 欧美在线va | 成人羞羞国产免费游戏 | 4438成人网| 热@国产 | 97精品国产97久久久久久粉红 | 欧美一级免费片 | 日韩午夜 | 午夜8888 | 原创少妇半推半就88av | 五月综合色 | 国产精品爽爽爽 | 肉视频在线观看 | jizz处女| 91亚洲国产成人精品一区二三 | 精品一区二区在线视频 | 国产精品aaa | 午夜av剧场| 午夜伦理视频 | 黄色视屏免费 | 日韩视频一区二区三区在线播放免费观看 | 欧美日韩国产免费观看 | 调教一区| 一区二区三区 欧美 | 99在线播放视频 | 国产精品美女久久久久av爽 | 日韩极品在线观看 | 国产91精| 欲求不满在线小早川怜子 | 欧美激情在线免费 | 国产精品一级 | 国产情侣91 | 性高潮网站 | 91看片免费版 | 日中文字幕 | 欧美成人亚洲 | a午夜|