[Talend]tSplitRowを利用して行を複数行に分割する

はじめに

こんにちは。DI部の大高です。

今回はTalendのコンポーネント「tSplitRow」を利用した行の分割を紹介したいと思います。

前提条件

Talendのバージョンは「Talend Open Studio for Big Data」の「Version 7.1.1」で検証しています。

tSplitRowについて

「tSplitRow」を利用すると行を複数行に分割することができます。

「tSplitRow」コンポーネントのTalend Helpページはこちらです。

tSplitRow

では、具体的に以下で解説していきます。

ジョブの説明

ジョブとしては、シンプルなジョブで「tFixedFlowInput」でサンプルレコードを生成し、「tSplitRow」で行を分割して「tLogRow」でログ出力しています。

「tFixedFlowInput」コンポーネントの設定

まず「tFixedFlowInput」に設定したサンプルレコードです。

このサンプルレコードは、「Year」、「Rider1」、「Rider2」の3つのカラムを持った3レコードのサンプルレコードです。「Rider1」と「Rider2」には名前のデータが入っているので、今回はこの2カラムを「Name」にマッピングすることで6レコードに展開されることを期待しています。

「tSplitRow」コンポーネントの設定

「tSplitRow」コンポーネントでは、行をどのように分割するかを「カラムのマッピング」で設定します。今回は「Rider1」と「Rider2」を「Name」にマッピングしたいので、以下のようにマッピングします。

マッピングを行う際はカラム名だけではなく、rowの名前も含めて設定します。今回のサンプルの場合には入力rowの名前を「input」に設定しているので、「input.Rider1」のようになります。

「tLogRow」コンポーネントの設定

「tLogRow」コンポーネントはデフォルトのままで、特に設定していないので割愛します。

実行結果

設定は以上です。実際にこのジョブを実行すると以下のように出力されます。

[statistics] connecting to socket on port 4022
[statistics] connected
2018|ZI-O
2018|Geiz
2017|Build
2017|Cross
2016|Ex-Aid
2016|Brave
[statistics] disconnected

期待通り、3レコードが6レコードに分割されました!

まとめ

以上、「tSplitRow」コンポーネントの紹介でした。

カラム名が番号付きで複数あるケース(Name_1, Name_2, Name_3)などは良くあると思いますが、そういったデータを正規化したい場合にうまく活用できるコンポーネントだと思います!

それでは。