4.3 DQS(Data Quality Services)によるデータ クレンジング処理
◆ DQS(Data Quality Services)によるデータ クレンジング処理
それでは、DQS を利用したデータ クレンジングを試してみましょう。
1.まずは、次のようにデータベース(DQStest)とテーブル(取引先マスター)を作成して、クレンジング対象のデータを INSERT しておきます。
go
USE DQStest
CREATE TABLE 取引先マスター
( 取引先コード nvarchar(10) PRIMARY KEY
,取引先名 nvarchar(60) )
go
INSERT INTO 取引先マスター VALUES('TR001', '日本マイクロソフト株式会社')
INSERT INTO 取引先マスター VALUES('TR002', 'マイクロソフト日本株式会社')
INSERT INTO 取引先マスター VALUES('TR003', '日本マイクロソフト(株)')
INSERT INTO 取引先マスター VALUES('TR004', 'dummy1')
INSERT INTO 取引先マスター VALUES('TR005', 'dummy2')
INSERT INTO 取引先マスター VALUES('TR006', 'dummy3')
INSERT INTO 取引先マスター VALUES('TR0333', 'dummy4')
INSERT INTO 取引先マスター VALUES('XX011', 'dummy5')
go
SELECT * FROM 取引先マスター
2.次に、「SQL Server 構成マネージャー」ツールを利用して、[SQL Server ネットワークの構成]の["インスタンス名" のプロトコル](既定のインスタンスの場合は MSSQLSERVER)に表示される「TCP/IP」プロトコルが有効化されていることを確認します(Developer エディションを利用している場合は、既定で無効化されているので、有効化します)。
3.次に、データ クレンジングのルール作成を行うために、「Data Quality Client」ツールを起動します。このツールは、[スタート]メニューの[すべてのプログラム]→[Microsoft SQL Server 2012]→[Data Quality Services]から起動することができます。
4.「Data Quality Client」ツールが起動したら、DQS サーバーの名前(画面は SERVER1)を入力して、[接続]ボタンをクリックします。
DQS サーバーへの接続が完了すると、以下のようにホームページが表示されます。
◆ ナレッジ ベースの作成
DQS では、ナレッジ ベースという単位で、クレンジングのための各種ルールを作成します。
1.ナレッジ ベースを作成するには、次のように[新しいナレッジ ベース]をクリックします。
2.[新しいナレッジ ベース]ページが表示されたら、[名前]へ「KB取引先」など任意の名前を入力して、[アクティビティの選択]で「ナレッジ検出」を選択し、[作成]ボタンをクリックします。
ナレッジ検出を選択することで、既存のデータをもとにクレンジングのためのルールを作成していくことができます。
3.次の[マップ]ページでは、[データソース]に「SQL Server」、[データベース]と[テーブルまたはビュー]には、前の手順で作成したデータベース(DQStest)とテーブル(取引先マスター)を選択します。
なお、データソースには「Excel」を選択することもできるので、Excel シート内のデータをもとにルールを作成していくことも可能です。
4.次に、[マッピング]セクションで、[基になる列]で「取引先コード」列を選択し、[ドメインの作成]ボタンをクリックします。
DQS では、ドメインという単位でルールを作成します。[ドメインの作成]ダイアログが表示されたら、[ドメイン名]へ任意の名前(列名と同じ名前など)、[データ型]を適宜設定(文字列なら「String」を選択など)、[言語]ではスペル チェックを行いたい言語を選択(日本語は存在しないので、日本語データのみの場合は「その他」を選択)して[OK]ボタンをクリックします。
スペル チェックに使用する言語には、日本語を選択することができませんが(日本語のスペルチェックはできない)、次のように[言語]で[英語]を選択して、英語のデータがあった場合には、スペル ミスを検出することができるので、入力ミスやイレギュラーなデータを検出するのに大変役立ちます。
「取引先名」列についても、取引先コードと同じようにドメインを作成します。
5.ドメインの作成が完了したら[次へ]ボタンをクリックして、次のページへ進みます。
6.次の[検出]ページでは、[開始]ボタンをクリックします。
これにより、SQL Server 上の「取引先マスター」テーブルへアクセスして、データを取得し、取得が完了すると、次のように表示されます。
データ件数や一意なデータ件数などが表示されます。確認後、[次へ]ボタンをクリックします。
7.次の[ドメインの値の管理]ページでは、[ドメイン]セクションで「取引先コード」が選択されていて、右ペインに「取引先マスター」テーブルの「取引先コード」列の値が表示されていることを確認します。
8.次に、[ドメイン]セクションで[取引先名]をクリックして、右ペインに「取引先名」列の値が表示されることを確認します。
9.次に、間違っているデータである「マイクロソフト日本株式会社」と「日本マイクロソフト(株)」、正しいデータである「日本マイクロソフト株式会社」の 3つを Ctrl キーを押しながら選択し、右クリックして、[シノニムとして設定]をクリックします。
これにより、この 3つのデータをシノニム(同一データ)と見なすことができるようになります。
ただし、このままでは、先頭に設定されたデータが間違っている値(マイクロソフト日本株式会社)なので、これを正しいデータへ修正する必要があります。
10.シノニムの先頭の値を変更するには、次のように正しいデータ(日本マイクロソフト株式会社)を右クリックして、[先頭として設定]をクリックします。
これで、間違ったデータを正しいデータへ変更できるようになります。
11.シノニムの設定が完了したら、次のように[完了]ボタンをクリックします。
12.これにより、作成したナレッジ ベースを DQS サーバーへパブリッシュするのかどうかを尋ねられるので、[パブリッシュ]ボタンをクリックします。
パブリッシュが完了すると、次のようにダイアログが表示されるので、[OK]ボタンをクリックします。
以上でナレッジ ベースの作成が完了です。
◆ ドメイン ルールの追加
次に、作成したナレッジ ベースへドメイン ルールを追加してみましょう。ドメイン ルールを利用すると、文字列の長さが正しいかどうかをチェックしたり(たとえば取引先コードが 5桁かどうかをチェックしたり)、正規表現を利用したデータのチェックを行ったりすることができます。
1.ドメイン ルールを追加するには、次のように[最近利用したナレッジ ベース]から作成したナレッジ ベース(画面は KB取引先)をクリックして、[ドメイン管理]をクリックします。
2.[ドメイン管理]ページが表示されたら、次のように[ドメイン]セクションで「取引先コード」が選択されていて、右ペインには[ドメイン プロパティ]タブが表示されていることを確認します。
このタブでは、ドメインに設定したデータ型(画面は String)などを確認できます。
3.次に、[ドメイン]セクションから「取引先名」をクリックして、右ペインで[ドメインの値]タブを開きます。
このタブでは、シノニムの設定などを確認/変更することができます。
4.次に、[ドメイン]セクションで「取引先コード」をクリックして、右ペインで[ドメイン ルール]タブを開きます。
このタブでは、ドメイン ルールを設定することができます。
◆ 文字列の長さをチェックするドメイン ルールの作成
ここでは、取引先コードの "長さ" が 5文字であるかどうかをチェックするためのドメイン ルールを作成してみましょう。
1.ドメイン ルールを作成するには、次のように[新しいドメイン ルールを追加]ボタンをクリックします。
[名前]には、「長さが5文字」など任意のドメイン ルール名を入力して、[ルールの作成]セクションでは、[長さが次の値と等しい]を選択して、「5」と入力します。これで、取引先コードの "長さ" が 5文字であるかどうかをチェックすることができます。設定後、[すべてのルールを適用]ボタンをクリックします。
2.これにより、次のように「この操作はドメイン "取引先コード" の値に影響します」と表示されて、「無効な値」が 1個増加した主旨のメッセージが表示されることを確認できます。
取引先コード列には、「TR0333」という長さが 6文字のデータがあるため、ルールに違反したデータ(無効な値)が 1件あるという主旨のメッセージです。[はい]ボタンをクリックして、ダイアログを閉じます。
3.続いて、次のように[ドメイン ルールが正常に適用されました]と表示されれば、ドメイン ルールの作成が完了です。[OK]ボタンをクリックして、ダイアログを閉じます。
◆ ドメイン ルールのテスト/影響分析
作成したドメイン ルールは、実際にルールが正しく設定されているかどうかをテストすることができます。これも試してみましょう。
1.まずは、次のように[ドメインの値に対するドメイン ルールの影響を分析します]ボタンをクリックします。
これにより、先ほどと同様のダイアログが表示されて、「無効な値」が 1個増加した主旨のメッセージが表示されることを確認できます。このボタンでは、既存のデータをもとに、ルールを満たしたデータとそうでないデータが何件あるかをチェックすることができます。
2.次に、[テスト データについて選択したドメイン ルールを実行します]ボタンをクリックします。
3.次のように[ドメイン ルールのテスト]ダイアログが表示されたら、[テスト データの追加]ボタンをクリックして、[取引先コード]へ「TR123」と「TR1234」を追加します。
4.テスト データを追加したら、次のように[テストの実行]ボタンをクリックします。
「TR123」は 5文字のデータなので、有効(緑のチェックマーク)、「TR1234」は 6文字のデータなので、無効(警告マーク)が表示されて、ドメイン ルールが正しく動作していることを確認することができます。確認後、[閉じる]ボタンをクリックしてダイアログを閉じます。
◆ 正規表現を利用したドメイン ルールの追加
ドメイン ルールでは、正規表現を利用することもできます。これも試してみましょう。
1.まずは、[新しいドメイン ルールを追加]ボタンをクリックして、新しいドメイン ルールを追加します。
[名前]には、「先頭がTRで始まる」など任意のドメイン ルール名を入力して、[ルールの作成]セクションでは、[値が正規表現と一致します]を選択して、「TR[0-9]*」と入力します。これで、取引先コードが "TR" で始まって、その後に任意の数値(0~9)が複数回の文字であるかどうかをチェックすることができます。設定後、[すべてのルールを適用]ボタンをクリックします。
2.「この操作はドメイン "取引先コード" の値に影響します」ダイアログが表示されると、「無効な値」が 1個増加した主旨のメッセージが表示されることを確認できます。
取引先コード列には、「XX011」という TR で始まらないデータがあるので、ルールに違反したデータ(無効な値)が 1件あるという主旨のメッセージです。[はい]ボタンをクリックして、ダイアログを閉じます。
3.次のように[ドメイン ルールが正常に適用されました]と表示されれば、ドメイン ルールの作成が完了です。[OK]ボタンをクリックして、ダイアログを閉じます。
4.続いて、作成したドメイン ルールをテストするために、[テスト データについて選択したドメイン ルールを実行します]ボタンをクリックします。
[ドメイン ルールのテスト]ダイアログが表示されたら、次のように[テスト データの追加]ボタンをクリックして、[取引先コード]へ「TR111」と「AA123」を追加します。
テスト データの追加後、[テストの実行]ボタンをクリックすると、「TR111」は TR で始まるので、有効(緑のチェックマーク)、「AA123」は TR で始まらないので、無効(警告マーク)が表示されて、ドメイン ルールが正しく動作していることを確認できます。
確認後、[閉じる]ボタンをクリックしてダイアログを閉じます。
5.[ドメイン管理]ページへ戻ったら、右下の[完了]ボタンをクリックします。
作成したナレッジ ベースを DQS サーバーへパブリッシュするのかどうかを尋ねられたら、[パブリッシュ]ボタンをクリックします。
以上でドメイン ルールの追加が完了です。