困っている...とりあえずこんな感じですね。仕様をもっと具体的にもう少し具体的に仕様を決めておきましょう。旧システムの項目は下記の通りID,ITEM_CD,SUURYO,TANNI新システムの項目は下記の通りID,ITEM_CD,ITEM_NAME,SUURYO,TANNI旧システムのITEM_CDからITEM_NAMEを引くためのcsvマスタデータ項目は下記の通りITEM_CD,ITEM_NAMEサンプルデータとして、旧システムの実績データ、品目マスタデータは下記のような感じとしましょう。【旧システム販売実績データ】[text]ID,ITEM_CD,SUURYO,TANNI0000000001,"0000000001",3,"個"0000000002,"0000000004",11,"個"0000000003,"0000000001",2,"ダース"0000000004,"0000000015",1,"箱"0000000005,"0000000009",13,"個"0000000006,"0000000031",7,"箱"0000000007,"0000000004",4,"ダース"[/text]【品目マスタデータ】[text]ITEM_CD,ITEM_NAME0000000001,"りんご"0000000004,"みかん"0000000009,"すいか"0000000015,"メロン"0000000031,"パイナップル"[/text]csvデータは下記のからダウンロードできます。トランザクションのcsvデータ,品目マスタのcsvデータ山田さんは頼もしいことに、Talendならすぐに実装できると言っています。私たちも実装していきましょう!少しはtMapの実力が分かるはずです。最初は前回の復習ですまずはジョブを作りましょう。作り方は前回記事を参照してください。ジョブを作ったら、まずは、前回同様、tFileInputDelimitedtMaptLogRowのコンポーネントをジョブに落としていきます。実績データcsvの読み込みができていることを確認するためです。このあたりは、前回と全く同じ内容ですね。tFileInputDelimitedコンポーネントのファイル名/ストリーム、CSVオプションチェックなど、オプションを正しく設定しておきましょう。忘れてはいけないスキーマの編集です。このコンポーネント設定の[スキーマの編集]の右隣のボタンから、入力ファイルの項目を定義します。入力ファイルは仕様通り、上記の4項目ですので、その通りに入力しました。一応、SUURYOの項目は数値っぽいのでIntegerに設定します。次に、tMapコンポーネントを編集します。要件の出力では、ITEM_NAMEが追加されていますので、tMapのout1にも追加しておきます。現時点では値セットができないので空欄でokです。出力と入力が同一項目名の場合は、画面右上の[自動マップ]ボタンを押下すると、勝手にout側にin側のリンクを行ってくれます。tMapの設定が終わり、tLogRowまで配置&Row接続ができたら、ジョブ実行してみましょう。今回のテストデータをそのまま流した場合は、7レコード出力されると思います。上記の通り出力されていれば、とりあえずokです。これで一旦、ファイル入力⇒tMap(処理なし)⇒ログ出力のフローまで確認ができました。tMapでマスタデータ紐づけを行う今回は、ここからが本番です!次に、新たな入力ファイルを読み込みましょう。突合するためのマスタデータcsvですね。新たにtFileInputDelimitedコンポーネントを配置します。下記の通り設定を行います。品目マスタデータのcsvを、[ファイル名/ストリーム]に指定し、後は画面の通り、csvに関するオプションを設定します。設定が完了したら、tMapにRow接続します。この時、Rowの下にLookupと出ると思いますが、それで正しいです。ITEM_NAMEを項目として追加しておきます。今度は、tMapの設定を行います。先ほどと異なり、左側の入力に、row2が追加されていることが確認できます。このままですと、row1とrow2には一切関係を示すキーが記載されていません。この状態のまま、一度ジョブを走らせてみると、想定と全く異なる結果が得られます。row1からは7レコード、row2からは5レコードの入力がtMapに接続されていますね。ここまでは想定通りです。tMapからの出力はなんと...35レコードです。えっ!なにこれ!はい。データベースを学んだことがある方なら、ピンとくると思います。SQLで、複数テーブルからジョインして結果のレコードを得る時に、キーを指定しないと、テーブル1のレコード数*テーブル2のレコード数分の結果が得られてしまうと思います。TalendのtMap内でも同じことが起きてしまっていて、結果が35レコード(7*5レコード)となってしまいました。トランザクションデータとマスタデータを紐づけるキーの設定というわけで、tMap内でジョイン時のキーを設定します。今回、仕様にもある通り、品目コードから品名を引いてくる、ということなので、row1とrow2を品目コードで紐づけます。紐づけの仕方は、tMapのエディタ内で、Lookupに指定されていたRow接続側の[式キー]に、どの項目と紐づけるかを式で記述します。今回の場合は、row2の[式キー]に、row1.ITEM_CDと書きます。row1とrow2の品目コードで紐づけを行いますからね。動作確認これで、tMapの編集は完了です。この状態で実行すると、先ほどとは違って、結果が7レコード、ITEM_NAMEを意味する項目に、品目マスタcsvから品目コードに紐づく名称がセットされていることが確認できるはずです。結果は想定通りですね。まとめまとめると、tMapにて、複数の入力ソースの情報を(SQLのJOINみたく)紐づけることができるという感じですね。次回は、tMapのフィルタ機能を取り上げていきたいと思います。【React】Reactに爆速で入門する4。UI使用の準備まで行いました。今回は、Wordpressの話です。最近、ブログ村に登録しました。ブログ村というのは、バナーを自分のブログに張っ[...]【Phonegap/Cordova】console.logの落とし穴。今回は、Phonegapアプリの実機デバッグ時のハマり点についてです。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。【Javascript】爆速でChrome拡張プラグイン開発を試す。作り方は意外とかんたんでした。【Talend】グローバル変数の使い方(globalMapとcontext)【JSF入門02】ボタン押下時のイベントを扱う。入門01】開発環境の構築。TalendをインストールしようETL開発ツールは比較するまでもなくTalend一択だと思う。入門02】CSVデータを変換する。Talendの使い方からはじめます。【エストレヤ】なんと妹がバイク乗りになるらしい。いうわけでバイクを購入しました。Songバイクでツーリングいこっ!心に残る絶景を写真にGN倶楽部IT系カテゴリの最新記事2019.03.06Wordpress,【WordPress】突然固定ページが404エラーで表示されなくなった!?ので私の対処法を書きます。WebSlides,【WebSlides】HTML+CSS+Javascriptでプレゼン資料を作成したら割とウケた話。React,【React】Reactに爆速で入門する4。React,【React】Reactに爆速で入門する3。React,【React】Reactに爆速で入門する2。WordPress.。