日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

SQLServer的SSIS的核心功能介紹

 曾淼Mark 2018-09-22

最近在用SQL SERVER的ssis工具導(dǎo)入另外一個系統(tǒng)的數(shù)據(jù),一直沒有靜下來系統(tǒng)的總結(jié)一些其中的學習及研究收獲,恰好找到一篇感覺介紹不錯的文章,發(fā)揚一下“拿來主義”,收錄在自己的地盤上。閑言少敘,一下是正文。

1 SSIS介紹

SSIS首先是在1997年的SQL Server 7.0中引入的,當時它的名稱為數(shù)據(jù)轉(zhuǎn)換服務(wù)(DTS)。SSIS屬于ETL產(chǎn)品家族,ETL代表提取(Extraction)、轉(zhuǎn)換(Transformation)和加載(Loading)。

現(xiàn)在,越來越多的企業(yè)都有數(shù)據(jù)倉庫。ETL是將來自O(shè)LTP數(shù)據(jù)庫的數(shù)據(jù)定期加載到數(shù)據(jù)倉庫中必不可少的工具。在SQL Server的前兩個版本—— SQL Server 7.0和SQL Server 2000中,SSIS主要集中于提取和加載。通過使用SSIS,可以從任何數(shù)據(jù)源中提取數(shù)據(jù)以及將數(shù)據(jù)加載到任何數(shù)據(jù)源中。在SQL Server 2005中,對SSIS進行了重新設(shè)計和改進。SSIS提供控制流和數(shù)據(jù)流??刂屏饕卜Q為工作流或者任務(wù)流,它更像工作流,在工作流中每個組件都是一個任 務(wù)。這些任務(wù)是按預(yù)定義的順序執(zhí)行的。在任務(wù)流中可能有分支。當前任務(wù)的執(zhí)行結(jié)果決定沿哪條分支前進。

數(shù)據(jù)流是新的概念。數(shù)據(jù)流也稱為流水線,主要解決數(shù)據(jù)轉(zhuǎn)換的問題。數(shù)據(jù)流由一組預(yù)定義的轉(zhuǎn)換操作組成。數(shù)據(jù)流的起點通常是數(shù)據(jù)源(源表);數(shù)據(jù)流的 終點通常是數(shù)據(jù)的目的地(目標表)??梢詫?shù)據(jù)流的執(zhí)行認為是一個流水線的過程,在該過程中,每一行數(shù)據(jù)都是裝配線中需要處理的零件,而每一個轉(zhuǎn)換都是裝 配線中的處理單元。

下圖顯示了SSIS設(shè)計器??梢酝ㄟ^啟動Business Intelligence Development Studio,然后創(chuàng)建一個Integration Services項目來調(diào)用SSIS設(shè)計器。在左邊有一個工具箱窗口。工具箱窗口包含預(yù)定義的控制流任務(wù)和數(shù)據(jù)流轉(zhuǎn)換。中間的視圖窗格包含4個視圖:控制 流、數(shù)據(jù)流、事件處理程序和包資源管理器。控制流視圖提供了一個設(shè)計環(huán)境,在這個設(shè)計環(huán)境中可以使用工具箱中與控制流相關(guān)的項來構(gòu)建控制流。數(shù)據(jù)流視圖也 提供了一個設(shè)計環(huán)境,在這個設(shè)計環(huán)境中可以使用工具箱中與數(shù)據(jù)流相關(guān)的項來構(gòu)建數(shù)據(jù)流。在事件處理程序視圖中,可以定義由特定的執(zhí)行事件觸發(fā)的后續(xù)響應(yīng)操 作。包資源管理器視圖提供了流的樹型視圖。

 
2 理解SSIS包

包(package)是SSIS項目中基本的部署和執(zhí)行單元。SSIS任務(wù)執(zhí)行的所有工作都發(fā)生在包的上下文中。SSIS包是SSIS流的容器???以通過以下方式來創(chuàng)建SSIS包:在Integration Services項目文件夾中右擊“SSIS包”文件夾,然后選擇“新建SSIS包”菜單項。

SSIS項目可以包含多個包。包只包含一個控制流,而該控制流可以包含一個或者多個數(shù)據(jù)流。

除了控制流和數(shù)據(jù)流,包還包含了SSIS連接和包的變量??梢杂胁煌饔糜虻淖兞?,例如,作用域為整個包的全局變量或者作用域為任務(wù)序列的局部變量。

在托盤中顯示了連接和變量,如SSIS設(shè)計器底部所示(參見圖12-1)。連接可以連向關(guān)系數(shù)據(jù)庫,也可以連向Analysis Services數(shù)據(jù)庫。

3 任務(wù)流

SSIS包包含一個控制流,該控制流由一組任務(wù)組成。這些任務(wù)定義了包的工作,例如,加載數(shù)據(jù)、執(zhí)行SQL語句、處理腳本或者調(diào)用其他過程。在工具箱中列出了這些任務(wù)??梢酝ㄟ^以下方式將任務(wù)加入包中:從工具箱中拖動該任務(wù),然后將它釋放到包的設(shè)計器中。

