轉載SSIS中的容器和數據流—數據轉換(Transformations)續

數據挖掘請求算法

數據挖掘任務是SSIS中一個很重要的任務,它的思想來源於一些算法。數據挖掘請求運行數據挖掘請求,並將結果輸出到數據流。它還能夠添加一些預測新列,一些應用場合以下列舉:數據庫

  • 根據已知的一些列,例如子女個數,家庭收入,配偶收入預測產生一個新列:這我的是否擁有住房
  • 根據客戶購物卡預測客戶的購買意向
  • 能夠填充用戶的調查問卷上沒有填寫的空白欄

涉及到的算法有:服務器

  • 微軟時序算法
  • 微軟決策樹算法
  • 微軟線性迴歸算法
  • 貝葉斯算法

 

模糊排序和查找測試

模糊排序task能夠找出數據中可能重複的行,例如能夠找出包含「Main St.」和「Main Street」的兩行而後將他們合併成一行。模糊查找任務能夠檢查數據輸入並清除髒數據。模糊查找任務一般放在查找任務以後,查找任務找到匹配數據,而後經過模糊查找沒有匹配的數據。.net

 

查找orm

查找轉換任務的功能相似於SQL Server 2000中的Data Pump任務。例如,若是數據中有一列ZipCode來自於導入數據中的兩列State和City,在映射表中可使用查找轉換。在SQL Server 2000中這種功能很笨拙,必須使用join關聯查找這樣會使運行速度減慢。如圖4-25是查找任務的編輯界面。blog

 

圖4-25 排序

合併ip

合併轉換能夠將兩個路徑中的輸入數據合併成一個輸出。這種轉換相似於Union All轉換,它有一些限制:資源

  • 合併以前數據必須排序,能夠在此以前使用排序轉換或者在數據源中使用ORDER BY語句
  • 合併的元數據類型必須相同,例如CustomerID不能在一個路徑中是數字型的可是在另外一個路徑中是字符類型的
  • 若是有多於兩個路徑,須要選擇Union All轉換

編輯這種task,確保在兩個路徑中的數據時一致的,選擇列的時候會彈出對話框提示數據合併到路徑1仍是路徑2,若是選擇合併到路徑1,而後鏈接路徑2。這樣選擇以後如圖4-26最終將會從一個路徑映射到另外一個路徑,有些路徑的數據也能夠忽略。

 圖4-26

 

鏈接合併

SSIS的一個目標就是使用任務,儘可能保證不寫任何代碼,一個典型的例子就是鏈接合併。這種合併能夠將兩個輸入進行內鏈接或者外鏈接而後選擇性地輸出。例如,在一個數據流中存儲着包含EmployeeID的人力資源信息,在另外一個數據流中存儲着工資清單信息,能夠對這兩個路徑進行鏈接,從人力資源信息中取得姓名,從工資清單信息中取得員工工資,而後從一個路徑中輸出。如圖4-27,能夠看到經過鏈接合併分別缺的員工名字和入職日期。

   

圖4-27

注意:若是兩個輸入路徑在同一個數據庫,在OLE DB數據源中進行數據鏈接操做可能效率更高,若是在不一樣的數據庫中可能效率後受到影響。這種鏈接合併在兩個數據不是同一個數據庫中或者不想編寫代碼時會頗有用。

  

多點傳送Multicast

如同它的名字同樣多點傳送能夠將一個路徑中的數據輸出到多個路徑,如圖4-28你可能會使用這種轉換將數據輸出到多個路徑中。編輯這種task,將它和輸入源鏈接,而後將它和多個Destination鏈接,除了task的名字以外,它沒有特別的編輯選項。

 

圖4-28

注意:多點傳送相似於Split 轉換,不一樣的是多點傳送把全部的行都輸出,Split將有條件地輸出部分行。

  

OLE DB命令

OLE DB命令對數據流中的數據行執行一個OLE DB命令。它針對數據表中的每一行進行更新操做,能夠事先將要更新的數據存放在表中。或者針對一個有輸入參數的存儲過程,能夠將這些參數存放在一個數據表中,不用每次都輸入參數。

  

百分比抽樣和行抽樣Percentage and Row Sampling

百分比抽樣和行抽樣能夠從數據源中隨機選擇一組數據。這兩種task均可以產生兩組輸出,一組是隨機選擇的,另外一組是沒有被選擇的。能夠將這些選擇出的數據發送到開發或者測試服務器上。這個Task的最合適的應用是創建數據挖掘模型而後,使用這些抽樣數據來驗證這個模型。

