Transformer ステージ トランスフォーム タイプ
Transformer ステージは、フィールドの値と書式を変更します。入力フィールドと出力フィールドの名前が同じであれば、フィールドに対して複数のトランスフォームを実行できます。
一般トランスフォーム
- フィールド作成
- 既存のフィールドの値または定数値を使用して、フィールドの値を置換するか、新しいフィールドを作成します。例えば、City という名前のフィールドがあり、City フィールドの値に "City of” という語句を追加する必要があるとします。その場合に、次のようなテンプレートを作成します。
City of ${City}
[To field (対象フィールド)] フィールドで、City フィールドを選択します。これにより、City フィールドの既存の値が、テンプレートを使用して構成された値と置換されます。例えば、City フィールドの値が Chicago の場合、新しい値は City of Chicago になります。
文字の前にバックスラッシュを付けないと、有効なテンプレートを生成できない文字もあります。例えば、一重引用符の前には、
\'
のようにバックスラッシュを付ける必要があります。バックスラッシュでエスケープする必要がある記号のリストについては、groovy-lang.org/syntax.html を参照してください。 - コピー
- フィールドの値を別のフィールドにコピーします。
- カスタム
- Groovy 言語を使用して独自のトランスフォームを定義できます。詳細については、「Custom Transform の作成」を参照してください。
Spatial モジュールのユーザの場合、カスタム トランスフォームは空間データセットにアクセスできます。『Spectrum Spatial ガイド』(support.pb.com) の「ステージ」セクションを参照してください。
- 名前の変更
- フィールドの名前を変更します。データフローの既存のフィールド名の一覧から選択することも、別の名前を入力することもできます。
- ステータス
- [ステータス] フィールドの値を [成功] または [失敗] に変更します。[失敗] に設定されている場合は、オプションの [説明] と [コード] も設定できます。
トランスフォームの書式設定
- 大文字小文字
- 文字を大文字または小文字に変更します。
- マスク
- フィールドに対して文字を適用、またはフィールドから文字を削除します。詳細については、「Mask Transform の使用」を参照してください。
- パディング
- フィールドの左側または右側に文字を追加します。
文字列関係のトランスフォーム
- 前後の空白削除
- フィールドの先頭と末尾にある空白を削除します。また、一連の空白 (複数の連続する空白等) を単一の空白文字に置き換えます。
- 部分文字列の削除
- 文字列をフィールドからすべて削除します。例えば、"CA" を StateProvince フィールドから削除します。
- 部分文字列
- 一連の連続する文字をフィールド間でコピーします。
- トリム
- フィールドの左側、右側、または両側から、指定された文字を削除します。このトランスフォームでは大文字と小文字が区別されます。
- 切り捨て
- 指定された個数の文字をフィールドの左側と右側から削除します。
リスト変換
この機能を利用すると、"input from read from XML" のような、リストに作用する canned (缶詰) 変換を作成できます。
- リスト変換操作を選択します。右側のツリー ビューに入力フィールドが表示されます。
- 操作を適用するツリー内の有効なフィールドを選択します。入力フィールドのツリー ビューの下に操作のプロパティが表示されます。
- 操作のプロパティを指定し、[追加] をクリックします。親ウィンドウ ([Transformer オプション] ウィンドウ) 内のリストに変換が追加されます。
- フィールドを作成
-
ユーザの選択したリスト タイプ フィールドの下にフィールドを作成できます。例えば、2 つのクラブ Knitters と Lambs がある Football というリストに、新しいクラブ Irons を追加できます。この場合、リストに合計 3 つのクラブが含まれることになります。
- ソート
-
選択されたフィールド内の値をソートします。複雑なリストの場合にはソートに使うキー要素を指定する必要がありますが、単純なリストではリスト内の要素がそのままソートされます。ユーザはソート順序 (昇順または降順) を選択できます。Football の例で、リストに 3 つのクラブがあるとき、名前に基づいてクラブをソートするには [クラブ] の下の [名前] フィールドを選択する必要があります。ソート順序が昇順の場合、現在のクラブのエントリは Irons、Knitters、Lambs の順にリストされ、降順の場合、この逆の順序でリストされます。プレイヤーのリストをソートしたければ、[プレイヤー] フィールドを選択する必要があります。リストに設定されているソート順序でソートされます。
- 合計
-
選択されたフィールドのすべての値を合計します。結果はユーザの指定したフィールドに保存されます。例えば、各フットボール クラブの合計得点を表示するには、[トーナメント] の下の [得点] フィールドを選択し、結果を出力するフィールドの名前を指定します。
- コピー
-
選択されたフィールドからユーザの指定したフィールドに対してコピー操作を実行します。コピーするフィールドを選択すると、そのフィールドとその下のすべてのフィールド (もしあれば) が、指定した新しいフィールドにコピーされます。この操作は階層の同じレベルに対して実行されます。
- 名前の変更
-
選択されたフィールドに対して名前変更操作を実行して、ユーザの指定した新しい名前に変更します。
次のサンプル XML コードは、リスト変換機能のリファレンスとして利用できます。
<?xml version="1.0"?>
<sports_details>
<sports name="football">
<clubs>
<club name="Knitters">
<player>Samuel</player>
<player>Messi</player>
<player>kaka</player>
<player>Alan</player>
<coach>Stuart</coach>
<Tournament name="Football League">
<result>won</result>
<points>4</points>
</Tournament>
<Tournament name="UEFA">
<result>draw</result>
<points>2</points>
</Tournament>
</club>
<club name="Lambs">
<player>Ronaldo</player>
<player>Neymar</player>
<player>Zlatan</player>
<player>Mesut</player>
<coach>Ivan</coach>
<Tournament name="Airtel League">
<result>draw</result>
<points>2</points>
</Tournament>
<Tournament name="Champions League">
<result>lost</result>
<points>0</points>
</Tournament>
</club>
<club name="Irons">
<player>Scott</player>
<player>Paul</player>
<player>John</player>
<player>Andrew</player>
<coach>Jeff</coach>
<Tournament name="CAF">
<result>won</result>
<points>4</points>
</Tournament>
<Tournament name="Copa America">
<result>won</result>
<points>4</points>
</Tournament>
</club>
</clubs>
</sports>
<sports name="badminton">
<clubs>
<club name="Shuttlers">
<player>Saina</player>
<player>Viktor</player>
<player>Chen</player>
<player>Srikanth</player>
<coach>Jan</coach>
<Tournament name="Olympic Games">
<result>won</result>
<points>4</points>
</Tournament>
<Tournament name="Commonwealth Games">
<result>won</result>
<points>4</points>
</Tournament>
</club>
<club name="Choppers">
<player>Wang</player>
<player>Sindhu</player>
<player>Carolina</player>
<player>Li Xuerui</player>
<coach>Ratchanok</coach>
<Tournament name="World Junior">
<result>draw</result>
<points>2</points>
</Tournament>
<Tournament name="Uber Cup">
<result>draw</result>
<points>2</points>
</Tournament>
</club>
<club name="Lobbers">
<player>Nozomi</player>
<player>Chou</player>
<player>Marc</player>
<player>Lin</player>
<coach>Kevin</coach>
<Tournament name="World Senior">
<result>won</result>
<points>4</points>
</Tournament>
<Tournament name="Thomas Cup">
<result>won</result>
<points>4</points>
</Tournament>
</club>
</clubs>
</sports>
</sports_details>