在任務(wù)流中,包通常包含多個任務(wù)。多個任務(wù)是按優(yōu)先權(quán)約束的順序來進行組織的。優(yōu)先權(quán)約束按以下順序連接兩個任務(wù):執(zhí)行第一個任務(wù)的結(jié)果決定是否運行第二個任務(wù)??梢栽诠ぷ髁髦惺褂脙?yōu)先權(quán)約束來創(chuàng)建條件分支??梢詫⒍鄠€優(yōu)先權(quán)約束進行組合,然后將其作為一個約束來求值。

3.1 在SSIS中的標準任務(wù)

先面列出了SSIS任務(wù)流中的一些預(yù)構(gòu)建的任務(wù)及其描述信息。

除了在以下所列出的任務(wù)之外,SSIS還提供了簡單的API,可以使用這些API來開發(fā)自己的任務(wù)。一旦注冊了任務(wù),則在工具箱中將會出現(xiàn)這些任務(wù),然后可以在任務(wù)流中像所有預(yù)構(gòu)建的任務(wù)一樣使用這些任務(wù)。

大容量插入任務(wù)——將來自文本文件的大量數(shù)據(jù)加載到SQL Server表中
數(shù)據(jù)流任務(wù)——支持在不同類型的數(shù)據(jù)源之間進行數(shù)據(jù)的復(fù)制和轉(zhuǎn)換。一個數(shù)據(jù)流任務(wù)包含一條數(shù)據(jù)流流水線
執(zhí)行包任務(wù)——運行子包
執(zhí)行進程任務(wù)——將程序或者批處理文件作為包的一部分來運行
執(zhí)行SQL任務(wù)——在包的執(zhí)行期間運行SQL語句,然后有選擇地保存這些查詢的結(jié)果
文件系統(tǒng)任務(wù)——執(zhí)行文件系統(tǒng)操作
FTP任務(wù)——從遠程服務(wù)器或者Internet的某個位置下載數(shù)據(jù)文件,并且將這些數(shù)據(jù)文件作為包的工作流的一部分
消息隊列任務(wù)——在SSIS包之間使用消息隊列來發(fā)送和接收消息
腳本任務(wù)——使用腳本來執(zhí)行在預(yù)構(gòu)建的SSIS任務(wù)中不可用的函數(shù)。通過使用Script任務(wù),可以在Microsoft Visual Studio for Applications(VSA)環(huán)境中使用Visual Basic.NET來編寫腳本
發(fā)送郵件任務(wù)——發(fā)送電子郵件消息
XML任務(wù)——合并、過濾和轉(zhuǎn)換XML文檔中的數(shù)據(jù)

3.2 容器

容器(container)是向包提供結(jié)構(gòu)的SSIS對象。每個包都有一個容器,用來存儲包的流。包的容器可以包含其他類型的容器,例如序列容器、 Foreach循環(huán)容器和For循環(huán)容器,這些容器都可以在控制流工具箱中獲得??梢栽谶@些容器中定義子流。容器豐富了控制流的運行時執(zhí)行模型。例如,并 不是所有的任務(wù)都是順序執(zhí)行的。在Foreach循環(huán)容器內(nèi)部的子流將會基于容器中定義的迭代器而多次執(zhí)行。

3.3 調(diào)試

對SSIS控制流進行調(diào)試是在SQL Server 2005中引入的新特性。當在設(shè)計器中選擇了一個任務(wù)時,只要按下F9就可以設(shè)置斷點。通過調(diào)試,可以在執(zhí)行期間檢查包的變量的值以及任務(wù)的狀態(tài)。斷點可 以基于事件來設(shè)置。例如,可以基于一個任務(wù)的以下事件來設(shè)置一個或者多個斷點:

● OnPreExecute
● OnPostExecute
● OnError
● OnWarning
● OnProgress

當SSIS的運行時遇到了一個斷點事件時,SSIS的運行時會在包的執(zhí)行期間暫停。這與在Visual Studio中調(diào)試C#代碼類似。

3.4 研究一個控制流示例

下圖顯示了一個簡單的控制流示例。它以FTP任務(wù)開始,該FTP任務(wù)用于下載已壓縮的數(shù)據(jù)文件。一旦下載完這些文件,運行時就會到達Foreach 循環(huán)容器,在該容器內(nèi)部有兩個任務(wù):執(zhí)行進程任務(wù)(該任務(wù)調(diào)用unzip應(yīng)用程序來解壓縮數(shù)據(jù)文件)和大容量插入任務(wù)(該任務(wù)將數(shù)據(jù)文件的數(shù)據(jù)插入到 SQL Server中)。當解壓縮完數(shù)據(jù)文件并且將數(shù)據(jù)文件的數(shù)據(jù)加載到SQL Server中時,循環(huán)會停止。如果在循環(huán)期間發(fā)生了錯誤,則該控制流將執(zhí)行發(fā)送郵件任務(wù):向DBA發(fā)送電子郵件。如果正確地執(zhí)行了每個任務(wù),則該控制流 將執(zhí)行SQL任務(wù):在新的數(shù)據(jù)集上創(chuàng)建一些視圖。斷點是在執(zhí)行SQL任務(wù)的OnPreExecute事件上設(shè)置的,以便DBA在創(chuàng)建視圖前可以對數(shù)據(jù)加以 驗證。

