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 の作成」を参照してください。

Location Intelligence モジュールのユーザの場合、Custom Transform は空間データセットにアクセスできます。『Spectrum Spatial ガイド』(support.pb.com) の「ステージ」セクションを参照してください。

名前の変更
フィールドの名前を変更します。データフローの既存のフィールド名の一覧から選択することも、別の名前を入力することもできます。
ステータス
[ステータス] フィールドの値を [成功] または [失敗] に変更します。[失敗] に設定されている場合は、オプションの [説明] と [コード] も設定できます。

トランスフォームの書式設定

大文字小文字
文字を大文字または小文字に変更します。
マスク
フィールドに対して文字を適用、またはフィールドから文字を削除します。詳細については、「 Mask Transform の使用」を参照してください。
パディング
フィールドの左側または右側に文字を追加します。

文字列関係のトランスフォーム

前後の空白削除
フィールドの先頭と末尾にある空白を削除します。また、一連の空白 (複数の連続する空白等) を単一の空白文字に置き換えます。
部分文字列の削除
文字列をフィールドからすべて削除します。例えば、"CA" を StateProvince フィールドから削除します。
部分文字列
一連の連続する文字をフィールド間でコピーします。
トリム
フィールドの左側、右側、または両側から、指定された文字を削除します。このトランスフォームでは大文字と小文字が区別されます。
切り捨て
指定された個数の文字をフィールドの左側と右側から削除します。

リスト変換

この機能を利用すると、"input from read from XML" のような、リストに作用する canned (缶詰) 変換を作成できます。

リスト変換を定義する手順は次のとおりです。
  1. リスト変換操作を選択します。右側のツリー ビューに入力フィールドが表示されます。
  2. 操作を適用するツリー内の有効なフィールドを選択します。入力フィールドのツリー ビューの下に操作のプロパティが表示されます。
  3. 操作のプロパティを指定し、[追加] をクリックします。変換が親ウィンドウ ([Transformer オプション] ウィンドウ) 内のリストに追加されます。
フィールドを作成

ユーザの選択したリスト タイプ フィールドの下にフィールドを作成できます。例えば、Football というリストに 2 つのクラブ Knitters と Lambs があり、ユーザが新しいクラブ 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>