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