連載
» 2006年03月28日 00時00分 公開

Integration Servicesの実践的な使い方SQL Server 2005を使いこなそう(3)(3/3 ページ)

[石橋潤一,株式会社システムインテグレータ]
前のページへ 1|2|3       

エラー出力による行のリダイレクト

 最後に「読み込みに失敗したデータを出力する」を実現したいと思います。Integration Servicesでは各種データベースやExcelファイル、CSVファイルなど、さまざまなデータソースを利用します。このような異なる環境間でデータをやりとりする場合、予期しないデータによるエラーが多く発生します。数値型で設定したフィールドに文字列が含まれていた場合や、列長が異なる場合などです。このような問題が発生した場合に、膨大なデータの中から問題個所を発見するのは非常に手間のかかる作業です。そこでIntegration Servicesでは、多くのデータフローコンポーネントで「エラー出力」がサポートされています。エラー出力を利用すれば、行レベルのエラー処理が可能となります。

 BI Development Studioでは、タスク同士を接続する際、成功パス(緑の線)とエラーパス(赤の線)を利用します。通常は成功パスを使用してフローを設計しますが、エラーパスを利用すれば、エラー出力などを利用してエラー発生時の対応を記述できます。

 今回は、データ取り込み時にエラーが起こった場合に対応したいので、データフローの「商品マスタ」フラットファイルソースタスクに対してエラー出力の設定を行います。「フラット ファイル ソース エディタ」ダイアログより「エラー出力」を選択し、各行のエラーを「行のリダイレクト」とします。

図5 「商品マスタ」のフラット ファイル ソース エディタ 図5 「商品マスタ」のフラット ファイル ソース エディタ(クリックすると拡大します)

 次に、エラーデータの保存先を指定します。ツールボックスより「フラットファイル変換先」を画面上に配置し、「商品マスタ」から出るエラーパスを接続します。タスク名を「エラーデータ保存」としました。続いて「エラーデータ保存」より「フラット

ファイル変換先エディタ」にて保存先ファイルの設定を行います。「接続マネージャ」でエラーファイル用に新規ファイルを作成してください。

図6 データフローでエラーパスの接続 図6 データフローでエラーパスの接続(クリックすると拡大します)

 以上で、指定した保存先にエラーのあったデータ行が出力されます。図7のように数値が入るべきフィールドに文字列が入っていた場合、図8のようにエラーデータに加え、ErrorCode列とErrorColumn列が出力されます。

図7 エラーのある入力データ 図7 エラーのある入力データ
図8 エラーデータの出力 図8 エラーデータの出力

 以上で、「読み込みに失敗したデータを出力する」という目的の機能を実現することができました。

 これで、エラーの検知、動作状況の確認、エラーデータの特定まで一連の問題解決に向けた機能を実装することができました。実運用において、これらの機能が備わっているといないでは、大きな差が生まれるのではないでしょうか。


 ETLサービスというと、各種データソースとの連携やGUIによる使い勝手など派手な部分に目がいってしまいますが、今回のような裏方ともいえる部分も非常に重要です。自動で実行され、さまざまなデータを取り扱う性格上、実行状況の監視やエラーの出力、ログの保存は欠かすことのできない要素でしょう。Integration Servicesを利用した開発を行う際は、意識してこれらの機能を利用するよう心掛けてください。(次回に続く)

著者紹介

石橋潤一

株式会社システムインテグレータ勤務。Web+DBの業務アプリをメインに開発に携わる。@IT連載記事「SQL Server 2005 CTPレビュー」執筆のほか、著書に『DBマガジン別冊 SQL Server 2005徹底活用ガイド』(翔泳社刊/共著)、『ASP.NET+SQL Server ゼロからはじめるWebアプリケーション』(ソフトバンクパブリッシング刊/共著)。


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。