tNormalizeコンポーネントを利用してレコードを縦持ち変換してみた

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

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

今回はTalendのコンポーネント「tNormalize」の活用方法について書きたいと思います。

実は「tNormalize」コンポーネントについては、以下の記事でご紹介しているのですが今回は具体的な活用例についてです。

[Talend] tNormalizeコンポーネントを使ってみた | Developers.IO

前提条件

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

tNormalizeコンポーネントの活用方法

tNormalizeコンポーネントの活用方法の1つとして、ある1カラムの中にカンマ区切りなどで複数のデータが含まれている場合に、レコードをいわゆる縦持ち変換するという利用方法があります。

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

ジョブの説明

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

サンプルレコード

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

このサンプルレコードは、「Type」と「Bottle」の2つのカラムを持った2レコードのサンプルレコードです。「Bottle」にはカンマ区切りのデータが入っているので、今回はこのフィールドを展開することで7レコードに展開されることを期待しています。

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

「tNormalize」コンポーネントでは、「正規化するカラム」に展開したいカラムの「Bottle」を設定し、「アイテム区切り」に区切り文字の「","」を指定します。

実行結果

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

.------+------.
|   LogRow    |
|=-----+-----=|
|Type  |Bottle|
|=-----+-----=|
|東都    |ラビット  |
|東都    |タンク   |
|東都    |ゴリラ   |
|東都    |ダイアモンド|
|ロストボトル|バット   |
|ロストボトル|コブラ   |
|ロストボトル|キャッスル |
'------+------'

期待通り、7レコードに展開されました。

まとめ

以上、「tNormalize」コンポーネントの活用方法として、レコードの縦持ち変換についてのサンプルでした。

今回はシンプルな2カラムのデータで1カラムだけ展開しましたが、複雑なケースとして複数カラムがカンマ区切りのカラムとなっている場合が考えられます。このような場合にも、各カラムをtNormalizeに通してあげることで、うまくレコードの縦持ち変換をすることができます。

レコードの縦持ち変換に困った時には、「tNormalize」コンポーネントのことを思い出してください。