メイン コンテンツをスキップする

ジョブ実行のアサーション条件の設定

このシナリオでは、ジョブ実行が成功したかどうかを評価するために、tAssertでアサーション条件を設定する方法について説明します。また、2つの異なる評価結果を表示し、読み取る方法についても説明します。このシナリオでは、tAssertのほかに、

Talendでサポートされているテクノロジーの詳細は、Talendコンポーネントをご覧ください。

  • tFileInputDelimitedtFileOutputDelimitedコンポーネントも使用します。2つのコンポーネントは、実行ステータスが評価されるメインジョブを構成します。これらのコンポーネントの詳細は、tFileInputDelimitedおよびtFileOutputDelimitedをご覧ください。

  • tFileCompare. メインジョブの出力ファイルと標準参照ファイル間を比較します。tAssertにより、tAssertの設定で指定されたアサーション条件を基準に比較結果が評価されます。tFileCompareの詳細は、tFileCompareをご覧ください。

  • tAssertCatcher.tAssertが生成した評価を取得します。tAssertCatcherの詳細は、tAssertCatcherをご覧ください。

  • tLogRow. 取得した評価を表示できます。tLogRowの詳細は、tLogRowをご覧ください。

まず、次の手順に従ってメインジョブを設計します。

  • メインジョブで読み取るソースファイルとして、区切り付きの.csvファイルを準備してください。

  • 列区切り付きファイルの2つの行を編集します。編集する内容は重要ではないので、簡単な編集を行ってください。

  • source.csvという名前を付けます。

  • Studio Talend で新しいジョブJobAssertionを作成します。

  • tFileInputDelimitedtFileOutputDelimitedをワークスペースに配置します。

  • [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に変更します。このファイルは、メインジョブによって出力される、予定通りの結果として使用されます。

  • tFileComparetAsserttLogRowをワークスペースに配置します。

  • これらのコンポーネントを[Row Main] (行 メイン)リンクで接続します。

  • tFileInputDelimitedtFileCompareOnSubjobOkリンクで接続します。

  • tFileCompareをダブルクリックして、[Component] (コンポーネント)ビューを開きます。

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

tFileCompareコンポーネントの詳細は、tFileCompareをご覧ください。

  • 次に、tAssertをクリックし、ワークスペース下部の[Component] (コンポーネント)タブをクリックします。

  • [Component] (コンポーネント)ビューの[expression] (式)フィールドでアサーションrow2.differ==0を編集し、[description] (説明)フィールドでアサーションの説明メッセージを編集します。

[expression] (式)フィールドのrow2 tFileCompareからtAssertに送信されるデータフローで、differtFileCompareスキーマのカラムの1つで、比較されたファイルが同一かどうかを示します。0は、out.csvreference.csv間で相違がtFileCompareによって検出されなかったことを意味します。したがって、比較されたファイルが同一の場合、アサーション条件が満たされるので、tAssertは、メインジョブが成功したと判断します。それ以外の場合は失敗と判断します。

情報メモ注:

differカラムは読み取り専用のtFileCompareスキーマ内にあります。スキーマの詳細は、tFileCompareをご覧ください。

  • [F6]を押してジョブを実行します。

  • [Run] (実行)ビューに表示される結果を確認します。

コンソールには、tFileCompareの比較結果、Files are identicalが表示されます。ただし、tAssertの結果はどこにもありません。

そのため、評価の取得にtAssertCatcherが必要になります。

  • tAssertCatchertLogRowをワークスペースに配置します。

  • これらのコンポーネントを[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をご覧ください。

このページは役に立ちましたか?

このページまたはコンテンツに、タイポ、ステップの省略、技術的エラーなどの問題が見つかった場合は、お知らせください。改善に役立たせていただきます。