Talend - 1行から多くの、可変数の出力行

Background: It's common in Talend to use something like tSplitRow to map one row with many fields into multiple rows. A row with fields:

Date | Name | MorningPhone | Day Phone | EveningPhone ...could be split into:

Date | Name | Phone ... and you'll always have 3 resulting rows from one row.


Question: What if I want number of rows from a variable number of fields?

I have a schema: UniqueID | FieldSet where FieldSet is a delimited field of columns divisible by nine. If there are 45 fields, in this delimited column, I want 5 rows. 81 fields => 9 rows.

フィールドを解析するためにtJavaRowを使用しようとしていますが、tSplitRowと組み合わせて適切な数のフィールドを生成する方法がわかりません。

アイデア?ありがとう!

0

2 答え

私はカスタムtJavaRowを使用しました。これは特別にフォーマットされた文字列を新しいテーブルに変換しました。一種のハックだが、うまくいった。

String input = "";
String OUT = "";


try {
      input = java.net.URLDecoder.decode(input_row.CustomField16, "ASCII");

} catch (UnsupportedEncodingException e) {
      e.printStackTrace();
}

String[] pieces = input.split(";");

/*for(int a=0; a
2
追加された
このメソッドは非推奨です。下の私の答えを見てください
追加された 著者 Daniel San,
これを行うためのより良い方法を考えることはできません。
追加された 著者 drmirror,

Talendはこの質問がなされて以来進化してきました。これを行うもっと良い方法は、tNormalizeコンポーネントを使用することです。

enter image description here

まず、次のようなファイルを入力として使用します。

pepe|123|123
juan|454|2423|34343|5454

このファイルは、tFileInputRegexコンポーネントを使用して読んでいます。正規表現とスキーマを定義する必要があります。正規表現は次のようになります。

"^([^|]+)\\|(.+)"

スキーマは次のようになります。

enter image description here

次に、tFileInputRegexとtNormalizeを接続します。セパレータは次のように設定します。

"\\|"

最後に、必要に応じて出力を使用します。

1
追加された