次の方法で共有


Data Cleaning パッケージ サンプル

更新 : 2005 年 12 月 5 日

Data Cleaning サンプルは、データをクリーニングするパッケージです。このパッケージでは、潜在的な顧客を表す名前と住所のリストのデータを使用します。データはクリーンにする必要があります。データにはスペル ミスが含まれていたり、情報が不足している場合があるからです。また、既にデータベースに含まれている顧客や不適切な顧客、わずかに異なるインスタンスを複数持つ同一の顧客も含まれています。

パッケージ コントロール フローは 2 つのタスクから構成されています。1 つは入力テーブル CustomerLeads を作成し、ExistingCustomerLeadsNewCustomerLeads、および DuplicateCustomerLeads という名前が付いた 3 つの出力テーブルを作成する SQL 実行タスクです。もう 1 つは、CustomerLeads テーブルから抽出されたデータをクリーニングするデータ フローが実行されるデータ フロー タスクです。このデータ フローでは、一意な新規の顧客、既存の顧客、および重複する顧客が識別され、各顧客の種類の行が適切な出力テーブルに書き込まれます。

このサンプルを英語版以外の Windows で開いたり、実行したりするとき、場合によっては、Program Files フォルダの名前をローカライズされた名前に置き換える必要があります。

ms160742.note(ja-jp,SQL.90).gifメモ :
このサンプルでは、SQL Server 2005 の Enterprise Version でのみ使用可能な、あいまいグループ化変換およびあいまい参照変換が使用されます。
ms160742.note(ja-jp,SQL.90).gif重要 :
サンプルは、学習に使用することのみを目的に提供されています。これらは、運用環境での使用を目的としたものではなく、運用環境でのテストも実施されていません。Microsoft からは、これらのサンプルについてのテクニカル サポートは提供されません。

