Talend チュートリアル(How to set up a Join link on a Job Design)

メモ:

Talend Communityに紹介されているチュートリアル(その2)!データを結合するチュートリアルを実装してみます。

今回、実行してみるチュートリアルは、顧客情報の入ったCSVファイルと州情報の入ったCSVファイルを州IDで結合して新しいファイルを出力するといった内容です。

最初に顧客情報が入ったCSVファイルを「http://www.talendforge.org/tutorials/data/tuto002/002.zip」からダウンロードして チュートリアルを実行できる準備をします。 (How to set up a Join link on a Job DesignのexampleFile.zip)

Customer.csvサンプルファイルの中は、次のようになっており区切り文字(デリミタ)が「;(セミコロン)」で作成されています。

/************************************************************/;;;;;;;;
/*******  Extract on Mon Oct 02 10:30:19 CEST 2006  ****************/;;;;;;;;
/************************************************************/;;;;;;;;


id;CustomerName;CustomerAddress;idState;id2;RegTime;RegisterTime;Sum1;Sum2
1;Griffith Paving and Sealcoatin;talend@apres91;7;41;03/11/2006 09:20;2001-01-17 06:26:40.000;67852;61521.4852
2;Bill's Dive Shop;511 Maple Ave.  Apt. 1B;35;5;19/11/2004 15:48;2002-06-07 09:40:00.000;88792;15434.1000

state.txtサンプルファイルの中は、次のようになっており区切り文字(デリミタ)が「;(セミコロン)」で作成されています。

idState;LabelState
1;Alabama
2;Alaska
3;Arizona
4;Arkansas
5;California

このチュートリアルは、idState(州ID)で結合してid,CustomerName,CustomerAddress,LabelStateを含む新しいファイルを作成します。

メタデータ 区切り記号付きファイルの作成

Talend Communityに紹介されているチュートリアルでは、プロジェクトのリポジトリに各ファイルの項目定義が作成されているので、最初に項目の定義を作成していきます。

ジョブを作成したらリポジトリビューの「メタデータ」-「区切り記号付きファイル」を右クリックし、「区切り記号付きファイルの作成」を選択します。

区切り記号付きファイルの作成

ダイアログが表示されるので「Name」にcustomerと入力し、「次へ」ボタンをクリックします。

区切り記号付きファイルの名前

設定対象のファイルとファイルのフォーマットを設定します。ここでは、ファイルにダウンロードしたサンプルの「c:\work\src\customer.csv」を設定し、フォーマットに「WINDOWS」を指定します。

ファイルのフォーマット設定

次に指定したCSVファイルのフォーマットについて設定していきます。

スキップする行のHeaderにチェックを入れ、行数を「6」に設定します。後は、デフォルトのままで変更はありません。

  • エンコーディング:US-ASCII
  • フィールドセパレータ:Semicolon(;)
  • ロウセパレータ:Standard EOL(\n)
  • エスケープ文字:区切り
ファイルのフォーマット定義

最後にスキーマを定義していきます。

COLUMN キー タイプ ヌル 長さ
id int 9
CustomerName String 255
CustomerAddress String 255
idState int 2
id2 int 2
RegTime String 30
RegisterTime String 30
Sum1 float 10
Sum2 float 10
スキーマの定義

同様に州情報のテキストファイルも設定を行っていきます。

州情報の設定

ダウンロードしたサンプルの「c:\work\src\state.txt」を指定し、フォーマットに「WINDOWS」を指定します。

州情報のファイルフォーマット設定

スキップする行のHeaderにチェックを入れ、行数を「1」に設定します。後は、デフォルトのままで変更はありません。

州情報のファイルフォーマット定義

州情報のスキーマも定義していきます。

COLUMN キー タイプ ヌル 長さ
idState int 2
LabelState String 14
州情報のスキーマ定義

ここまでで、メタデータの定義は終了です。

CSVファイルからデータを入力するコンポーネントの配置

パレットビューの中から「ファイル」-「ファイル入力」をクリックし「tFileInputDelimited」を選択します。選択後、デザインエリアへ「tFileInputDelimited」を2つ配置します。

tFileInputDelimited
tFileInputDelimited

1つ目に配置したコンポーネントのアイコン(絵の部分)をダブルクリックし画面下部のコンポーネントタブへコンポーネントの設定を追加していきます。