4. 數(shù)據(jù)流

控制流是出現(xiàn)較早的概念,因為它從SSIS的第一個版本開始就已經(jīng)存在了,而數(shù)據(jù)流是在SQL Server 2005中才引入的新概念。數(shù)據(jù)流是專門處理數(shù)據(jù)操作的工作流。

數(shù)據(jù)流也稱為流水線??梢詫?shù)據(jù)流認為是裝配線,該裝配線包含了順序執(zhí)行的多個操作。在數(shù)據(jù)流中的每個節(jié)點都稱為轉(zhuǎn)換。數(shù)據(jù)流通常以源轉(zhuǎn)換開始,以 目標轉(zhuǎn)換結(jié)束。在這兩個轉(zhuǎn)換之間,預(yù)定義的數(shù)據(jù)流轉(zhuǎn)換被依序應(yīng)用到數(shù)據(jù)上。一些轉(zhuǎn)換是同步的,例如,查找、條件性拆分和數(shù)據(jù)轉(zhuǎn)換。這些同步的轉(zhuǎn)換可以并行 執(zhí)行。

一旦已經(jīng)將轉(zhuǎn)換應(yīng)用到數(shù)據(jù)行上,則下一個轉(zhuǎn)換可以開始處理該數(shù)據(jù)行,而無需等到上一級轉(zhuǎn)換處理完整個數(shù)據(jù)集。一些轉(zhuǎn)換是異步的,例如聚合和排序。這些轉(zhuǎn)換必須從前面的輸出中獲得所有的行,從而可以處理和產(chǎn)生輸出,用于后續(xù)轉(zhuǎn)換。

除了預(yù)構(gòu)建的轉(zhuǎn)換清單,SSIS還提供了一些API,可以使用這些API來構(gòu)建自己的數(shù)據(jù)流轉(zhuǎn)換。例如,可以構(gòu)建Numeric Processing轉(zhuǎn)換來將數(shù)學計算和轉(zhuǎn)換應(yīng)用到流水線數(shù)據(jù)上。

數(shù)據(jù)流總是包含于任務(wù)流中。有一個特殊的任務(wù),其名稱為數(shù)據(jù)流任務(wù),該任務(wù)是用于容納數(shù)據(jù)流的容器。在構(gòu)建數(shù)據(jù)流之前,必須將數(shù)據(jù)流任務(wù)加入到設(shè)計器中。

4.1 轉(zhuǎn)換

任務(wù)是任務(wù)流的基本組件,而轉(zhuǎn)換是數(shù)據(jù)流的基本組件。轉(zhuǎn)換是預(yù)定義的數(shù)據(jù)操作??梢詫⑥D(zhuǎn)換視為裝配線中的機器,用于對輸入數(shù)據(jù)進行操作。表12-2顯示了在SSIS數(shù)據(jù)流環(huán)境中流行的轉(zhuǎn)換列表。

SSIS的轉(zhuǎn)換

“聚合”轉(zhuǎn)換——執(zhí)行聚集,例如average、sum和count
“字符映射表”轉(zhuǎn)換——將字符串函數(shù)應(yīng)用到字符數(shù)據(jù)上
“條件性拆分”轉(zhuǎn)換——基于指定的標準來將數(shù)據(jù)行路由到不同的輸出
“復(fù)制列”轉(zhuǎn)換——將輸入列的副本添加到轉(zhuǎn)換的輸出中
“數(shù)據(jù)轉(zhuǎn)換”轉(zhuǎn)換——將列的數(shù)據(jù)類型轉(zhuǎn)換為不同的數(shù)據(jù)類型
“派生列”轉(zhuǎn)換——使用表達式來生成從現(xiàn)有列中派生的新列
“處理維度”轉(zhuǎn)換——處理Analysis Services的維
“模糊分組”轉(zhuǎn)換——通過以下方式來執(zhí)行數(shù)據(jù)清理的任務(wù):首先識別可能重復(fù)的數(shù)據(jù)行,然后選擇規(guī)范的數(shù)據(jù)行來用于對數(shù)據(jù)進行標準化
“模糊查找”轉(zhuǎn)換——在引用表中使用模糊匹配來查找值
“查找”轉(zhuǎn)換——在引用表中使用精確匹配來查找值
“合并”轉(zhuǎn)換——合并兩個已分類的數(shù)據(jù)集
“合并聯(lián)接”轉(zhuǎn)換——使用FULL、LEFT或者INNER join來連接兩個已分類的數(shù)據(jù)集
“多播”轉(zhuǎn)換——將數(shù)據(jù)集分布到多個輸出中
“分區(qū)處理”轉(zhuǎn)換——處理Analysis Services的劃分
“透視”轉(zhuǎn)換——創(chuàng)建規(guī)范表的較低規(guī)范化版本
“排序”轉(zhuǎn)換——對流水線的數(shù)據(jù)進行分類
“Union All”轉(zhuǎn)換——創(chuàng)建多個數(shù)據(jù)集的并集
“逆透視”轉(zhuǎn)換——創(chuàng)建不規(guī)范表的較規(guī)范版本