編輯這種task,選擇要抽取的行數或者 百分比,如圖4-29。百分比抽樣按百分比從數據源中隨機選擇數據,行抽樣從數據源中隨機選擇具體的行數。能夠對選中的數據和未被選擇的數據命名。最後一個選擇項是隨機取樣的參數。若是選擇一個固定的參數,每次輸出的結果是同樣的,若是保持默認設置,就是不選擇,每次將輸出不一樣的數據。

 

圖4-29

  

透視和逆透視

這個和T-SQL中的PIVOT和UNPIVOT的做用是同樣的。數據透視轉換能夠將數據規範或使它在報表中更具可讀性。數據的輸出相似於OLAP中的數據輸出和報表服務中的數據輸出。下面的 表展現銷售員工和天天的銷售量。

 

轉換後的數據如圖

 

逆透視數據的功能和這個恰好相反。

  

數據行數

數據行數轉換隻是簡單地計算數據流中的數據行數而後輸出到一個變量中。經常使用的是將行數寫到郵件中,而後將郵件發送給使用者報告轉換了多少行數據。或者根據這個數據行數進行判斷,進而進行相應的操做。

  

代碼組件

代碼組件容許編寫代碼充當轉換transforms,數據源source,目的destination。使用代碼組件能夠完成下面的任務:

  • 使用.net類庫集驗證保險卡號和郵件地址 
  • 驗證數據並忽略掉不合理的數據。例如,在人力資源招聘系統中刪除那些不符合薪水要求的應聘者 
  • 編寫組件和第三方客戶整合 

代碼組件能夠做爲多種輸出的數據源,能夠選擇在運行時更加高效地編譯。

代碼組件容許編寫代碼充當轉換transforms,數據源source,目的destination。使用代碼組件能夠完成下面的任務:

  • 使用.net類庫集中的Regex類驗證保險卡號和郵件地址
  • 驗證數據並忽略掉不合理的數據。例如,在人力資源招聘系統中刪除那些不符合薪水要求的應聘者
  • 編寫組件和第三方客戶整合

代碼組件能夠做爲多種輸出的數據源,能夠選擇在運行時更加高效地編譯。

  

漸變維度(Slow Change Dimesion)

Dimension修改能夠更新或者修改數據倉庫中的一個Dimension。使用修改嚮導,能夠產生全部的更新和新建dimension任務。曾經這樣的任務對於DTS開發人員來講是很繁瑣的,如今只須要幾分鐘就能夠完成。

  

排序

排序轉換容許對數據流中的數據按照某一列進行排序。這是五個經常使用的轉換之一。鏈接數據源打開編輯界面,編輯這種任務。不想設置爲排序列的字段不要選中,默認狀況下全部列都會選中。如圖4-30,按照ProductID排序,並將全部列輸出。

 

圖4-30

在底部的表格中,能夠設置輸出列的別名,是否按照列來排序。Sort Order列顯示列將會第一排序,第二排序仍是第三排序。雙擊列去除重複的排序列。

  

關鍵詞抽取和查找Term Extraction and Lookup

關鍵詞抽取和查找從數據集中抽取關鍵詞。例如,可使用這種task從一系列文章中抽取關鍵詞。另外一個功能是分析公司內部電子郵件內容。這種任務目前只支持英文關鍵詞抽取。

在關鍵詞抽取中能夠指定是抽取名詞仍是名詞詞組。例如「bicycle」會被抽取可是「the bicycle」將不會被抽取。這種任務有兩種輸出,關鍵詞和抽取的結果。關鍵詞是要匹配的關鍵詞,抽取結果是成功匹配的次數。

關鍵詞抽取能夠輸出預先匹配的行。例如,將一個郵件系統中的信息記錄到數據庫中,能夠和郵件系統組合,自動記錄有瑕疵的產品。將結果經過一個鏈接管理器指向一個表。

  

聯合全部Union All

聯合全部task的功能和合並正好相反,它將多個數據源中的合併成一個結果集。例如,如圖4-31,將兩個XML數據源中的數據合併成一個輸出而後將數據送入到關鍵詞抽取任務中。

 

圖4-31

編輯這種轉換,首先將第一個數據源鏈接到task而後將其餘數據源鏈接到這個task。打開編輯界面,保證列被正確映射,DDIS將會自動適應是否正確映射。例如,一個輸入字符是20個字符,另外一個是50,出書將會是一個多於50個字符的列。

  

下一篇隨筆中,將用一個例子來具體說明怎麼使用轉換任務。

相關文章
相關標籤/搜索