eightban's memo

残しておきたい記事をまとめてみました。

Talend

Talend Open Studioで自作関数を作成する ~ Talend

投稿日:

Talend Open Studioで使用したい文字列関数が無かったので自作関数を作成してみました。

自作関数の作成

リポジトリ->コード->ルーチンに「usercomponent」フォルダを作成して、その中にルーチンを作成します。

 

今回は一つのルーチンに関数を複数作るので「UserRoutines」の名前のルーチンを作成します。

 

サンプルとして「helloExample」の自作関数が作成されます。コメント行には使用方法を書かれています。

D:\oss\talend\TOS_DI-V6.4.1\workspace\LOCAL_PROJECT\code\routines\usercode\UserRoutines_0.1.item
に実体があります。

 

ルーチンライブラリの編集を選びます。

 

文字列操作の外部ライブラリを使うので「外部ライブラリインポート」を選びます。

 

アイテムのロックが表示されていたので、編集していたルーチンを閉じます。

 

Newを選びます。

 

 

文字列操作のライブラリ

com.ibm.icu_52.1.0.v201404241930.jar を選びます。

 

OK

 

Finish

 

終わったら「ルーチンの編集」を選びます。

 

import com.ibm.icu.text.Transliteratorを挿入します。

標準関数のノーマライズの関数(英数字は半角、カナは全角など)を使いたいので、

import java.text.Normalizerとimport java.text.Normalizer.Formも入れておきます。

 

下記の関数を作ります。

  1. Normalize:英数字記号を半角、ひらがな、カナを全角に変換
  2. Han2ZenICU:半角を全角に変換 .
  3. MID:文字列切り取り

ソースを参考にしてください。

使用法ですが

UserRoutines.Normalize("AabB12345アイウエオガあいうえお")
UserRoutines.Han2ZenICU("AabB12345アイウエオガあいうえお")
UserRoutines.MID(row1.NAME,3,2)

LEFT,RIGHT関数はStringHandlingルーチンにあります。

StringHandling.LEFT("helloWorld!",5)
StringHandling.RIGHT("helloWorld!",5)

javaではsubstring(開始位置、終了位置)
str ="STRING";
str.string(1,3); -> TR

 

使用例

関数を使わない場合

CSVファイルを入力にしtmapを介して変換をかけtlogrowに出力する例です。

ジョブの作成

 

新規JOBを作ります。

 

 

CSVのメタデータがあったので、それを使います。tfileinputdelimitedを選びます。

ない場合は用意してください。

 

先頭の文字をいれてtmapを出します。

 

 

tfileinputdelimitedで右クリックでメニューを出し、ロウ->メインで何もないところに落とします。

 

 

 

tlogと入れて、tLogRowを選びます。

 

出力名を聞いてくるのでoutputなどといれておきます。

 

処理がつながりました。

自動マップを押すと入力と同じ出力となります。

 

 

 

 

実行するとLogに出力されます。

関数を使う場合

tMapで関数を使います。式の右横の四角を押すと画面が開きます。

 

ユーザ定義->自作関数を選びダブルクリックすると関数が左上に入りますが編集して正しいものにします。

 

 

コードが全角、名前が切り取られました。

足りないものを自分で追加できるのも便利なところです。

-Talend

Copyright© eightban's memo , 2018 All Rights Reserved Powered by STINGER.