ジョブ実行のアサーション条件の設定
このシナリオでは、ジョブ実行が成功したかどうかを評価するために、tAssertでアサーション条件を設定する方法について説明します。また、2つの異なる評価結果を表示し、読み取る方法についても説明します。このシナリオでは、tAssertのほかに、
-
tFileInputDelimitedとtFileOutputDelimitedコンポーネントも使用します。2つのコンポーネントは、実行ステータスが評価されるメインジョブを構成します。2つのコンポーネントの詳細は、tFileInputDelimitedおよびtFileOutputDelimitedをご覧ください。
-
tFileCompare. メインジョブの出力ファイルと標準参照ファイル間を比較します。tAssertにより、tAssertの設定で指定されたアサーション条件を基準に比較結果が評価されます。tFileCompareの詳細は、tFileCompareをご覧ください。
-
tAssertCatcher.tAssertが生成した評価を取得します。tAssertCatcherの詳細は、tAssertCatcherをご覧ください。
-
tLogRow. 取得した評価を表示できます。tLogRowの詳細は、tLogRowをご覧ください。
まず、次の手順に従ってメインジョブを設計します。
-
メインジョブで読み取るソースファイルとして、区切り付きの.csvファイルを準備してください。
-
列区切り付きファイルの2つの行を編集します。編集する内容は重要ではないので、簡単な編集を行ってください。
-
source.csvという名前を付けます。
-
Talend Studio で新しいジョブJobAssertionを作成します。
-
tFileInputDelimitedとtFileOutputDelimitedをワークスペースに配置します。
-
[Row Main] (行 メイン)リンクでこれらのコンポーネントを接続してメインジョブを作成します。

-
tFileInputDelimitedをダブルクリックして、[Component] (コンポーネント)ビューを開きます。
-
[Component] (コンポーネント)ビューの[File Name] (ファイル名)フィールドで、source.csvへのパスを入力するか参照します。

-
引き続き[Component] (コンポーネント)ビューで、[Property Type] (プロパティタイプ)を[Built-In] (組み込み)に設定し、[Edit schema] (スキーマを編集)の横の
をクリックして、tFileOutputDelimitedに渡すデータを定義します。このシナリオでは、作成したsource.csvに渡すデータを定義します。
スキーマタイプの詳細は、組み込みスキーマとリポジトリースキーマをご覧ください。
-
作成したsource.csvに従って、対応するフィールドで他のパラメーターを定義します。
-
tFileOutputDelimitedをダブルクリックして[Component] (コンポーネント)ビューを開きます。
-
[Component] (コンポーネント)ビューの[File Name] (ファイル名)フィールドで、出力ファイルへのパスを入力するか参照します。他のフィールドはデフォルトのままにしておきます。

-
[F6]を押して、メインジョブを実行します。source.csvが読み取られ、データがtFileOutputDelimitedに渡され、列区切り付きファイル、out.csvが出力されます。
続いてジョブを編集して、tAssertがメインジョブの実行ステータスをどのように評価しているのかを確認します。
-
out.csvの名前をreference.csvに変更します。このファイルは、メインジョブによって出力される、予定通りの結果として使用されます。
-
tFileCompare、tAssert、tLogRowをワークスペースに配置します。
-
これらのコンポーネントを[Row Main] (行 メイン)リンクで接続します。
-
tFileInputDelimitedをtFileCompareにOnSubjobOkリンクで接続します。

-
tFileCompareをダブルクリックして、[Component] (コンポーネント)ビューを開きます。
-
[Component] (コンポーネント)ビューの[File to compare] (比較するファイル)フィールドと[Reference file] (参照ファイル)フィールドに、対応するファイルパスを入力します。その他のフィールドはデフォルトのままにしておきます。

tFileCompareコンポーネントの詳細は、tFileCompareをご覧ください。
-
次に、tAssertをクリックし、ワークスペース下部の[Component] (コンポーネント)タブをクリックします。

-
[Component] (コンポーネント)ビューの[expression] (式)フィールドでアサーションrow2.differ==0を編集し、[description] (説明)フィールドでアサーションの説明メッセージを編集します。
[expression] (式)フィールドのrow2 はtFileCompareからtAssertに送信されるデータフローで、differはtFileCompareスキーマのカラムの1つで、比較されたファイルが同一かどうかを示します。0は、out.csvとreference.csv間で相違がtFileCompareによって検出されなかったことを意味します。したがって、比較されたファイルが同一の場合、アサーション条件が満たされるので、tAssertは、メインジョブが成功したと判断します。それ以外の場合は失敗と判断します。
-
F6を押してジョブを実行します。
-
[Run] (実行)ビューに表示される結果を確認します。

コンソールには、tFileCompareの比較結果、Files are identicalが表示されます。ただし、tAssertの結果はどこにもありません。
そのため、評価の取得にtAssertCatcherが必要になります。
-
tAssertCatcherとtLogRowをワークスペースに配置します。
-
これらのコンポーネントを[Row Main] (行 メイン)リンクで接続します。

-
tAssertCatcherの[Component] (コンポーネント)ビューでデフォルトの設定を使用します。

-
[F6]を押してジョブを実行します。
-
[Run] (実行)ビューに表示される結果を確認します。ジョブステータス情報が結果に追加されています。
でご覧ください。2010-01-29 15:37:33|fAvAzH|TASSERT|JobAssertion|java|tAssert_1|Ok|--| The output file should be identical with the reference file

コンソールのJobAssertionの説明文は、tAssertCatcherスキーマに従って編成されます。このスキーマには、実行時間、プロセスID、プロジェクト名、ジョブ名、コード言語、評価の元データ、評価結果、評価の詳細、アサーションの説明メッセージがこの順番で含まれています。tAssertCatcherのスキーマの詳細は、tAssertCatcherをご覧ください。
コンソールには、ジョブJobAssertionの実行ステータスがOkであることが示されています。評価のほか、JobAssertionに関するその他の説明を確認でき、その中には、tAssertの[Basic settings] (基本設定)で編集した説明メッセージが含まれます。
次に、メインジョブが予想通りのファイルの生成に失敗するように、操作を実行します。それには、実行した同じジョブで次の手順に従います。
-
reference.csvで行を1つ削除します。
-
F6を押してジョブを再び実行します。
-
[Run] (実行)ビューに表示される結果を確認します。
でご覧ください。2010-02-01 19:47:43|GeHJNO|TASSERT|JobAssertion|tAssert_1|Failed|Test logically failed|The output file should be identical with the reference file

コンソールには、メインジョブの実行ステータスがFailedであることが示されています。このステータスの詳細がFailedのすぐ後に続き、Test logically failedとなっています。
このようにして、現在のジョブステータスを大まかに把握することができます: 論理的失敗のため、予期されたファイルを生成できません。この論理的失敗は、ジョブ設計時の論理的ミスが原因である可能性があります。
ステータスとその説明はそれぞれ、tAssertCatcherスキーマのstatusカラムとsubstatusカラムにあります。カラムの詳細は、tAssertCatcherをご覧ください。