4.2 查看器

查看器是為了調(diào)試數(shù)據(jù)流而設(shè)計的??梢栽趫?zhí)行期間使用查看器來查看流水線中的流??梢詫⒉榭雌鞲郊釉谵D(zhuǎn)換之間的連線上。要增加查看器,可以在連線上 右擊,然后選擇“數(shù)據(jù)查看器”菜單項。默認的查看器是網(wǎng)格圖。也可以增加直方圖,散點圖和圓柱圖作為圖形查看器。如果這些預(yù)定義的查看器還不能滿足您的需 求,則您甚至可以構(gòu)建自己的查看器。

4.3 研究一個數(shù)據(jù)流示例

圖12-3顯示了一個數(shù)據(jù)流的示例。該數(shù)據(jù)流以O(shè)LE DB Source轉(zhuǎn)換開始,該轉(zhuǎn)換加載包含零售銷售事務(wù)的事實表。第二個轉(zhuǎn)換是“查找”,該轉(zhuǎn)換從客戶維表中查找客戶姓名中的名和姓。這兩列被加入到流水線的 數(shù)據(jù)中。下一個轉(zhuǎn)換是“派生列”,該轉(zhuǎn)換基于姓名中的名和姓來創(chuàng)建新的Full Name列。然后,數(shù)據(jù)到達“聚合”轉(zhuǎn)換,該轉(zhuǎn)換累加每個客戶的總銷售額?;阡N售額,“條件性拆分”轉(zhuǎn)換將客戶拆分為兩個目標表:一個表對應(yīng)重要的客 戶,而另一個表對應(yīng)普通的客戶。

5. 在SSIS環(huán)境中進行數(shù)據(jù)挖掘

SSIS提供了流的環(huán)境,在該環(huán)境中可以通過一組內(nèi)置的任務(wù)和轉(zhuǎn)換來進行數(shù)據(jù)提取、加載和轉(zhuǎn)換。

正如您已經(jīng)學習的,在數(shù)據(jù)挖掘項目中最消耗資源的工作是數(shù)據(jù)清理和轉(zhuǎn)換。SSIS自然可以作為數(shù)據(jù)挖掘項目很好的補充??梢允褂眠@個強大的工具來從 不同的源中加載數(shù)據(jù),將這些數(shù)據(jù)連接在一起,規(guī)范化列的值,移除無用的記錄,替換缺失值,以及將數(shù)據(jù)分成訓練數(shù)據(jù)集和測試數(shù)據(jù)集等。

SSIS不僅僅作為數(shù)據(jù)挖掘的ETL工具,SSIS實際上還在控制流和數(shù)據(jù)流環(huán)境中提供了一些內(nèi)置的數(shù)據(jù)挖掘組件。特別地,在下表中列出了一些專門用于數(shù)據(jù)挖掘的任務(wù)和轉(zhuǎn)換。

用于數(shù)據(jù)挖掘的任務(wù)和轉(zhuǎn)換

數(shù)據(jù)挖掘查詢?nèi)蝿?wù)——基于數(shù)據(jù)挖掘模型來運行預(yù)測查詢
Analysis Services處理任務(wù)——處理需要分析的對象,例如立方體、維、劃分和數(shù)據(jù)挖掘模型
Analysis Services執(zhí)行DDL任務(wù)——運行數(shù)據(jù)定義語言(Data Definition Language,DDL)代碼,這些代碼可以創(chuàng)建、修改、刪除和處理需要分析的對象
數(shù)據(jù)挖掘查詢轉(zhuǎn)換——執(zhí)行數(shù)據(jù)挖掘預(yù)測查詢
數(shù)據(jù)挖掘模型定型轉(zhuǎn)換——使用流水線數(shù)據(jù)作為輸入來處理數(shù)據(jù)挖掘模型
字詞提取轉(zhuǎn)換——處理文本列來提取關(guān)鍵術(shù)語(單個詞或者較短的名詞短語)。提取的術(shù)語可以用來作為字詞查找轉(zhuǎn)換的字典
字詞查找轉(zhuǎn)換——從輸入的文本列中基于字典來搜索和提取關(guān)鍵術(shù)語。字詞查找的結(jié)果可以用作文本挖掘的訓練數(shù)據(jù)

5.1 數(shù)據(jù)挖掘任務(wù)

5.1.1 數(shù)據(jù)挖掘查詢?nèi)蝿?wù)

數(shù)據(jù)挖掘查詢?nèi)蝿?wù)用于執(zhí)行數(shù)據(jù)挖掘的查詢,主要是執(zhí)行SSIS控制流中的預(yù)測查詢。

下圖顯示了對話框的“挖掘模型”選項卡,該對話框用于編輯數(shù)據(jù)挖掘查詢?nèi)蝿?wù)的屬性。在該選項卡中,首先將連接指定到活躍的Analysis Services數(shù)據(jù)庫。然后必須指定查詢所基于的挖掘結(jié)構(gòu)和挖掘模型。