データのクリーニングの詳細については、MSDN ライブラリ (https://msdn.microsoft.com/library) で次の記事を参照してください。

  • Data Cleansing Applications with SQL Server Integration Services (Windows Media Video)
  • Data Cleaning using the Fuzzy Grouping and Fuzzy Lookup Transformations (white paper)

必要条件

このサンプル パッケージを実行するための前提条件は次のとおりです。

  • AdventureWorks データベースがインストールされていて、そのデータベースに対する管理権限を持っている。
  • コマンド ラインからサンプル パッケージを実行する場合、SQL Server 2005 Integration Services (SSIS) がインストールされている。
  • SSIS デザイナでパッケージを開いてサンプル パッケージを実行する場合、Business Intelligence Development Studio がインストールされている。

サンプルのインストール方法の詳細については、SQL Server Books Online の「Integration Services サンプル パッケージのインストール」を参照してください。SQL Server 2005 のオリジナル リリース後にリリースされた新しいサンプルを含む、サンプルの最新バージョンを入手するには、「SQL Server 2005 Samples and Sample Databases (April 2006)」を参照してください。

サンプル パッケージの場所

サンプルが既定の場所にインストールされた場合、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 パッケージが機能する方法についての理解を深めることができます。データ ビューアを次のパスに追加することをお勧めします。

  • [Union All] から [OLE DB Destination-Existing Customers] までのパス
  • [Conditional Split on Canonical Record for Group] から [OLE DB Destination-Unique Customer Leads] までのパス
  • [Conditional Split on Canonical Record for Group] から [OLE DB Destination-Duplicate Customer Leads] までのパス

データ ビューアを追加するには

  1. パスを右クリックし、[データ ビューア] をクリックします。

  2. データ フロー パス エディタで [追加] をクリックします。

  3. [データ ビューアの構成] ダイアログ ボックスで、種類の一覧の [グリッド] をクリックします。既定では、すべての列がデータ ビューアに表示されます。

  4. その他のパスについても、手順 1. ~ 3. を繰り返します。

サンプルの実行

パッケージは、dtexec ユーティリティを使用してコマンド ラインから実行することができます。または、Business Intelligence Development Studio で実行することもできます。

英語版以外の Windows を使用している場合、パッケージで使用されているファイル接続マネージャの ConnectionString プロパティを更新しないと、サンプル パッケージを正常に実行できないことがあります。接続マネージャで使用されているパスが現在のコンピュータで有効かどうかを確認し、必要に応じて、Program Files フォルダのローカライズされた名前を使用するようにパスを変更してください。

このサンプルの場合、CreateTables.sql 接続マネージャで、ConnectionString プロパティの "Program Files" を変更しなければならない可能性があります。

dtexec を使用してパッケージを実行するには

  1. [コマンド プロンプト] ウィンドウを開きます。

  2. dtexec のある C:\Program Files\Microsoft SQL Server\90\DTS\Binn にディレクトリを変更します。

  3. 次のコマンドを入力します。

    dtexec /f "C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\Data Cleaning Sample\DataCleaning\DataCleaning.dtsx"
    
  4. Enter キーを押します。

dtexec ユーティリティを使用してパッケージを実行する方法の詳細については、SQL Server 2005 Books Online のトピック「dtexec ユーティリティ」を参照してください。

Business Intelligence Development Studio でパッケージを実行するには

  1. Business Intelligence Development Studio を開きます。

  2. [ファイル] メニューの [開く] をポイントし、[プロジェクト/ソリューション] をクリックします。

  3. DataCleaning Sample フォルダを探し、ExecuteSQLStatementsInLoop.sln という名前のファイルをダブルクリックします。

  4. [ソリューション エクスプローラ] で、[SSIS パッケージ] フォルダの DataCleaning.dtsx を右クリックして、[パッケージの実行] をクリックします。

ms160742.note(ja-jp,SQL.90).gifメモ :
SSIS デザイナでパッケージを開いてパッケージのプロパティを表示すると、DelayValidation プロパティが True に設定されていることが確認できます。Data Cleaning サンプル パッケージによって使用されるテーブルには、パッケージが初めて実行されるまでは作成されないものがある (CustomerLeads、および ExistingCustomerLeadsNewCustomerLeadsDuplicateCustomerLeads という名前の付いた 3 つの出力テーブル) ため、パッケージの検証を後で行う必要があります。DelayValidationFalse に設定されている場合、パッケージを実行する前に SSIS デザイナでパッケージを開くと検証エラーが発生します。

サンプルのコンポーネント

以下の表に、サンプルで使用されるタスク、コンテナ、データ ソースと変換先、および変換を示します。

要素 目的

SQL 実行タスク

この SQL 実行タスクには、Create Customer Address Reference Table ViewPopulate NewCustomer Input Table and Create Output Tables という名前が付いています。このタスクによって、入力テーブル CustomerLeads が作成されます。また、ExistingCustomerLeadsNewCustomerLeads、および DuplicateCustomerLeads という名前の 3 つの出力テーブルも作成されます。

データ フロー タスク

データ フロー タスク 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 は、あいまい参照によって決定された類似性スコアの値によって、2 つの出力のうちの 1 つに入力行を送ります。類似性スコアが 0.70 以上の行は、ExistingCustomerLeads テーブルに書き込まれます。類似性スコアが 0.70 未満の行は、有効な新規の顧客リードである場合が多く、これらの行はさらにクリーニングされます。

2 つ目の条件分割変換 Conditional Split on Canonical Record for Group は、データ行が重複しているかどうかによって、2 つの出力のうちの 1 つに入力行を送ります。_key_in 列の値と _key_out 列の値が等しい場合、その行はグループ内の標準行として使用され、この標準行は NewCustomerLeads テーブルに挿入されます。_key_in 列と _key_out 列が等しくない場合、その行はあいまい重複として扱われ、この行は DuplicateCustomerLeads テーブルに挿入されます。

全体結合変換

全体結合変換 Union All は、既存の顧客 (完全な一致およびあいまい一致の両方) の行を 1 つのデータセットにマージします。

あいまいグループ化変換

あいまいグループ化変換 Fuzzy Grouping は、重複である可能性の高い顧客をグループ化します。この変換によって、3 つの列 _key_in_key_out、および _score が各行に追加されます。_key_in は各入力行に割り当てられた一意識別子で、_key_out は、あいまいグループ内のすべての行を最もよく表している行に割り当てられた特定の _key_in を含んでいます。あいまいグループ内のすべての行は、同じ _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

既存の顧客との適切な一致を持たないレコードを含みます。リストが複数の同じ名前のインスタンスを含んでいる場合、または特定の名前の類似性が非常に高いバージョンを含んでいる場合は、1 つのレコードのみが 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 日

変更内容 :
  • 実行結果を返す SELECT ステートメントで使用するスキーマ名を修正しました。