4.5 Integration Services の「DQS クレンジング」タスク
◆ Integration Services の「DQS クレンジング」タスク
次に、Integration Services の「DQS クレンジング」タスクを利用して、ナレッジ ベースを基にしたクレンジング処理を行ってみましょう。ここでは、次のような Integration Services パッケージ(SSIS パッケージ)を作成します。
「DQS クレンジング」タスクは、データ フローの変換コンポーネントとして提供されていて、次のようにナレッジ ベースを指定して、それをもとにデータを出力させることが可能です。
◆ Let's Try
それでは、これを試してみましょう。
1.まずは、[スタート]メニューから SQL Server Data Tools(以前のバージョンの Business Intelligence Development Studio)を起動します。
2.SQL Server Data Tools が起動したら、[スタート ページ]の「新しいプロジェクト」をクリックして、新しいプロジェクトを作成します。
[新しいプロジェクト]ダイアログでは、[インストールされたテンプレート]から「ビジネス インテリジェンス」の「Integration Services」を選択して、「Integration Services プロジェクト」を選択します。[名前]へ任意のプロジェクト名(画面は Integration Services プロジェクト1)、[場所]へ任意の保存場所を指定して、[OK]ボタンをクリックします。
3.パッケージ デザイナーが表示されたら、次のように[SSIS ツールボックス]の[お気に入り]セクションから「データ フロー タスク」を[制御フロー]タブへドラッグ&ドロップして配置します。
配置後、[データ フロー タスク]をダブル クリックして、[データ フロー]タブを開きます。
4.[データ フロー]タブが開いたら、[SSIS ツールボックス]の[お気に入り]セクションから[変換元アシスタント]をドラッグ&ドロップして配置します。
[変換元アシスタント]ダイアログが表示されたら、[変換元の型を選択します]で「SQL Server」、[接続マネージャーの選択]で「新規」を選択して、[OK]ボタンをクリックします。
5.[接続マネージャー]ダイアログが表示されたら、[サーバー名]に SQL Server の名前(画面は SERVER1)、[データベース名]に「DQStest」を選択して、[OK]ボタンをクリックします。
6.これで、次のように[OLE DB ソース]が作成されるので、これをダブル クリックします。
[OLE DB ソース エディター]ダイアログが表示されたら、[テーブル名またはビュー名]で「取引先マスター」テーブルを選択して、[OK]ボタンをクリックします。
7.次に、[SSIS ツールボックス]の[その他の変換]セクションから[DQS クレンジング]タスクを[OLE DB ソース]タスクの下へドラッグ&ドロップして配置します。
8.続いて、次のように[OLE DB ソース]を選択して、表示される「青の矢印」(成功の場合の処理の流れ)を、[DQS クレンジング]タスクへドラッグ&ドロップして接続します。
9.次に、[DQS クレンジング]タスクをダブル クリックして、[DQS クレンジング変換エディター]ダイアログを表示します。
このダイアログでは、[接続マネージャー]タブで、[新規]ボタンをクリックします。[DQS クレンジング接続マネージャー]ダイアログが表示されたら、[サーバー名]に DQS サーバーの名前(画面は SERVER1)を入力して、[OK]ボタンをクリックします。
10.次に、[データ品質ナレッジ ベース]で、前の Step で作成したナレッジ ベース(KB取引先)を選択します。
[使用できるドメイン]には、ナレッジ ベース内で作成した「取引先コード」と「取引先名」が表示されていることを確認できます。
11.次に、[マッピング]タブを開いて、[使用できる入力列]で「取引先コード」と「取引先名」の両方をチェックします。
[入力列]の「取引先コード」と「取引先名」に、それぞれ[ドメイン]で「取引先コード」と「取引先名」がマッピングされるようにして、[OK]ボタンをクリックします。
これで、[OLE DB ソース]タスクで取得した「取引先マスター」テーブルの「取引先コード」と「取引先名」を、ナレッジ ベースの「取引先コード」と「取引先名」ドメインへマッピングすることができます。
12.次に、[変換先アシスタント]をドラッグ&ドロップして配置します。
[変換先アシスタント]ダイアログが表示されたら、[変換先の型を選択します]で「SQL Server」、[接続マネージャーの選択]で、[OLE DB ソース]タスクのときに作成した接続マネージャー(画面は SERVER1.DQStest)を選択して、[OK]ボタンをクリックします。
13.これで、次のように[OLE DB 変換先]タスクが作成されるので、[DQS クレンジング]タスクの「青」(成功)の矢印を[OLE DB 変換先]タスクへ接続します。
14.次に、[OLE DB 変換先]タスクをダブル クリックして、[OLE DB 変換先エディター]ダイアログを開きます。
このダイアログでは、[テーブル名またはビュー名]で[新規作成]ボタンをクリックして、新しいテーブルを作成します。
[テーブルの作成]ダイアログが表示されたら、CREATE TABLE の隣のテーブル名を「[結果1]」へ変更して、[OK]ボタンをクリックします。
15.[OLE DB 変換先エディター]ダイアログへ戻ったら、[マッピング]ページを開きます。
[使用できる入力列]と[使用できる変換先列]が 1対1にマッピングされていることを確認して、[OK]ボタンをクリックします。
16.次に、[DQS クレンジング]と[OLE DB 変換先]タスクの間の「青」の矢印を右クリックして、[データ ビューアーの有効化]をクリックします。
これで、デバッグ実行時に、[DQS クレンジング]と[OLE DB 変換先]タスクの間を流れているときのデータをグラフィカルに表示できるようになります。
17.次に、ツールバーの[デバッグ開始]ボタンをクリックして、デバッグを開始します。
18.デバッグが開始されると、次のように[OLE DB ソース]が緑のチェックマークが付いた後に、[DQS クレンジング]と[OLE DB 変換先]タスクが処理中の黄色のアイコンに変わって、データ ビューアーにデータが表示されます。
データ ビューアーでは、[DQS クレンジング]タスクによって、ドメイン ルールに違反した 2つのデータ(TR0333、XX011)は、[取引先コード_状態]および[レコードの状態]が「無効」と設定され、シノニムを設定した間違ったデータ(マイクロソフト日本株式会社、日本マイクロソフト(株))には、[取引先名_状態]および[レコードの状態]が「修正済み」、[取引先名_出力]に正しいデータ(日本マイクロソフト株式会社)が設定されていることを確認できます。
確認後、データ ビューアーの[実行]ボタンをクリックして、処理を続行します。
19.これにより、次のように[DQS クレンジング]と[OLE DB 変換先]タスクも緑のチェックマークに変わって、デバッグが正常に完了したことを確認することができます。
20.確認後、データ ビューアーの右上の[終了]ボタンをクリックして、データ ビューアーを閉じます。
21.次に、ツールバーの[デバッグの停止]ボタンをクリックして、デバッグを停止します。
22.次に、Management Studio を起動して、クエリ エディターでクレンジング処理された結果(結果1 テーブルの中身)を参照します。
SELECT * FROM 結果1
データ ビューアーで確認したように、ドメイン ルールに違反した 2つのデータ(TR0333、XX011)は、[取引先コード_状態]と[レコードの状態]が「無効」と設定され、シノニムを設定した間違ったデータ(マイクロソフト日本株式会社、日本マイクロソフト(株))には、[取引先名_状態]と[レコードの状態]が「修正済み」、[取引先名_出力]に正しいデータ(日本マイクロソフト株式会社)が設定されていることを確認できます。
◆ 条件分岐の追加(無効なデータを別テーブルへ出力)
次に、条件分岐を追加して、無効なデータは別テーブルへ出力するように変更してみましょう。
1.まずは、次のように[DQS クレンジング]と[OLE DB 変換先]タスクの間の「青」の矢印を右クリックして、[削除]をクリックします。
2.次に、[SSIS ツールボックス]から[条件分割]タスクをドラッグ&ドロップして配置します。
3.次に、[DQS クレンジング]タスクの「青」の矢印を[条件分割]タスクへ接続します。
4.次に、[条件分割]タスクをダブル クリックして、[条件分割変換エディター]ダイアログを表示します。
[列]フォルダーを展開して、[レコードの状態]を[条件]へドラッグ&ドロップします。
5.次に、[条件]へ「== "無効"」を追加して、[出力名]を「無効の場合」へ変更します。
[既定の出力名]は「有効の場合」へ変更して、[OK]ボタンをクリックします。
これで、レコードの状態が無効の場合とそうでない場合で条件分岐できるようになります。
6.次に、[条件分割]タスクの「青」の矢印を[OLE DB 変換先]タスクへ接続します。
[入出力の選択]ダイアログが表示されたら、[出力]で「無効な場合」を選択して、[OK]ボタンをクリックします。
これで、「[レコードの状態]== "無効"」の場合のデータを[OLE DB 変換先]タスクへ流すことができるようになります。
7.次に、[OLE DB 変換先]タスクをダブル クリックして、[OLE DB 変換先エディター]を開きます。
このダイアログでは、[テーブル名またはビュー名]で[新規作成]ボタンをクリックして、新しいテーブルを作成します。[テーブルの作成]ダイアログが表示されたら、CREATE TABLE の隣のテーブル名を「[無効の場合]」へ変更して、[OK]ボタンをクリックします。
8.[OLE DB 変換先エディター]ダイアログへ戻ったら、[マッピング]ページを開きます。
[使用できる入力列]と[使用できる変換先列]が 1対1にマッピングされていることを確認して、[OK]ボタンをクリックします。
9.次に、[変換先アシスタント]をドラッグ&ドロップして配置します。
[変換先アシスタント]ダイアログが表示されたら、[変換先の型を選択します]で「SQL Server」、[接続マネージャーの選択]で、[OLE DB ソース]タスクのときに作成した接続マネージャー(画面は SERVER1.DQStest)を選択して、[OK]ボタンをクリックします。
10.これで、次のように[OLE DB 変換先 1]タスクが作成されるので、[条件分割]タスクの「青」の矢印を[OLE DB 変換先 1]タスクへ接続します。
今度は、[既定の出力名]で設定した「有効の場合」の流れができるようになります。
これで、「[レコードの状態]== "無効"」という条件を満たさなかった場合のデータ(つまり、有効な場合のデータ)を[OLE DB 変換先 1]タスクへ流すことができるようになります。
11.次に、[OLE DB 変換先 1]タスクをダブル クリックして、[OLE DB 変換先エディター]ダイアログを開きます。
このダイアログでは、[テーブル名またはビュー名]で[新規作成]ボタンをクリックして、新しいテーブルを作成し、[テーブルの作成]ダイアログでは、CREATE TABLE の隣のテーブル名を「[有効の場合]」へ変更して、列定義を「取引先コード」と「取引先名」のみに変更します。
変更後、[OK]ボタンをクリックします。
12.次に、[OLE DB 変換先エディター]ダイアログへ戻ったら、[マッピング]ページを開きます。
「取引先コード_出力」を「取引先コード」、「取引先名_出力」を「取引先名」にマッピングするように設定して、[OK]ボタンをクリックします。
これで、シノニムで設定した値へ変換したもののみを転送できるできるようになります。
13.次に、[条件分割]タスクから伸ばした「青」の矢印を右クリックして、[データ ビューアーの有効化]をクリックします。
14.両方の「青」の矢印(無効の場合と有効の場合)に対して[データ ビューアーの有効化]を設定して、デバッグ中のデータを参照できるようにします。
15.次に、ツールバーの[デバッグ開始]ボタンをクリックして、デバッグを開始します。
16.デバッグが開始されると、次のように[OLE DB ソース]と[DQS クレンジング]タスクが緑のチェックマークが付いた後に、[条件分割]と[OLE DB 変換先]タスクが処理中の黄色のアイコンに変わって、データ ビューアーにデータが表示されます。
「無効の場合」のデータ ビューアーでは、ドメイン ルールに違反した 2つのデータ(TR0333、XX011)が表示されて、[レコードの状態]が「無効」と設定されていることを確認できます。「有効の場合」のデータ ビューアーには、6件の有効なデータ(無効なデータ 2件が入っていないもの)が表示されていることを確認できます。
確認後、それぞれのデータ ビューアーの[実行]ボタンをクリックして、処理を続行します。
17.処理が完了すると、「無効の場合」のデータは「2行」、「有効の場合」のデータは「6行」と表示されて、緑のチェックマークが付いて、デバッグが正常に完了したことを確認できます。
18.最後に、Management Studio を起動して、クエリ エディターで処理された結果(テーブルの中身)を参照します。
SELECT * FROM 無効の場合
「無効の場合」テーブルには、ドメイン ルールに違反した 2つのデータ(TR0333、XX011)が格納されていることを確認できます。
19.「有効の場合」テーブルについても、内容を参照します。
SELECT * FROM 有効の場合
シノニムを設定した間違ったデータ(マイクロソフト日本株式会社、日本マイクロソフト(株))が、正しいデータ(日本マイクロソフト株式会社)に修正されて、格納されていることを確認できます。
このように、Integration Services の[DQS クレンジング]タスクを利用すれば、ナレッジ ベースへ設定したシノニムやドメイン ルールを基に、簡単にクレンジング処理を行うことができます。
◆ DQS のまとめ
ここまで紹介してきたものは、DQS(Data Quality Services)機能のほんの一部です。まだまださまざまなルールを作成したデータのクレンジングが可能ですし、似たようなレコードを検出するマッチング(照合)ルールの作成機能、Azure Marketplace のデータを利用したマッチング検出機能などもあるので、オンライン ブック(SQL Server のヘルプ)などを参考にぜひチャレンジしてみてください。DQS は、データの品質を向上させるために大変役立つ機能です。