メイン コンテンツをスキップする 補完的コンテンツへスキップ

結合出力テーブルを使ってマッピングする

次のシナリオでは、メインフローから分離せずにリジェクトフローを処理するジョブについて説明します。

コンポーネントをリンク

Before you begin

次の2つのファイルに、[Repository] (リポジトリー)ビューで[Metadata] (メタデータ) > [File delimited] (区切り付きファイル)の下で2つのファイルメタデータ接続が作成済みであること。
  • states.csv
  • customers.csv

メタデータの一元管理については、Talend Studioでメタデータを管理をご覧ください。

Procedure

  1. [Repository] (リポジトリー)ツリービューで[Metadata] (メタデータ) > [File delimited] (区切り付きファイル)の順にクリックします。customersメタデータをワークスペースにドラッグ&ドロップします。
    customersメタデータには、ID、名前、住所など、顧客に関する情報が含まれています。
  2. 使うコンポーネントタイプの選択を求めるダイアログボックスで、tFileInputDelimitedを選択して[OK]をクリックします。
  3. statesメタデータをデザインワークスペースにドロップします。ダイアログボックスで同じコンポーネントを選択し、[OK]をクリックします。
    statesメタデータには、州のIDとその名前が含まれています。
  4. tMapコンポーネントと2つのtLogRowコンポーネントを[Palette] (パレット)からデザインワークスペースにドロップします。
  5. [Row] (行) > [Main] (メイン)接続を使って、customersコンポーネントをtMapに接続します。
  6. [Row] (行) > [Main] (メイン) 接続を使って、tMapコンポーネントをtLogRowに接続します。このフローは自動的に[Lookup] (ルックアップ)として定義されます。

コンポーネントを設定

Procedure

  1. tMapコンポーネントをダブルクリックして、[Map Editor] (マップエディター)を開きます。
    メインの入力テーブルからidStateカラムをルックアップテーブルのidStateカラムにドロップして、結合を作成します。
    [tMap settings] (tMap設定)ボタンをクリックし、[Join Model] (結合モデル)[Inner Join] (内部結合)に設定します。
  2. 入力エリアの上部にある[Property Settings] (プロパティ設定)ボタンをクリックして[Property Settings] (プロパティ設定)ダイアログボックスを開き、実行エラーを処理するために[Die on error] (エラー発生時に強制終了)チェックボックスをオフにします。
    ErrorRejectテーブルが自動的に作成されます。
  3. 入力テーブルでididStateRegTime、およびRegisterTimeを選択し、それらをErrorRejectテーブルにドラッグします。
  4. エディターの右上にある[+]ボタンをクリックして、出力テーブルを追加します。表示されるダイアログボックスで、[New output] (新しい出力)を選択します。その隣のフィールドに、テーブルの名前out1を入力します。[OK]をクリックします。
  5. 次のカラムを入力テーブルからout1テーブルにドラッグします: idCustomerNameidState、およびLabelState
    RegTimeおよびRegisterTimeという2つのカラムをout1テーブルの末尾に追加し、日付形式をそれぞれ"dd/MM/yyyy HH:mm"および"yyyy-MM-dd HH:mm:ss.SSS"に設定します。
  6. RegTimeカラムの[Expression] (式)フィールドをクリックし、[Ctrl]+[Space]を押してオートコンプリートリストを表示します。TalendDate.parseDateを見つけてダブルクリックします。パターンを("dd/MM/yyyy HH:mm",row1.RegTime)に変更します。
  7. RegisterTimeカラムに対して同じことを行いますが、パターンを("yyyy-MM-dd HH:mm:ss.SSS",row1.RegisterTime)に変更します。
  8. 出力エリアの上部にある[+]ボタンをクリックして、出力テーブルを追加します。表示されるダイアログボックスで[Create join table from] (結合テーブルの作成]を選択し、Out1を選び、rejectInnerという名前を付けます。[OK]をクリックします。
  9. [tMap settings] (tMap設定)ボタンをクリックし、リジェクトを処理するために[Catch lookup inner join reject] (ルックアップ内部結合リジェクト収集)trueに設定します。
  10. カラムidCustomerName、およびidStateを入力テーブルからrejectInnerテーブルの対応するカラムにドラッグします。
    LabelStateカラムの[Expression] (式)フィールドをクリックし、"UNKNOWN"と入力します。
  11. RegTimeカラムの[Expression] (式)フィールドをクリックし、[Ctrl]+[Space]を押して、TalendDate.parseDateを選択します。パターンを("dd/MM/yyyy HH:mm",row1.RegTime)に変更します。
  12. RegisterTimeカラムの[Expression] (式)フィールドをクリックし、[Ctrl]+[Space]を押して、TalendDate.parseDateを選択します。ただし、パターンを("yyyy-MM-dd HH:mm:ss.SSS",row1.RegisterTime)に変更します。
    row1のデータのパターンが間違っている場合は、ErrorRejectフローによって返されます。
    [OK]をクリックして変更を確定し、エディターを閉じます。
  13. 最初のtLogRowコンポーネントをダブルクリックして、[Component] (コンポーネント)ビューを開きます。
    [Sync columns] (カラムを同期)をクリックして、必要に応じてマッパーからスキーマストラクチャーを取得します。
    [Mode] (モード)エリアで[Table] (テーブル)を選択します。
    2番目のtLogRowでも同じことを行います。

ジョブを実行

Procedure

  1. [Ctrl+S]を押してジョブを保存します。
  2. [F6]を押して実行します。

Results

[Run] (実行)コンソールには、メインのアウトフローとErrorRejectフローが表示されます。メインの出力フローは有効なデータと内部結合のリジェクトの両方を統合しますが、ErrorRejectフローは解析できない日付形式の行に関するエラー情報を含みます。

tMapでダイナミックスキーマを使う方法の例は、次をご覧ください。

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

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