製作ssis注意事項
2, 可以在Control Flow的設計頁面右鍵新增Variables, Script Task如果要訪問全域性變數,需要在編輯時在ReadOnlyVariables和ReadWriteVariables兩種型別中預先定義,然後電機Design Script按鈕,進入編輯指令碼.
3, DataFow Task Item
在Integration Services Project中,一旦建立了一個Data Flow任務,它將會生成新的資料流。正如Controller Flow(控制器流)負責處理程式包的主工作流那樣,資料流負責處理資料的轉換。幾乎所有能夠操作資料的元件都可以歸類到資料流類別。當資料在資料流中的每一步中流動時,資料將根據所進行的轉換內容而發生變化。如圖1-7所示,使用派生列轉換後將生成一個新的列,然後這個新列對於後續的轉換或者目的地都可用。
在本節中將簡短討論每種資料來源、目的地以及轉換。在第3、4章將對本節內容進行更詳細的介紹。
1.6.1 源
源(source)是使用者所指定的源資料位置,資料從源被拉到資料泵中。源通常指向SSIS中的Connection Manager(連線管理器)。通過指向連線管理器,使用者可以在整個程式包中重用連線,因為只需要在一個位置修改連線即可。在SSIS中,一共有6種可以使用的源。
● OLE DB源(OLE DB source):連線到幾乎所有的OLE DB資料來源,例如SQL Server、Access、Oracle或DB2,等等。
● Excel源(Excel Source):專門負責接收來自Excel電子表格資料的源。這種源也可以使得運行鍼對Excel電子表格的SQL查詢更為容易,以限制希望通過資料流的資料範圍。
● 平面檔案源(Flat File Source):連線到定界的或固定寬度的檔案。
● 原始檔案源(Raw File source):一種由原始檔案目的地(Raw File Destination)所建立的專門檔案格式。原始檔案源通常表示傳輸過程中的資料,而且讀取非常快捷。
● XML源(XML source):可以獲取來自XML文件的資料。
● DataReader源(DataReader source):DataReader源是一個ADO.NET連線,非常類似於在自己的應用程式程式碼中使用DataReader介面連線到資料庫時在.NET Framework中所看到的連線。
1.6.2 目的地
在資料流中,目的地接收來自資料來源和來自轉換過程的資料。SSIS的靈活體系結構可以傳送資料到幾乎任何OLE DB相容的資料來源或者到某個平面檔案。和源一樣,目的地是通過連線管理器來管理的。在SSIS中,可以使用以下型別的目的地:
● 資料探勘模型培訓(Data Mining Model Training):這種目的地通過將來自資料流的資料傳遞到目的地來培訓某個分析服務(Analysis Services)挖掘模型。
● DataReader目的地(DataReader Destination):允許將資料提交給其他的外部程序,例如報告服務(Reporting Services)或自己的.NET應用程式。該目的地使用ADO.NET DataReader介面來完成這一工作。
● 維度處理(Dimension Processing):載入並處理某個分析服務維度。它可以執行維度的完全更新或增量更新。
● Excel目的地(Excel destination):將來自資料流的資料輸出到某個Excel電子表格。
● 平面檔案目的地(Flat File destination):使得使用者可以將資料寫入到某個定界或固定寬度的檔案。
● OLE DB目的地(OLE DB destination):將資料輸出到某個OLE DB資料連線,例如SQL Server、Oracle或Access。
● 分割槽處理(Partition Processing):使得使用者可以執行分析服務分割槽的增量更新或完全更新處理過程。
● 原始檔案目的地(Raw File Destination):這種目的地負責輸出稍後可以用於原始檔案源的資料。這是一種非常專業化的格式,而且輸出非常快捷。
● 記錄集目的地(Recordset Destination):將記錄寫入到ADO記錄集。
● SQL Server目的地(SQL Server Destination):使用這種目的地可以最有效地將資料寫入到SQLServer。
● SQL Server移動目的地(SQL Server Mobile Destination):將資料插入到運行於掌上電腦(Pocket PC)上的SQL Server。
1.6.3 轉換
轉換(transformation)是資料流的關鍵元件,負責將資料轉變為所希望的格式。例如,使用者可能希望對資料進行排序或聚合。可以使用兩種轉換來完成這一任務。在SSIS中,有關轉換的最大好處是所有過程都是在記憶體中完成的,而且不再需要像SQL Server 2000 DTS中所必須進行的精心指令碼程式設計。在第4章和第6章將詳細討論轉換。以下是SSIS中可用的完整轉換列表:
● 聚合(Aggregate):聚合來自轉換過程或源的資料。
● 稽核(Audit):這種轉換負責將稽核資訊提供給程式包。這些稽核資訊包括諸如軟體何時執行以及由誰所執行之類的資訊。
● 字元對映表(Character Map):這種轉換可以進行字元資料轉換,例如將資料從小寫轉換為大寫。
● 條件拆分(Conditional Split):根據所符合的特定條件來拆分資料。例如,這種轉換可以設定為當State(州)列等於Florida(佛羅里達)時沿不同的路徑傳送資料。
● 複製列(Copy Column):將某個列的副本加入到轉換輸出。稍後可以對副本進行轉換,而保留原始資料用於稽核。
● 資料變換(Data Conversion):將某列的資料型別變換為其他的資料型別。
● 資料探勘查詢(Data Mining Query):執行鍼對分析服務的資料探勘查詢。
● 派生列(Derived column):建立一個根據表示式所計算得到的新派生列。
● 匯出列(Export Column):這種轉換允許使用者將列從資料流匯出到某個檔案。例如,可以使用這種轉換將某個包含影象的列寫入到檔案。
● 模糊分組(Fuzzy Grouping):通過查詢可能重複的行來清理資料。
● 模糊查詢(Fuzzy Lookup):根據模糊邏輯來匹配並標準化資料。例如,該轉換可以將名稱jon轉換為john。
● 匯入列(Import Column):從檔案讀取資料並把它加入到某個資料流。
● 查詢(Lookup):對稍後要用於轉換過程的資料執行查詢。例如,可以使用這種轉換根據郵政編碼來查詢某個城市。
● 合併(Merge):將資料流中的兩個排序資料集合併為單個數據集。
● 合併聯接(Merge Join):使用一個聯接功能將兩個資料集合併為單個數據集。
● 組播(Multicast):將資料的一個副本傳送到工作流中增加的路徑。
● OLE DB命令(OLE DB Command):針對資料流中的每一行執行一個OLE DB命令。
● 百分比取樣(Percentage Sampling):通過使用資料流中總行數的百分比來從資料流捕獲資料取樣。
● 透視(Pivot):將位於某列上的資料透視到一個非相關的格式。透視某個表,意味著可以按照多種方式來劃分資料,這與在OLAP和Excel中很相似。
● 行數(Row Count):將行數從資料流儲存到變數中。
● 行取樣(Row Sampling):通過使用資料流中總行數從資料流捕獲資料取樣。
● 指令碼元件(Script Component):使用指令碼轉換資料。例如,可以使用這種轉換將專門的業務邏輯應用於資料流。
● 緩慢變化維度(Slowly Changing Dimension):協調某個緩慢變化維度中的資料的條件插入或更新。
● 排序(Sort):通過給定的列對資料流中的資料進行排序。
● 術語提取(Term Extraction):提取文字資料中的名詞或形容詞。
1.6.3 Script Component
可以使用指令碼組建靈活修改輸入輸出, 通過修改row的列值達到修改輸出的目的. 這裡要注意的是如果要在script component中修改variable, 需要重寫方法. 也可以通過靈活設定exclusiongroup非0來使用DirectRowToOutput達到filter row的目的.
Public Overrides Sub FileInput_ProcessInputRow(ByVal Row As FileInputBuffer)
If Row.Col001 <> "HDR" And Row.Col001 <> "TLR" Then
Row.CrtTime = Now
Row.FileName = Me.Variables.FileName
If Row.Col002 = "Y" Or Row.Col014 = "N" Then
Row.ChequeFrm = "0"
Else
Row.ChequeFrm = "1"
End If
Row.PostStatus = "P"
Row.SplitTktFlag = Row.Col001
Row.DirectRowToOutput()
value = "abcd"
End If
End Sub
'override postexecute method to update the variables
Public Overrides Sub PostExecute()
Variables.TLR = value
MyBase.PostExecute()
End Sub
1.7 Connection Manager
在建立Connection Manager後,可以通過script修改connection string來重新設定連線, 要根據native sql和ole net等型別注意連線串的format,
● 術語查詢(Term Lookup):查詢從文字中提取的術語,然後引用某個引用表中的值。
● 聯合所有(Union All):將多個數據集合併到單個數據集。
● 逆透視(Unpivot):將資料從非標準格式逆透視為某種關係格式。