下圖顯示了數(shù)據(jù)挖掘查詢?nèi)蝿?wù)的“查詢”選項卡。在該選項卡中,必須輸入數(shù)據(jù)挖掘查詢語句。可以直接在文本框中編寫查詢語句,也可以單擊“生成新查 詢”按鈕來調(diào)用預(yù)測查詢生成器。預(yù)測查詢生成器提供了圖形化的環(huán)境,在該環(huán)境中可以構(gòu)建DMX查詢。在第3章中已經(jīng)學習了如何使用該工具。

DMX查詢可以包含一些參數(shù)。這些參數(shù)可以映射到SSIS變量。例如,您可能希望編寫一個查詢來返回一些客戶,這些客戶擁有黃金會員卡的概率超過給定的值。該給定的值可以通過SSIS變量Probability來設(shè)置。

“結(jié)果集”選項卡提供了一個選項,該選項可用于將查詢返回的結(jié)果映射到一個SSIS變量,比如一個集合變量。

下圖顯示了數(shù)據(jù)挖掘查詢?nèi)蝿?wù)的“輸出”選項卡。在這個選項卡中,可以指定連接的目標數(shù)據(jù)庫,在該目標數(shù)據(jù)庫中將保存查詢結(jié)果。它可以是與源數(shù)據(jù)相同的數(shù)據(jù)庫,也可以是不同的數(shù)據(jù)庫。您還需要對結(jié)果表進行命名。

注意:

DMX查詢可以產(chǎn)生嵌套的結(jié)果,例如,如果在Select子句中使用PredictHistogram函數(shù),則數(shù)據(jù)挖掘查詢?nèi)蝿?wù)將自動平坦化嵌套行集,然后在一個表中插入查詢結(jié)果。

5.1.2 Analysis Services處理任務(wù)

Analysis Services處理任務(wù)用于處理Analysis Services數(shù)據(jù)庫中的主要對象。這些對象可以是維、立方體、挖掘結(jié)構(gòu)和挖掘模型。

下圖顯示了該任務(wù)的編輯器??梢允褂谩疤砑印卑粹o來選擇對象,也可以在“處理選項”列中指定處理的選項和設(shè)置。

在預(yù)測查詢生成器中執(zhí)行DMX查詢
除了DMX預(yù)測查詢,還可以在預(yù)測查詢生成器中執(zhí)行其他類型的DMX查詢。例如,可以輸入以下的內(nèi)容查詢:

1 Select * from myAssociationModel.Content Where Node_Type = 7

也可以調(diào)用存儲過程:

1 Call mystoreproc

實際上,也可以在數(shù)據(jù)挖掘查詢?nèi)蝿?wù)中指定DMX的Creation語句和Insert Into語句。可以使用該任務(wù)來創(chuàng)建和處理挖掘模型。

5.1.3 Analysis Services執(zhí)行DDL任務(wù)

DDL(數(shù)據(jù)定義語言)可以采用XML格式來描述。在Analysis Services 2005中,所有的對象(挖掘模型、挖掘列、維、立方體和角色等等)都是使用DDL來定義的(在第14章中將學習DDL的基本概念)。

除了對象的定義,DDL還包含了一組命令。這些命令使創(chuàng)建、更新、處理和刪除對象變得容易。

當使用圖形化的工具(例如挖掘模型編輯器)來創(chuàng)建挖掘模型時,這些工具會產(chǎn)生發(fā)送給服務(wù)器的DDL腳本。

如果不使用數(shù)據(jù)挖掘編輯器來創(chuàng)建/更新這些對象,則可以復(fù)制或者編寫這些DDL腳本,然后通過執(zhí)行DDL任務(wù)來執(zhí)行它們。

下圖顯示了執(zhí)行DDL任務(wù)的編輯器。首先,必須指定與Analysis Services的連接。然后單擊SourceDirect屬性,該屬性調(diào)用用來顯示DDL命令的文本框。在圖12-8中的DDL用于在 Adventure Works DW數(shù)據(jù)庫中創(chuàng)建挖掘結(jié)構(gòu)DM Customers。

5.1.4 一個使用數(shù)據(jù)挖掘的控制流示例

下圖顯示了使用數(shù)據(jù)挖掘查詢?nèi)蝿?wù)的控制流示例??刂屏魇紫韧ㄟ^FTP任務(wù)下載新客戶的數(shù)據(jù)集,然后使用大容量插入任務(wù)將數(shù)據(jù)加載到SQL Server數(shù)據(jù)庫中。如果在數(shù)據(jù)加載期間發(fā)生了錯誤,則它會向DBA發(fā)送電子郵件。如果數(shù)據(jù)加載成功,則它會執(zhí)行數(shù)據(jù)挖掘查詢?nèi)蝿?wù),該任務(wù)用于查找那些 對特殊的促銷產(chǎn)品可能感興趣的客戶。預(yù)測的結(jié)果會保存在表中。在預(yù)測之后,它會給可能感興趣的客戶發(fā)送電子郵件。

