[SQL][MCSA]70-463 考試預備 ( 2/4 )

[SQL][MCSA]70-463 考試預備 ( 2/4 )

接續前一篇的準備,接下來要把重心放在資料流程上的元件了,這個部分主要是 ETL 的重心了,看來要好好的熟悉相關元件的使用方式和使用時機了。

 

資料流程 ( http://msdn.microsoft.com/zh-tw/library/ms140080.aspx )

資料流程元件及其輸入與輸出


 

來源

在 Integration Services 中,來源是一個資料流程元件,可讓資料流程中的其他元件使用不同外部資料來源的資料。 您可以從一般檔案、XML 檔案、Microsoft Excel 活頁簿及包含原始資料的檔案中擷取資料。 您也可以透過存取資料庫中的資料表和檢視以及執行查詢來擷取資料。

image

  • ADO.Net , Excel , ODBC , OLE DB , 一般檔案這四種都必須配合連接管理員來使用,基本上使用方式都雷同,有特別需要注意的有以下兩點:
    1. 如果要連接 Azure 則採用 ADO.Net 會比較合適
    2. 如果取資料是使用 SQL 命令,則要注意因連接類型不同時參數的寫法也有所不同,跟前面介紹 SQL 一篇介紹 「執行 SQL 工作」的部分相同。
  • XML 可設定檔案路徑或者是讀取變數內容,不需要透過連接管理員。
  • 原始檔案是直接設定檔案路徑,由於資料的表示法對於來源而言是原生的,因此資料不需翻譯,也幾乎不需要剖析,因此比其他來源更快讀取資料。
  • CDC 來源是 SSIS 2012 所新增的,透過兩個控制流程的 「CDC 控制工作」來讀取和寫入 CDC 狀態變數,而在中間的資料流程,就可以使用 「CDC 來源」配合連接管理員和 CDC 狀態變數取出異動資料,再配合「CDC 分隔器」將 CDC 來源資料流程中變更資料列的單一流程分割為插入、更新和刪除作業的不同資料流程,進行後續的處理。由於這個元件是新增的,因此可能要多留意一下該元件的搭配使用。

 

目的地

目的地是將資料流程中的資料寫入特定資料存放區,或者建立記憶體中資料集的資料流程元件。 您可以將資料載入一般檔案、處理分析資料,以及提供資料給其他處理序。 您也可以透過存取資料庫中的資料表和檢視以及執行查詢來載入資料。

目的地元件

image

  • ADO.Net 目的地、Excel 目的地、ODBC 目的地、OLE DB 目的地和一般檔案目的地,在使用上跟來源所需要注意的事項相同。
  • ADO.NET has better support for data types compared to OLE DB (for example, Xml, Binary, and Decimal data types are not available in OLE DB, and there are problems with the SQL Server large object data types VARCHAR(MAX) and VARBINARY(MAX)).
  • 「OLE DB 目的地」當使用快速載入 ( Fast Load ) 的時候,會增加一些選項,要注意一下這幾個選項的用途和時機

image

  • 如果是連接 SQL Server,也可以使用 「SQL Server 目的地」,會具有跟 OLE DB 目的地的快速載入有類似的功能。

image

  • DataReader 目的地 : 使用 ADO.NET DataReader 介面公開資料流程中的資料,可讓資料由其他應用程式來取用。比較常見的例子就是透過 SSIS 取得資料和處理後,交由 SSRS 來產出所需要的報表。

 

轉換

轉換具有廣泛的功能。 它可以執行例如更新、摘要、清除、合併和散發資料等工作。 您可以修改資料行中的值、查閱資料表中的值、清除資料,以及彙總資料行值。

  • 「模糊查詢」 ( Fuzzy Lookup ) http://msdn.microsoft.com/zh-tw/library/ms137786.aspx
    • 「模糊查詢」轉換與「查閱」轉換的不同之處在於其使用模糊比對。 「查閱」轉換使用等聯結 (Equi-Join),在參考資料表中尋找相符的資料錄。 它會傳回至少有一項相符資料錄的資料錄,以及傳回沒有任何相符資料錄的資料錄。 相反地,「模糊查閱」轉換會使用模糊比對,傳回參考資料表中的一個或多個相近相符項目。
    • MatchIndexOptions :
選項 說明
GenerateNewIndex 建立新索引,但不對其進行儲存。
GenerateAndPersistNewIndex 建立並儲存新索引,但不對其進行維護。
GenerateAndMaintainNewIndex 建立、儲存並維護新索引。 轉換會在參考資料表上安裝觸發程序,以讓參考資料表與索引資料表同步。
ReuseExistingIndex 重複使用現有的索引。
    • 相似度範圍是從 0 到 1。 臨界值愈接近 1,資料列和資料行就愈近似於重複項目。 為滿足在元件層級指定的相似度,所有資料列之所有相符項目的相似度都必須大於或等於在元件層級指定的相似度臨界值。也就是說,設定的值最大處理速度越快,資料相似度的要求也最高,相反要是設定的值越低,則處理的時間也越長,越容易出現多筆資料需要去判斷的狀況。

image

  • 「模糊群組轉換」(Fuzzy Grouping ) 通過識別可能重複的資料列並選取用於標準化資料的標準資料列,執行資料清除工作

image

  • 「查閱」 ( Lookup ) 聯結輸入資料行中的資料與參考資料集中的資料行來執行查閱。 您可以使用查閱在相關資料表中存取以通用資料行中的值為基礎的其他資訊。如果是完整快取的時候,則不允許進階設定,通常在關聯的資料表並不是太大的狀況下,一次載入所有關聯資料,避免每次都要一筆一筆的讀取,提升運作效能。

image

image

  • 合併 ( Merge ) 會將兩個排序的資料集結合成單一資料集。 各資料集的資料列會根據其索引鍵資料行的值插入輸出中。
    • 如果資料來源沒有搭配 SSIS 「排序」做處理,而是要透過 SQL 指令的 Order By 的語法的情況下,則必須要在資料來源的進階編輯器去設定資料集合的 IsSort 的屬性,並且在輸出的欄位上要設定 SortKeyPosition 的值。

image

image

  • 「合併連結 」( Merge Join ) 提供藉由使用 FULL、LEFT 或 INNER 聯結,來聯結兩個排序資料集所產生的輸出。
  • 「聯集全部 」( Union All ) 會將多項( 可超過兩個以上的資料來源 )輸入結合至單一輸出,且資料來源可以不用先經過排序的處理。

 

  • 「條件分割」( Conditional Split ) 可根據資料的內容,經過類似程式設計語言中的 CASE 判斷,將資料列傳送至不同的輸出。

 

  • 「多點傳送」( Multicast ) 會將其輸入散發至一個或多個輸出。此轉換與「條件式分割」轉換類似, 兩者的差異在於「多點傳送」轉換會將每個資料列導向符合的每個輸出,而「條件式分割」會將一個資料列導向單一輸出

 

  • 「緩時變維度」( Slowly Changing Dimension ) 可在資料倉儲維度資料表中協調記錄的更新與插入,支援四個類型的變更:變更屬性、記錄屬性、固定屬性及推斷的成員。
    • 固定屬性變更指示資料行的值不得變更。 「緩時變維度」轉換會偵測變更,並可將具有變更的資料列導向稱為 [固定屬性輸出] 的輸出。
    • 變更屬性變更會覆寫現有記錄。 此種變更相當於「Type 1」變更,會將這些資料列導向稱為 [變更屬性更新輸出] 的輸出。
    • 記錄屬性變更會新建記錄,而不是更新現有記錄。 現有記錄中唯一允許的變更,是更新指示記錄為目前記錄還是過期記錄的資料行。此種變更相當於「Type 2」變更。 「緩時變維度」轉換會將這些資料列導向至兩個輸出:[記錄屬性插入輸出] 及 [新輸出]。
    • 不支援需要變更維度資料表的「Type 3」變更。

image

image

 


 

參考資料