松本美穂と松本崇博が執筆した SQL Server 2012 自習書シリーズの「新機能編 No.3 DWH 関連の新機能」の HTML 版です。 日本マイクロソフトさんの Web サイトで Word または PDF 形式でダウンロードできますが、今回、HTML 版として公開する許可をいただきましたので、ここに掲載いたします。[2014年12月26日]
次に、Integration Services の「DQS クレンジング」タスクを利用して、ナレッジ ベースを基にしたクレンジング処理を行ってみましょう。ここでは、次のような Integration Services パッケージ(SSIS パッケージ)を作成します。
「DQS クレンジング」タスクは、データ フローの変換コンポーネントとして提供されていて、次のようにナレッジ ベースを指定して、それをもとにデータを出力させることが可能です。
それでは、これを試してみましょう。
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 テーブルの中身)を参照します。
データ ビューアーで確認したように、ドメイン ルールに違反した 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 を起動して、クエリ エディターで処理された結果(テーブルの中身)を参照します。
「無効の場合」テーブルには、ドメイン ルールに違反した 2つのデータ(TR0333、XX011)が格納されていることを確認できます。
19.「有効の場合」テーブルについても、内容を参照します。
シノニムを設定した間違ったデータ(マイクロソフト日本株式会社、日本マイクロソフト(株))が、正しいデータ(日本マイクロソフト株式会社)に修正されて、格納されていることを確認できます。
このように、Integration Services の[DQS クレンジング]タスクを利用すれば、ナレッジ ベースへ設定したシノニムやドメイン ルールを基に、簡単にクレンジング処理を行うことができます。
ここまで紹介してきたものは、DQS(Data Quality Services)機能のほんの一部です。まだまださまざまなルールを作成したデータのクレンジングが可能ですし、似たようなレコードを検出するマッチング(照合)ルールの作成機能、Azure Marketplace のデータを利用したマッチング検出機能などもあるので、オンライン ブック(SQL Server のヘルプ)などを参考にぜひチャレンジしてみてください。DQS は、データの品質を向上させるために大変役立つ機能です。
第60回:SQL Server 2017 自習書 No.3「SQL Server 2017 Machine Learning Services」のご案内
第59回:SQL Server 2017 自習書 No.2「SQL Server 2017 on Linux」のご案内
第58回:SQL Server 2017 自習書 No.1「SQL Server 2017 新機能の概要」のご案内
第57回:SQL Server 2017 RC 版とこれまでのドキュメントのまとめ
第56回:「SQL Server 2016 への移行とアップグレードの実践」完成&公開!
第55回:書籍「SQL Server 2016の教科書 開発編」(ソシム)が発刊されました
第54回:「SQL Server 2016 プレビュー版 Reporting Services の新機能」自習書のお知らせ
第 53 回:SQL Server 2016 Reporting Services の新しくなったレポート マネージャーとモバイル レポート機能
第 52 回:SQL Server 2016 の自習書を作成しました!
第 51 回:PASS Summit と MVP Summit で進化を確信!
第 50 回:新しくなった Power BI(2.0)の自習書を作成しました!
第49 回:Excel 2016 の Power Query を使う
第 48 回:新しくなった Microsoft Power BI ! 無料版がある!!
第 47 回:「Microsoft Azure SQL Database 入門」 完成&公開!
第 46 回:Microsoft Power BI for Windows app からの Power BI サイト アクセス
第 45 回:Power Query で取得したデータを PowerPivot へ読み込む方法と PowerPivot for Excel 自習書のご紹介
第44回:「SQL Server 2014 への移行とアップグレードの実践」ドキュメントを作成しました
第43回:SQL Server 2014 インメモリ OLTP 機能の上級者向けドキュメントを作成しました
第42回:Power Query プレビュー版 と Power BI for Office 365 へのクエリ保存(共有クエリ)
第41回:「SQL Server 2014 CTP2 インメモリ OLTP 機能の概要」自習書のお知らせです
第40回: SQL Server 2012 自習書(HTML版)を掲載しました
第39回: Power BI for Office 365 プレビュー版は試されましたか?
第38回: SQL Server 2014 CTP2 の公開
第37回: SQL Server 2014 CTP1 の自習書をご覧ください
第36回: SQL Server 2014 CTP1 のクラスター化列ストア インデックスを試す
第35回: SQL Server 2014 CTP1 のインメモリ OLTP の基本操作を試す
第34回: GeoFlow for Excel 2013 のプレビュー版を試す
第33回: iPad と iPhone からの SQL Server 2012 Reporting Servicesのレポート閲覧
第32回: PASS Summit 2012 参加レポート
第31回: SQL Server 2012 Reporting Services 自習書のお知らせ
第30回: SQL Server 2012(RTM 版)の新機能 自習書をご覧ください
第29回: 書籍「SQL Server 2012の教科書 開発編」のお知らせ
第26回: SQL Server 2012 の Power View 機能のご紹介
第25回: SQL Server 2012 の Data Quality Services
第24回: SQL Server 2012 自習書のご案内と初セミナー報告
第23回: Denali CTP1 が公開されました
第22回 チューニングに王道あらず
第21回 Microsoft TechEd 2010 終了しました
第20回 Microsoft TechEd Japan 2010 今年も登壇します
第19回 SQL Server 2008 R2 RTM の 日本語版が公開されました
第18回 「SQL Azure 入門」自習書のご案内
第17回 SQL Server 2008 自習書の追加ドキュメントのお知らせ
第16回 SQL Server 2008 R2 自習書とプレビュー セミナーのお知らせ
第15回 SQL Server 2008 R2 Reporting Services と新刊のお知らせ
第14回 TechEd 2009 のご報告と SQL Server 2008 R2 について
第13回 SQL Server 2008 R2 の CTP 版が公開されました
第12回 MVP Summit 2009 in Seattle へ参加