【Talend】区切り文字列データをカラム(列)に分割する

はじめに

今回は、Talendで区切り文字列データを分割して、通常のカラム分割されたrowデータに変換する方法についての記事です。

最近、文字列データとして流れて来たデータを扱う場面がありました。
その際に、どうやって区切り文字含みの1カラム(列)しか持たないデータを、通常の複数カラムを持つデータに分割しようか少し迷いましたので、記事に残しておくことにします。

区切り文字列?tFileInputDelimitedっしょ?え?使えない?

カンマやタブ区切りの”ファイル入力”データは、以前の記事でも扱った通り、tFileInputDelimitedというコンポーネントを使えば難なく区切った結果をカラムに分割してrowデータにすることができます。

ですが、今回のケースでは、入力はファイルではありませんので、tFileInputDelimitedは使えません。

区切り文字列をカラムに分割するコンポーネント

tJavaRowを使用して、文字列をsplitした後にrowに流しても良いんですが、ちゃんとコンポーネントがありますので、そちらを使用することにします。

ずばり、tExtractDelimitedFieldsコンポーネントです。

talend_extract_01

こんな感じの部品です。

ジョブで使用してみる

それでは、実際にジョブで使ってみましょう。
ベースとするジョブは、前回記事で取り上げたSAPと連携するジョブです。

tSAPInputコンポーネントからの戻り値は、区切り文字で区切られた単一のStringです。
(区切り文字は、Initialize inputのDELIMITERで与えた値になります)
この返却された文字列に対して、tExtractDelimitedFieldsを適用してみます。

talend_extract_02

tExtractDelimitedFieldsコンポーネントをジョブに配置し、tSAPInputのout(WA)を接続します。上記ジョブではtLogRowが挟まっていますが、このコンポーネントは無害なので気にしないでください。

設定ですが、

  • Filed to split
    • 分割するカラムを選択
  • Field separator
    • 区切り文字を設定(今回は”;”区切りなので”;”をセット)
  • スキーマは下記の通り設定
    • 左側(入力側)はそのままで、出力側を編集します。
      列名は、tSAPInputから伸びるもう一方のFIELD_NAMEの出力値を参考に定義しました。

talend_extract_04

この状態で実行すると、無事区切り文字列を持つ単一のカラムが、区切り文字列でカラム分割されることが確認できます。

talend_extract_05

無事、カラム分割されたrowデータを得ることができました。

 

ちなみに、tExtractDelimitedFieldsコンポーネント以外にも、tExtractシリーズには文字列をパースしてくれる便利な部品群が存在しますので、覚えておくと良いと思います。

 

今回は以上です!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です