5.2 數(shù)據(jù)挖掘轉(zhuǎn)換

5.2.1 數(shù)據(jù)挖掘模型定型轉(zhuǎn)換

數(shù)據(jù)挖掘模型定型轉(zhuǎn)換(簡稱DM定型轉(zhuǎn)換)用于在數(shù)據(jù)流環(huán)境中處理挖掘結(jié)構(gòu)及其相關(guān)的挖掘模型。

Analysis Services處理任務(wù)也可以處理挖掘模型,但是必須在任務(wù)中指定輸入表。在執(zhí)行期間,AS服務(wù)器從存儲了訓練數(shù)據(jù)的源表中提取數(shù)據(jù)。然而,在數(shù)據(jù)流環(huán) 境中,DM定型轉(zhuǎn)換在執(zhí)行期間將數(shù)據(jù)從流水線推到Analysis Services。AS服務(wù)器以推的模式獲得訓練數(shù)據(jù)。在將流水線數(shù)據(jù)發(fā)送給AS服務(wù)器之前,DM定型轉(zhuǎn)換以XML行集的格式對該數(shù)據(jù)進行封裝。

下圖顯示了DM定型轉(zhuǎn)換的屬性對話框的“連接”選項卡。在該選項卡中,可以指定到AS Server數(shù)據(jù)庫的連接,然后選擇您希望使用流水線數(shù)據(jù)來處理的挖掘結(jié)構(gòu)。

也可以使用“新建”按鈕來創(chuàng)建新的挖掘結(jié)構(gòu)。單擊該按鈕后會啟動數(shù)據(jù)挖掘向?qū)?。在該向?qū)е?,對模型?chuàng)建過程的處理方式與在數(shù)據(jù)挖掘編輯器環(huán)境中的處 理方式相同。然而,還存在一些不同的地方。首先,列是來自流水線,而不是來自關(guān)系表。某些特性(例如,自動檢測內(nèi)容類型和相關(guān)建議)不可用。這是因為這些 特性需要對輸入數(shù)據(jù)進行掃描和采樣,而在流水線環(huán)境中這些操作是不可行的。

下圖顯示了DM定型轉(zhuǎn)換的“列”選項卡,在該選項卡上可以指定流水線的列和挖掘結(jié)構(gòu)的列之間的映射。在默認情況下,該工具會基于列名自動進行映射。

提示:
雖然DM定型轉(zhuǎn)換支持模型創(chuàng)建,但是對模型進行編輯(比如改變模型的參數(shù))卻相當困難。一種解決方案是在相同的解決方案中擁有兩個BI項目:SSIS項目和AS項目。在這種情況下,可以在AS項目中使用挖掘模型編輯器,從而獲得對于挖掘模型的完整編輯功能。

5.2.2 數(shù)據(jù)挖掘查詢轉(zhuǎn)換

顧名思義,數(shù)據(jù)挖掘查詢轉(zhuǎn)換(簡稱DM查詢轉(zhuǎn)換)是用于執(zhí)行數(shù)據(jù)挖掘查詢的轉(zhuǎn)換。在第2章中,已學習了不同類型的DMX查詢,包括預(yù)測、內(nèi)容、模型創(chuàng)建和模型訓練。在這些查詢中,預(yù)測查詢是最常見的。

要執(zhí)行預(yù)測查詢,需要訓練過的挖掘模型和輸入數(shù)據(jù)集。在流水線環(huán)境中,輸入數(shù)據(jù)集是從流水線推來的。DM查詢轉(zhuǎn)換將來自流水線的輸入數(shù)據(jù)封裝為 XML行集,然后通過XML/A協(xié)議將它們發(fā)送給AS服務(wù)器。AS服務(wù)器執(zhí)行查詢,然后將XML結(jié)果返回給該轉(zhuǎn)換。然后,該轉(zhuǎn)換解析該結(jié)果,再將解析后的 結(jié)果推給流水線,以便下一個轉(zhuǎn)換進行處理。當輸入數(shù)據(jù)比較大時,該過程會以塊的方式來處理:每次將一組行發(fā)送給AS服務(wù)器來進行預(yù)測。

下圖顯示了該轉(zhuǎn)換的“挖掘模型”選項卡,在該選項卡上將連接指定到活躍的AS服務(wù)器的數(shù)據(jù)庫,還必須選擇挖掘結(jié)構(gòu)和它的模型之一。

在該轉(zhuǎn)換的“查詢”選項卡上可以輸入DMX查詢??梢允謩泳帉懖樵?,也可以單擊“生成新查詢”按鈕來啟動預(yù)測查詢生成器。預(yù)測的輸入表是流水線的輸 入,表示為@InputRowset。DMX查詢結(jié)果可以包含嵌套的結(jié)果,例如,在Select語句中使用PredictionHistogram函數(shù)。 在這種情況下,將會自動平坦化嵌套行集。

注意:

在SQL Server 2005中,SSIS數(shù)據(jù)流本身不支持嵌套行集。這一點會給數(shù)據(jù)挖掘的訓練和預(yù)測增加技術(shù)上的挑戰(zhàn),因為它可能需要嵌套的輸入,然后產(chǎn)生嵌套的輸出。為了 解決這個問題,DM查詢轉(zhuǎn)換在有嵌套行集時會自動平坦化結(jié)果。然而,對于嵌套的輸入,問題更大。當模型或者查詢需要嵌套的輸入時,推薦使用DM定型任務(wù)和 DM查詢?nèi)蝿?wù)。

5.2.3 數(shù)據(jù)流示例

下圖顯示了用于模型訓練的數(shù)據(jù)流示例。它以O(shè)LE DB數(shù)據(jù)源轉(zhuǎn)換開始,該轉(zhuǎn)換選擇FoodMart Customer表。下一個轉(zhuǎn)換是派生列轉(zhuǎn)換,該轉(zhuǎn)換創(chuàng)建了新的列Age,該列是從Birthdate列中派生的。一旦將新的列加入到流水線中,就會將數(shù) 據(jù)發(fā)送給DM定型轉(zhuǎn)換,該轉(zhuǎn)換并行地處理挖掘結(jié)構(gòu)及其相關(guān)的挖掘模型。

下圖顯示了使用DM查詢轉(zhuǎn)換的數(shù)據(jù)流。流水線以O(shè)LE DB源轉(zhuǎn)換開始,該轉(zhuǎn)換加載NewCustomer表。下一個轉(zhuǎn)換是派生列,該轉(zhuǎn)換添加從Birthdate列中派生的Age列。第三個轉(zhuǎn)換是DM查詢, 該轉(zhuǎn)換使用已訓練的決策樹模型來為每個新的客戶預(yù)測最有可能擁有的會員卡。預(yù)測的結(jié)果會發(fā)送給條件性拆分轉(zhuǎn)換,該轉(zhuǎn)換基于會員卡的類型將數(shù)據(jù)分成3個流水 線分支。左邊的分支只包含金卡會員,中間的分支只包含銀卡會員,而右邊的分支包含銅卡會員和普通會員。每個分支都會通向OLE DB目標轉(zhuǎn)換,在該轉(zhuǎn)換中分別存儲了VIP客戶、重要的客戶以及普通的客戶。

該示例也說明了數(shù)據(jù)挖掘技術(shù)可以作為高級的ETL過程來應(yīng)用。它使得數(shù)據(jù)拆分不僅可以基于已有的屬性,還可以基于預(yù)測的屬性。

5.2.4 字詞提取轉(zhuǎn)換

字詞提取轉(zhuǎn)換用于構(gòu)建特定領(lǐng)域中的關(guān)鍵術(shù)語的術(shù)語表。這通常是文本挖掘項目的第一步。在輸入流水線緩沖器中的列之一包含了某種類型(比如ntext 或者nvarchar)的文本數(shù)據(jù)。該轉(zhuǎn)換的目的是分析這一列,然后基于這一列的內(nèi)容來構(gòu)建關(guān)鍵術(shù)語的字典。轉(zhuǎn)換的輸出是一個只含一列的表。提取關(guān)鍵術(shù)語 不是想象中那么容易;存在許多復(fù)雜的技術(shù),例如,單詞詞干處理和相關(guān)的語法分析。該轉(zhuǎn)換提取名詞和名詞短語,比如data mining。

字詞提取轉(zhuǎn)換的用戶界面非常簡單。在第一個選項卡中,必須指定文本列。也可以對關(guān)鍵術(shù)語的輸出列及其相關(guān)的分數(shù)進行命名,如下圖所示。分數(shù)基于 TFIDF,TFIDF代表詞頻(Term Frequency)和倒文檔詞頻(Inverse Document Frequency)。TFIDF是統(tǒng)計學中的一種技術(shù),用于評估單詞對文檔的重要性。該重要性根據(jù)單詞在文檔中出現(xiàn)的次數(shù)而成比例地增加,但是會受單詞 在收集的所有文檔中出現(xiàn)的頻率影響而發(fā)生偏移。

5.2.5 移除數(shù)據(jù)流中的孤立點

可以應(yīng)用數(shù)據(jù)挖掘技術(shù)來移除數(shù)據(jù)流中的孤立點(outlier)。正如在第7章中所解釋的,Microsoft聚類算法提供了預(yù)測函數(shù) PredictCaseLikelihood,該函數(shù)返回某個事例適合于某個給定模型的似然估計。似然估計分數(shù)非常低的事例屬于異常??梢允褂肈M查詢轉(zhuǎn) 換來執(zhí)行針對流水線數(shù)據(jù)的預(yù)測查詢,然后基于查詢的結(jié)果來過濾異常。以下查詢基于似然估計分數(shù)來識別來自數(shù)據(jù)集的前50個孤立點。

SELECT Top 50 t.CustomerKey, PredictCaseLikelihood() From MyClusterModel
PREDICTION JOIN @InputRowset AS t ON

Order by PredictCaseLikelyhood() Desc

第二個選項卡(參見下圖)給出了一個選項,該選項用于指定包含的術(shù)語和不包含的術(shù)語。您可能已經(jīng)擁有必須包括的預(yù)定義的術(shù)語清單,以及不希望提取的術(shù)語清單。在這個選項卡中可以指定這兩個術(shù)語清單。

