7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Talend入門 (9) ~tHashInput/tHashOutput~

Last updated at Posted at 2019-07-22

##全体の目的
Talendの超簡単なサンプルジョブを作成して,ETLジョブ開発に必要なスキルを習得することが目的です。

##対象者
ETL / EAI技術者

##環境

使用環境 バージョン
OS Windows10
Talend 7.1.1

##サンプル一覧
以下の順番で習得していきます

# 内容
1 はじめてのTalend
2 ファイルI/O
3 データベースI/O
4 tMap
5 イテレータ
6 メタデータ
7 Context変数
8 Global Map
9 tHashInput/tHashOutput(今回)
10 エラーハンドリング
11 ロギング
12 子ジョブ(ジョブのネスト)
13-1 設定ファイル読み込みオリジナル版
13-2 設定ファイル読み込みコンポ版
14 tJava

サンプルコード(Talendプロジェクトデータ)

##今回の目的
tHashInput/tHashOutputについて理解する。

##tHashInput/tHashOutputとは
ロウをメモリに保持しておけるコンポーネントです。
何度も同じマスタをlookupする場合など、**「データベースI/OやディスクI/Oを一度で済ませロウを使いまわす」**といった設計の場合に力を発揮します。

  • tHashOutput
    • ロウをメモリに保持する際に使います
  • tHashInput
    • メモリに保存済みのロウを取得する際に使います

##サンプル作成
サンプルプログラムを動かしながら使い方を見ていきましょう。
以下サンプルを作成します。

  • CSVファイルをロード
  • tHashOutputを使いメモリにロウを保持
  • メモリに保持しているロウをtHashInputで取得
  • ログを出力

入力ソース準備

in.csvというファイルを作成します。
今回は C:\work\hashinput\in.csv に作成しました。

  • エンコードはシフトJIS
  • 改行コードはLF
in.csv
id,name,gender
1,kouda,男
2,mori,男
3,kubo,男
4,shimizu,男
5,aya,女

GS000300.png

###ジョブの作成
リポジトリの[ジョブ]を右クリックし[ジョブの作成]を選択します。
[名前]にhashinputと入力し[Finish]ボタンをクリックします。

GS000283.png

###tHashOutputとtHashInputを使えるようにする
デフォルト設定ではtHashInputとtHashOutputが使えません。
PaletteFilterボタンをクリックします。
GS000284.png

パレットの設定画面で Hide - テクニカルの中にtHashInputとtHashOutputがあることを確認します。
確認できたら右矢印をクリックします。
GS000277.png

Show側に登録できたらOKボタンをクリックします。これでパレットから呼びだすことができるようになります。
GS000278.png

###tHashOutputとtHashInputの配置

[tFileInputDelimited]と[tHashOutput]を配置しロウでつなぎます。
GS000288.png

[tFileInputDelimited]の[基本設定]を以下のように設定します。

項目名 設定内容 説明
ファイル名 C:/work/hashinput/in.csv 読み込みファイルのパス
フィールド区切り , 入力データに合わせてカンマを指定
ヘッダー 1 1行目はヘッダとして扱う

[tFileInputDelimited]の[詳細設定]でエンコーディングを指定します。

項目名 設定内容 説明
エンコーディング CUSTOMでSJIS 入力ファイルのエンコーディングに合わせる

スキーマ編集ダイアログを開きカラム名とタイプを以下のように設定します。

カラム タイプ
1列目 id int
2列目 name String
3列目 gender String

GS000033.png

[tHashInput]と[tLogRow]を配置しロウでつなぎます。
さらに[tFileInputDelimited]で右クリックしサブジョブOKで[tHashInput]につなぎます。
GS000289.png

ここで一度実行してみましょう。
何も出力されません。。。でもこれで準備はできました。次に進みましょう。
GS000290.png

###tHashOutputとtHashInputのひもづけ

[tHashOutput]の[基本設定]を開きスキーマの編集ボタンをクリックします。
GS000291.png

XMLファイルにエクスポートするボタンをクリックします。
GS000292.png

スキーマ定義.xml という名称で保存しましょう。
GS000293.png

保存されました。(explorerで確認)
GS000295.png

[tHashInput]の[基本設定]を開きスキーマの編集ボタンをクリックします。
GS000296.png

インポートボタンをクリックし、先ほど保存したスキーマ定義.xmlを指定します。
GS000297.png
GS000298.png

それでは再度実行してみましょう。
メモリに保持しているロウ(tHashInput)の内容を出力できました。
GS000299.png

##まとめ
今回はtHashInputとtHashOutputコンポーネントの使い方を紹介しました。
メモリリソースに余裕があればロウの使いまわしができるこのコンポーネントは使いどころが多いのでぜひ試してみてください。

あらたに利用したコンポーネントと用途をおさらいしておきます。

  • tHashOutput
    • ロウをメモリに保持
  • tHashInput
    • メモリに保存済みのロウを取得

毎度のことですが、ほんのさわりの部分だけを解説していますのでぜひここから深掘りしてみてください。

##次回以降
次回はエラー処理をやっていきます。

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?