資料清除封裝範例
更新: 2005 年 12 月 5 日
Data Cleaning 範例是會清除資料的封裝。該封裝使用的資料是代表潛在客戶之名稱和地址的清單。該資料需要清除;它包含拼字錯誤、其本身是已遺失的資訊,且包含已存在於資料庫中的客戶、假客戶或彼此稍微不同但代表同一客戶的多個客戶。
封裝控制流程包含兩個工作。第一個是「執行 SQL」工作,其會建立輸入資料表 CustomerLeads,並建立三個名為 ExistingCustomerLeads、NewCustomerLeads 和 DuplicateCustomerLeads 的輸出資料表。第二個是「資料流程」工作,其會執行對擷取自 CustomerLeads 資料表的資料進行清除的資料流程。資料流程可識別唯一的新客戶、現有客戶及重複客戶,並將每個客戶類型的資料列寫入適當的輸出資料表。
如果您在非英文版的 Windows 上執行此範例,可能必須取代 [Program Files] 資料夾的當地語系化名稱,才可開啟或執行此範例。
附註: |
---|
此範例會使用僅在 SQL Server 2005 的 Enterprise 版中才可用的「模糊群組」及「模糊查閱」轉換。 |
重要事項: |
---|
範例只供教育目的之用。它們不能用於實際執行環境,而且從來沒有在實際執行環境中測試過。Microsoft 不提供對這些範例的技術支援。 |
若要瞭解有關資料清除的詳細資料,請在 MSDN Library (位於 https://msdn.microsoft.com/library) 中搜尋下列文章。
- Data Cleansing Applications with SQL Server Integration Services (資料清除應用程式與 SQL Server Integration Services) (Windows Media 視訊)
- Data Cleaning using the Fuzzy Grouping and Fuzzy Lookup Transformations (使用模糊群組和模糊群組轉換清除資料) (白皮書)
需求
執行此範例封裝需要進行下列動作:
- 必須已安裝 AdventureWorks 資料庫並且對此資料庫具有系統管理權限。
- 如果只想從命令列執行範例封裝,則必須安裝 SQL Server 2005 Integration Services (SSIS)。
- 若要在「SSIS 設計師」中開啟封裝並執行範例封裝,則必須安裝 Business Intelligence Development Studio。
如需有關如何安裝範例的詳細資訊,請參閱《SQL Server 線上叢書》中的<安裝範例 Integration Services 封裝>。若要取得最新版的範例,包括自 SQL Server 2005 原始發行版本以來所發佈的新範例,請參閱<SQL Server 2005 範例與範例資料庫 (2006 年 4 月)>(英文)。
範例封裝的位置
如果範例已安裝於預設安裝位置,則 Data Cleaning 封裝位於下列資料夾中:
C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\DataCleaning Sample\Data Cleaning\。
執行此範例封裝需要下列檔案。
檔案 | 描述 |
---|---|
DataCleaning.dtsx |
範例封裝。 |
CreateTables.sql |
建立資料表的 SQL 陳述式。 |
將資料檢視器加入至範例
若要更好地瞭解 Data Cleaning 封裝的運作方式,您可以將資料檢視器加入至資料流程,然後當其在資料流程元件之間移動時對資料進行檢視。建議您將資料檢視器加入至下列路徑:
- 路徑 從 [聯集全部] 至 [OLE DB 目的地 - 現有客戶]
- 路徑 從 [群組之標準記錄的條件式分割] 至 [OLE DB 目的地 - 唯一潛在客戶]
- 路徑 從 [群組之標準記錄的條件式分割] 至 [OLE DB 目的地 - 重複的潛在客戶]
若要加入資料檢視器
以滑鼠右鍵按一下路徑,然後再按 [資料檢視器]。
在 [資料流程路徑編輯器] 中按一下 [加入]。
在 [設定資料檢視器] 對話方塊中,按一下類型清單中的 [方格]。依預設,所有資料行都會顯示在資料檢視器中。
對其他路徑重複步驟 1-3。
執行範例
從命令列使用 dtexec 公用程式可以執行封裝,或者也可以在 Business Intelligence Development Studio 中執行封裝。
如果您使用非英文版的 Windows,可能需要更新封裝中所使用之任何檔案連接管理員的 ConnectionString 屬性,才可順利執行範例封裝。請確認連接管理員中使用的路徑在電腦上有效,如果需要的話,也可以修改該路徑以使用 [Program Files] 資料夾的當地語系化名稱。
對於此範例,您可能必須更新 CreateTables.sql 連接管理員之 ConnectionString 屬性中的 "Program Files"。
若要使用 dtexec 執行封裝
開啟 [命令提示字元] 視窗。
將目錄變更為 C:\Program Files\Microsoft SQL Server\90\DTS\Binn,即 dtexec 的位置。
輸入以下命令:
dtexec /f "C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\Data Cleaning Sample\DataCleaning\DataCleaning.dtsx"
按 ENTER 鍵。
如需有關如何使用 dtexec 公用程式執行封裝的詳細資訊,請參閱《SQL Server 2005 線上叢書》中的<dtexec 公用程式>主題。
若要在 Business Intelligence Development Studio 中執行封裝
開啟 [Business Intelligence Development Studio]。
在 [檔案] 功能表上,指向 [開啟],然後按一下 [專案/方案]。
尋找 [DataCleaning 範例] 資料夾,然後按兩下名為 DataCleaning.sln 的檔案。
在 [方案總管] 中,以滑鼠右鍵按一下 [SSIS 封裝] 資料夾中的 DataCleaning.dtsx,然後再按 [執行封裝]。
附註: |
---|
如果您在「SSIS 設計師」中開啟封裝並檢視封裝屬性,將會注意到 DelayValidation 屬性設為 True。封裝的驗證一定會延遲,因為直到首次執行封裝時才會建立 Data Cleaning 範例封裝使用的一些資料表 (CustomerLeads 和名為 ExistingCustomerLeads、NewCustomerLeads 及 DuplicateCustomerLeads 的三個輸出資料表)。如果將 DelayValidation 設為 False,則當您在執行封裝之前於 SSIS 設計師中開啟封裝時會發生驗證錯誤。 |
範例中的元件
下表列出該範例中所使用的工作、容器、資料來源與目的地,以及轉換。
元素 | 用途 |
---|---|
執行 SQL 工作 |
「執行 SQL」工作名為 Create Customer Address Reference Table View, Populate NewCustomer Input Table and Create Output Tables。此工作會建立輸入資料表 CustomerLeads,並建立三個名為 ExistingCustomerLeads、NewCustomerLeads 和 DuplicateCustomerLeads 的輸出資料表。 |
資料流程工作 |
「資料流程」工作 (Fuzzy Lookup Data Flow Task) 會執行封裝中的資料流程。 |
OLE DB 來源 |
OLE DB 來源 (OLE DB Source - Customer Leads) 會讀取 CustomerLeads 資料表的記錄。 |
查閱轉換 |
「查閱」轉換 (Lookup against Existing Customers) 會執行完全查閱來識別現有客戶。如果查閱成功,則會將記錄插入至 ExistingCustomerLeads 資料表中。 |
「衍生的資料行」轉換 |
「衍生的資料行」轉換 (Derived Column) 會將 _Similarity 資料行加入至每個資料列中,並將資料行值設為 1。 |
模糊查閱轉換 |
「模糊查閱」轉換 (Fuzzy Lookup against Existing Customers) 會執行模糊查閱來識別與現有客戶記錄模糊相符的客戶記錄。 該轉換會將包含相似度分數的 _Similarity 資料行加入至每個資料列中。分數 0.0 表示找不到相符項目,而 1.0 則表示找到一個完全相符項目。介於 0.0 與 1.0 之間的分數是相似度的量值,其中接近 1.0 的值表示較大的相似度。 |
條件式分割轉換 |
第一個「條件式分割」轉換 (ConditionalSplit on _Similarity) 會將輸入資料列導向至兩個輸出中的其中一個,這要視模糊查閱所決定之相似度分數的值而定。相似度分數 >= .70 的資料列會寫入至 ExistingCustomerLeads 資料表中。相似度分數 < 70 的資料列可能是潛在的有效新客戶,並且會在這些資料列上進行額外的清除。 第二個「條件式分割」轉換 (Conditional Split on Canonical Record for Group) 會將輸入資料列導向至兩個輸出中的其中一個,這要視資料列是否為重複項而定。如果 _key_in 和 _key_out 資料行的值相等,則會將資料列用為群組中的標準資料列,且標準資料列會插入至 NewCustomerLeads 資料表中。如果 _key_in 和 _key_out 資料行的值不相等,則會將資料列視為模糊重複項目,且該資料列會插入至 DuplicateCustomerLeads 資料表中。 |
聯集全部轉換 |
「聯集全部」轉換 (Union All) 會將現有客戶 (完全相符和模糊相符) 的資料列合併為一個資料集。 |
模糊群組轉換 |
「模糊群組」轉換 (Fuzzy Grouping) 會群組可能為重複項的客戶。該轉換會將三個資料行 _key_in、_key_out 及 _score 加入至每個資料列中。_key_in 是指派給每個輸入資料列的唯一識別碼,而最能代表模糊群組內所有資料列的資列料,其被指派的特定 _key_in 則是包含在 _key_out。模糊群組中的所有資料列都將具有相同的 _key_out 值。_score 資料行是介於 0.0 與 1.0 之間的值,其可描述給定之輸入資料列與選取作為標準值之資料列間的文字相似度。 |
OLE DB 目的地 |
OLE DB 轉換 (OLE DB Destination - Existing Customers) 會將資料列插入至 ExistingCustomerLeads 資料表中。 OLE DB 目的地 (OLE DB Destination - Unique Customer Leads) 會將資料列插入至 NewCustomerLeads 資料表中。 OLE DB 目的地 (OLE DB Destination - Duplicate Customer Leads) 會將資料列插入至 DuplicateCustomerLeads 資料表。 |
檔案連接管理員 |
「檔案」連接管理員 (CreateTables.sql) 會連接到包含封裝所使用之 SQL 的檔案。 |
OLE DB 連接管理員 |
OLE DB 連接管理員 (local).AdventureWorks 會連接到本機伺服器上的 AdventureWorks 資料庫。 |
下表描述輸出資料表中的資料。
資料表 | 描述 |
---|---|
ExistingCustomerLeads |
包含與現有客戶完全相符的記錄,以及與現有客戶模糊相符但具有較高文字相似度的記錄。 |
NewCustomerLeads |
包含不具有與現有客戶完全相符項目的記錄。如果清單包含同一名稱的多個執行個體,或特定名稱的較高相似版本,則僅一個記錄會導向至 NewCustomerLeads,而重複項目將導向至 DuplicateCustomerLeads。 |
DuplicateCustomerLeads |
包含新客戶的重複項目。 |
範例結果
若要查看 Data Cleaning 範例封裝的執行結果,請執行下列 Transact-SQL 查詢:
Select * from AdventureWorks.FuzzyLookupExample.ExistingCustomerLeads
Select * from AdventureWorks.FuzzyLookupExample.NewCustomerLeads
Select * from AdventureWorks.FuzzyLookupExample.DuplicateCustomerLeads
變更歷程記錄
版本 | 歷程記錄 |
---|---|
2005 年 12 月 5 日 |
|