字詞提取轉(zhuǎn)換也提供用于術(shù)語的選項;例如,可以指明術(shù)語必須是單個詞或者名詞短語。對于名詞短語,也可以提及最大長度。

5.2.5 字詞查找轉(zhuǎn)換

字詞查找轉(zhuǎn)換用于(基于字典)從輸入文本列中搜索關(guān)鍵術(shù)語。字典通常通過字詞提取轉(zhuǎn)換產(chǎn)生。因為字典就是表,所以當有必要時可以編寫SQL查詢來修改清單(通過增加或者刪除術(shù)語)。

字詞查找轉(zhuǎn)換的編輯器相當簡單。第一個選項卡用于指定引用表(字典),如下圖所示。

第二個選項卡用于指定列的映射,例如,將輸入文本列映射到字典(參見下圖)。也可以直接指定一些輸入列,例如,文檔ID。

字詞查找轉(zhuǎn)換產(chǎn)生兩個新列作為輸出:字詞和詞頻。可以將該轉(zhuǎn)換的輸出認為是包含大量行的事實表(包含文檔ID、關(guān)鍵術(shù)語和相關(guān)的詞頻)。

提示:
在許多情況下,字詞查找轉(zhuǎn)換產(chǎn)生的術(shù)語比需要用于文本挖掘的術(shù)語要多。也可能存在一些無用的術(shù)語。在將數(shù)據(jù)輸入到挖掘模型之前,強烈推薦對查找轉(zhuǎn)換的輸出表進行瀏覽,然后移除那些認為無用的術(shù)語。

5.2.6 文本挖掘項目示例

在我們周圍,非結(jié)構(gòu)化的數(shù)據(jù)比結(jié)構(gòu)化的數(shù)據(jù)要多得多,比如Internet,它包含數(shù)十億個非結(jié)構(gòu)化的超文本標記語言(Hypertext Markup Language,HTML)文檔。分析文本文檔變得越來越重要。兩個流行的用于文本挖掘的數(shù)據(jù)挖掘任務(wù)是分類和細分。流行的文本挖掘領(lǐng)域之一是客戶支持 領(lǐng)域。在分類的示例中,有許多來自Web和電子郵件的客戶反饋,我們希望為每個反饋指派優(yōu)先權(quán)。在細分的示例中,我們希望將相似的反饋分組到一起,然后將 它們轉(zhuǎn)發(fā)給正確的部門。

通過SQL Server 2005,可以使用SSIS和數(shù)據(jù)挖掘來實現(xiàn)文本挖掘項目。在一個典型的流中,第一步是使用字詞提取來為商業(yè)領(lǐng)域創(chuàng)建字典。第二步是使用字詞查找來從文本 列中搜索關(guān)鍵術(shù)語,從而將非結(jié)構(gòu)化的數(shù)據(jù)轉(zhuǎn)換為結(jié)構(gòu)化的輸出。第三步是應(yīng)用數(shù)據(jù)挖掘技術(shù)(例如貝葉斯、神經(jīng)網(wǎng)絡(luò)、聚類和決策樹)在字詞查找的輸出上構(gòu)建模 型。通常,字詞查找的輸出用作挖掘模型中的嵌套表。

下圖顯示了使用關(guān)聯(lián)算法的文本挖掘模型的示例。它分析了軟件開發(fā)項目的bug描述數(shù)據(jù)庫,并且確認了關(guān)鍵術(shù)語之間的關(guān)系。

6 小結(jié)

在本章中,學習了與另一個重要的SQL Server組件SQL Server集成服務(wù)(SSIS)相關(guān)的基本概念。我們介紹了控制流和數(shù)據(jù)流。還討論了一些重要的任務(wù)和轉(zhuǎn)換。SSIS是用于數(shù)據(jù)清理和轉(zhuǎn)換(該步驟對于任何數(shù)據(jù)挖掘項目來說都是很耗時的)的重要工具。

本章中間部分的內(nèi)容集中介紹了SSIS環(huán)境中特定于數(shù)據(jù)挖掘的特性。我們論述了每個與數(shù)據(jù)挖掘相關(guān)的任務(wù)和轉(zhuǎn)換。最后,我們給出了基于SQL Server 2005的兩個與文本挖掘相關(guān)的轉(zhuǎn)換和一個典型的文本挖掘項目示例。

數(shù)據(jù)挖掘和SSIS能夠從彼此中獲得好處。SSIS為數(shù)據(jù)挖掘提供數(shù)據(jù)處理的環(huán)境,而數(shù)據(jù)挖掘技術(shù)可以用作數(shù)據(jù)轉(zhuǎn)換過程的一部分。它使得SSIS更聰明,從而使得SSIS領(lǐng)先于其他經(jīng)典ETL產(chǎn)品。

到現(xiàn)在為止,您應(yīng)該清楚地理解了SSIS與數(shù)據(jù)挖掘之間的關(guān)系,以及可以在SSIS環(huán)境中完成的數(shù)據(jù)挖掘項目的類型。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多