ここでは、プロパティタイプを「リポジトリ」に設定し定義済みのメタデータを指定していきます。プロパティタイプの右にあるボタンをクリックし、リポジトリの内容を表示します。

tFileInputDelimited

表示されたダイアログの中に事前に作成した「区切り記号付きファイル」の定義「customer」があるので選択し、「OK」ボタンをクリックします。

tFileInputDelimited

事前に定義した情報が反映され、入力項目がグレーアウトします。次にスキーマを確認していきます。「スキーマの編集」の右にあるボタンをクリックします。

tFileInputDelimited

ダイアログが表示されるので「View schema」を選択しOKをクリックします。

定義とは別のスキーマが必要な場合は、「組み込みプロパティに変更」、リポジトリに変更が加えられており反映する必要がある時は、「リポジトリ接続の更新」を選択します。

tFileInputDelimited

スキーマ情報が表示され、事前に定義したスキーマと同じであることが確認できます。

tFileInputDelimited

次に2つ目に配置した「tFileInputDelimited」コンポーネントの設定を行います。

プロパティタイプを「リポジトリ」に設定し定義済みのメタデータを指定していきます。プロパティタイプの右にあるボタンをクリックし、リポジトリの内容を表示します。

tFileInputDelimited

表示されたダイアログの中に事前に作成した「区切り記号付きファイル」の定義「states」があるので選択し、「OK」ボタンをクリックします。

tFileInputDelimited

事前に定義した情報が反映され、入力項目がグレーアウトします。次にスキーマを確認していきます。スキーマの編集の右にあるボタンをクリックします。

tFileInputDelimited

ダイアログが表示されるので「View schema」を選択しOKをクリックします。

tFileInputDelimited

スキーマ情報が表示され、事前に定義したスキーマと同じであることを確認します。

tFileInputDelimited

ここまでで、データを入力するコンポーネントの設定は終了です。

マップコンポーネントと出力コンポーネントの配置

2つのデータを結合するために「tMap」コンポーネントを配置します。

tFileInputDelimited

次に出力先を用意するため「tFileOutputDelimited」コンポーネントを配置します。

tFileInputDelimited

ジョブのデザインビューには、4つのコンポーネントが配置されます。

tFileInputDelimited

配置したコンポーネントを繋げていきます。最初に設定した「tFileInputDelimited(customer)」コンポーネントを右クリックでドラッグし「tMap」コンポーネントへ繋ぎます。

tFileInputDelimited

2つ目に設定した「tFileInputDelimited(states)」コンポーネントを右クリックでドラッグし「tMap」コンポーネントへ繋ぎます。つなげた線には、Lookupと表示されます。

tFileInputDelimited

「tMap」コンポーネントで結合した結果を出力するよう「tFileOutputDelimited」コンポーネントへ繋ぎます。

線をつなげると次のダイアログが表示されるので、出力名にoutputと入力します。

tFileInputDelimited

配置した4つのコンポーネントが繋がれた状態が完成します。

tFileInputDelimited

結合条件と出力項目の設定

「tMap」コンポーネントをダブルクリックし、コンポーネントタブをアクティブにします。コンポーネントタブにあるマップエディタのボタンをクリックし、マップエディタを表示します。

tFileInputDelimited
tFileInputDelimited

row1のidState項目をドラッグしてrow2のidStateへドロップし、idState項目で結合するよう設定します。

tFileInputDelimited

次に出力したい項目をドラッグして右端の「output」へドロップしていきます。

tFileInputDelimited

ここでは、row1(customerファイル)のid,CustomerName,CustomerAddress、row2(stateファイル)のLabelStateを出力するよう設定します。

tFileInputDelimited

最後に「tFileOutputDelimited」コンポーネントに結合後のファイルの出力先とヘッダーを含むにチェックを入れ、今回のジョブは完成となります。

tFileInputDelimited

ジョブを実行して2つのファイルからデータが結合されていることを確認します。正しく設定できていれば次のようなデータが作成されます。

id;CustomerName;CustomerAddress;LabelState
1;Griffith Paving and Sealcoatin;talend@apres91;Connecticut
2;Bill's Dive Shop;511 Maple Ave.  Apt. 1B;Ohio
3;Childress Child Day Care;662 Lyons Circle;Alabama
4;Facelift Kitchen and Bath;unknown;
5;Terrinni & Son Auto and Truck;770 Exmoor Rd.;

以上で「How to set up a Join link on a Job Design」チュートリアルは終了です。