SSIS數據轉換組件_派生列、審核、字符映射轉換和條件性拆分轉換


派生列

派生列轉換通過對輸入列進行類型轉換或應用表達式得出新的結果。這個結果可以作為新列添加,也可以替換輸入列。可以使用此轉換執行下列任務:

  1.將不同列的數據連接到一個派生列中。例如,可以使用表達式 FirstName + " " + LastName 將 FirstNameLastName 列中的值組合到名為 FullName 的單個派                    生列中。

  2.通過使用 SUBSTRING 之類的函數從字符串數據中提取字符,然后將結果存儲到派生列中。例如,可以使用表達式 SUBSTRING(FirstName,1,1) 從 FirstName 列提取人名的首字母。

  3.對數值數據應用數學函數,然后將結果存儲到派生列中。例如,可以使用表達式 ROUND(SalesTax, 2) 將數值列 SalesTax 的值更改為精確到小數點后兩位。

  4.創建比較輸入列和變量的表達式。例如,可以使用表達式 ProductVersion == @Version? ProductVersion : @Version 來比較變量 VersionProductVersion列中的數據,然后根據比較結果決定選用 Version 還是 ProductVersion 的值。

  5.提取日期時間值的某部分。例如,可以通過表達式 DATEPART("year",GETDATE()) 使用 GETDATE 和 DATEPART 函數提取當前年份。

 在上篇聚合轉換文章中我們已經使用到了派生列。其配置如下:

在這圖中,可以根據需求來進行一些設計。本圖的設置為計算單個商品購買的總金額。

二 審核轉換

審核轉換控件配置很簡單,它使得包中的數據流包含有關包運行所處環境的數據。例如可以將包的名稱、計算機名稱和操作員姓名添加到數據流中。該轉換功能只以下系統變量。

說明

執行實例 GUID

插入唯一標識包的執行實例的 GUID。

包 ID

插入唯一標識包的 GUID。

包名稱

插入包名稱。

版本 ID

插入唯一標識包版本的 GUID。

執行開始時間

插入包執行的開始時間。

計算機名稱

插入啟動包的計算機的名稱。

用戶名

插入啟動包的用戶的登錄名。

任務名稱

插入與審核轉換相關聯的數據流任務的名稱。

任務 ID

插入唯一標識與審核轉換相關聯的數據流任務的 GUID。

配置該轉換功能如下步驟。

  1. 將審核轉換控件按拖放到數據流任務中,並將上游的控件用綠色箭頭連接起來。如圖:

 

  1. 右鍵單擊審核轉換彈出窗口

 

  1. 單擊審核類型下拉框。選中需要的系統變量。然后在輸出列中設置輸出的名稱。得到如下結果:

 

配置好審核的系統變量,單擊確定即可完成審核轉換功能的配置信息。整個流程如下:

 

將轉換的數據存放到C:\Users\zhuyujing\Desktop\test.txt。執行包.得到的結果如下:

 

字符映射表轉換

字符映射表轉換其實就是將字符串函數應用於輸入列中的字符數據。該功能只對字符串數據類型的輸入列執行。例如我們可以將字符轉換為下寫、大寫、或則繁體等等。如下圖所示

 

現在我們就演示一下將輸入列中的NewName、PackageName分別轉換為繁體和大寫的,並將輸入列NewName用轉換后的繁體替換,創建一個新的列NewPackageName用於存儲輸入列PackageName映射的繁體字符。整個流程如下: 

配置成功后執行包。可以看到沒有轉換之前,NewName和PageageName分別是簡體和小寫字符 

轉換后,NewName列中的數據變成繁體、packageName列對應的NewPackageName列都是大寫字符。

 

四 條件性拆分轉換

  條件性拆分轉換功能類似 C#編程語言中的swith…case 語句。此轉換將計算表達式,並且根據計算的結果將數據行定向到不同輸出中。此轉換還提供一個默認輸出,如何某個行與任何表達式都不匹配。則它將被定向到默認輸出。例如,可以將銷售訂單總額在1000~3000之間的數據輸出到一個路徑,將銷售訂單總額在3000~7000之間的數據輸入到一個路徑,將銷售訂單總額>=7000的數據輸出到一個路徑。不滿足以上條件的設置為默認條件。作為另外一條路徑輸出。在設置這些條件的同時還可以編輯輸出列的名稱。最終結果如下圖:

 

配置好以后單擊確定即可。為了檢測結果。我們先在變量選項卡中設置如下幾個變量

 

然后在數據流選項開中托動四個行計數轉並修改名稱。如圖:

 

右鍵單擊其中一個行計數,彈出窗口后,按如下圖設置VariableName屬性。本圖已名為BadRowCount為例。其他行計數轉換分別按同樣的操作設置VariableName即可。

然后將剛才的條件性拆分轉換與其中一個行計數用綠色箭頭連接。彈出如下窗口 

在輸出下拉框中選中條件。然后單擊確定按鈕即可。如下圖

 

其他三個行計數轉換按此步驟操作即可。最總得到如下圖:

 

執行該包,等到如下圖所示的結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM