3 21 BI之SSIS之資料流轉換(漸變維度)

2021-07-06 01:57:22 字數 2909 閱讀 7554

bi之ssis之資料流轉換(漸變維度)

1          漸變維度

1.1         維度中的某些屬性會隨著時間的變化而變化時,我們稱該維度為漸變維度。比如,使用者維度中的手機號、住址等資訊會隨著時間變化,那麼使用者維度就是漸變維度。

1.2         漸變維度需要新增兩個字段,dimbegintime和dimendtime,來記錄漸變的屬性的有效時間段;或者增加乙個標識字段,來標識該資料是否正在使用

2          新建ssis包

3          連線管理器-》新建oledb連線「localhost.adventureworks2008.sa」

4          控制流-》拖入「執行sql任務」

4.1         connection「localhost.adventureworks2008.sa」

4.2         sqlstatement

if not exists(select * from sys.objects where object_id = object_id(n'[dbo].[dimproduct]')and type in (n'u')) begin

create table dimproduct

productkey int primary keyidentity(1,1),

productalternatekey int,

productname nvarchar(100),

productvalue int,

producttype nvarchar(100),

dimbegintime datetime,

dimendtime datetime

end4.3         確定

5          控制流-》拖入「資料流任務-》將「執行sql任務」的控制流指向「資料流任務」-》設計開啟

6          新建乙個文字檔案「產品維度資料」,資料如下

1,手機-iphone,10,通訊

2,印表機,100,辦公

3,滑鼠,1000,遊戲

7          連線管理器-》新建到「產品維度資料」的檔案連線

8          資料流-》拖入「平面檔案源」

8.1         連線管理器名稱「產品維度資料連線」

8.2         檔名為上面新建的「產品維度資料」

8.3         預覽下資料是否正確

8.4         確定

9          資料流-》拖入「資料轉換」

9.1         將「平面檔案源」的資料流指向「資料轉換」

9.2         勾選所有列

9.3         輸入列0-》別名「productid」-》資料型別「dt_i4」

9.4         輸入列1-》別名「productname」-》資料型別「dt_wstr」-》長度「100」

9.5         輸入列2-》別名「productvalue」-》資料型別「dt_i4」

9.6         輸入列1-》別名「producttype」-》資料型別「dt_wstr」-》長度「100」

10      資料流-》拖入「漸變維度」

10.1      連線管理器「localhost.adventureworks2008.sa」

10.2      表或檢視「dimproduct」,這裡選擇的是資料要匯入的維度表

10.3      輸入列的「productid」對應維度列的「productalternamtekey」-》鍵型別「業務鍵」,這裡的productid為oltp系統的主鍵,目的是判斷該鍵對應的列是否發生了變化-》其它的列以名稱對應-》下一步

10.4      維度列「productname」-》更改型別「歷史屬性」,更改型別有三種

10.4.1 固定的屬性,表示該屬性為固定值,不能變更

10.4.2 變化的屬性,表示該屬性的值會被最新的值覆蓋

10.4.3 歷史屬性,表示屬性的值的所有變化都會被記錄,記錄的方式有兩種,一種是新增時間段屬性,一種是新增標識屬性

10.5      維度列「productvalue」-》更改型別「變化的屬性」

10.6      維度列「producttype」-》更改型別「固定的屬性」

10.7      選擇「使用開始日期和結束日期確定當前記錄和過期記錄」

10.7.1 開始日期「dimbegintime」

10.7.2 結束日期「dimendtime」

10.7.3 用來設定日期值的變數「system:starttime」

10.8      下一步-》下一步

10.9      漸變維度設定好後會生成一串的流程

11      執行包-》全綠-》成功-》檢視資料,資料有匯入,begintime也有資料,endtime為null

12      修改「產品維度資料」的檔案

12.1      「手機」為「手機-iphone」

12.2      」100「改為「101「

12.3      「遊戲「改為「配件」

13      再次執行包-》報錯」 如果將failonfixedattributechange屬性設定為true,當檢測到固定的屬性更改時,轉換將失敗。要將行傳送到「固定的屬性」輸出,請將failonfixedattributechange 屬性設定為false。「-》設定「漸變維度「的failonfixedattributechange為false

14      再次執行包-》全綠-》成功-》檢視資料,發現

14.1      被設為」歷史記錄「的手機,新增了」手機-iphone「資料行,並且將」手機「行的endtime設定了值,這樣就記錄了屬性生效的時間段

14.2      被設為」變化的屬性「的100,更新成了101

14.3      被設為」固定的屬性「的遊戲,沒有發生變化

3 20 BI之SSIS之資料流轉換(合併連線)

bi之ssis之資料流轉換 合併連線 1 合併聯接轉換功能是將兩個已排序的輸入列的資料通過使用full join left join或innerr join聯接形成乙個輸出資料集。它類似於t sql語句中的連線查詢語句。但又與之有所區別。1.1 使用合併聯接要求輸入已排序的資料。而t sql中的連線...

3 17 BI之SSIS之資料流轉換(條件性拆分)

bi之ssis之資料流轉換 條件性拆分 1 條件性拆分類似於c 中的switch。case。default 2 新建ssis包,命名為 9 條件性拆分 3 控制流 拖入 資料流任務 雙擊開啟 4 連線管理器 右鍵 新建oledb連線 選擇 localhost.adventureworks2008.s...

SSIS之資料流任務

資料流任務主要用於執行資料流以提取 轉換 載入源資料。乙個包中可以有多個資料流任務,也可以包含零個資料流任務。下面關係圖顯示含有乙個資料流任務的包 了解資料流任務後,我們就簡要的學習一下如何建立資料流任務。在工具箱中雙擊資料流任務控制項或則將其拖放到控制流頁面中。如圖 你可以根據需求來修改資料流任務...