トランスフォーマー (Transformers)

FMEリファレンス > トランスフォーマー
最終更新: 2021-12-23 | FME 2021.2.0.1

Workbench のインターフェースにおいて、データに対するさまざまな変換処理はトランスフォーマーと呼ばれるオブジェクトによって表現されます。
多種多様な変換処理を行うために FME は多数のトランスフォーマーを用意しており、それらは Transformer Gallery に表示されます。

Categorized フォルダのサブフォルダには処理対象とするフィーチャーのタイプや処理内容によって分類されたトランスフォーマーが含まれ、All フォルダには全てのトランスフォーマーが含まれます。


トランスフォーマーのヘルプ

Transformer Gallery でトランスフォーマー名を選択、または、キャンバス上のトランスフォーマーを選択すると Help ウィンドウにそのトランスフォーマーのヘルプが表示され、機能や使用方法を確認することができます。
Help ウィンドウが表示されていないときは、Workbench メニュー: View > Windows > Help によって表示させてください。

Workbench メニュー: Help > FME Transformers で全てのトランスフォーマーのヘルプを閲覧することもできます。
また、次のドキュメントでは全てのトランスフォーマーの概要がコンパクトに整理されています。
FME Transformer Reference Guide [PDF]


複数のトランスフォーマーの連結

FMEには多数のトランスフォーマーが用意されているとはいえ、単一のトランスフォーマーだけでワークスペースが目的とする全てのデータ変換が行えるとは限りません。そのようなデータ変換は複数のトランスフォーマーを組み合わせて使用することによって実現され、キャンバス上では、連結された一連のトランスフォーマー群によってデータ変換のプロセスがグラフィカルに表現されます。

大規模で複雑なデータ変換でも複数のトランスフォーマーを組み合わせて使用することによって実現可能にし、そのプロセスを分かり易く表現するということは、FMEのキーコンセプトのひとつです。


フィーチャーベース (Feature-Based) とグループベース (Group-Based)

ほとんどのトランスフォーマーには入力ポートと出力ポートがあり、ワークスペースの実行時に入力ポートからひとつずつフィーチャーを受け取り、出力ポートから処理後のフィーチャーをひとつずつ出力します。

フィーチャーを受け取ってから何らかのアクションをおこすという点は全てのトランスフォーマーに共通ですが、フィーチャーを受け取ってから出力するまで間の動作の仕方によって、トランスフォーマーは大きく次の2つのタイプに分類されます。

  • フィーチャーベーストランスフォーマー (Feature-Based Transformers): フィーチャーごとの個別処理
    フィーチャーを受け取ったら直ちに何らかの処理を行い、処理後のフィーチャーを出力してから次のフィーチャーを受け取ります。
  • グループベーストランスフォーマー (Group-Based Transformers): 複数のフィーチャーを使った処理
    複数のフィーチャーを一時的にため込み、それらを使って何らかの処理を行ってから処理後のフィーチャーの出力を始めます。

フィーチャーベーストランスフォーマーは入力順と同じ順番でフィーチャーを出力しますが、グループベーストランスフォーマーではフィーチャーの入力順が保たれるとは限りません。

グループベーストランスフォーマーに属する多くのトランスフォーマーには Group By パラメーターがあり、受け取ったフィーチャーを Group By パラメーターに指定された属性の値が等しいものでグループ化し、グループ単位で処理を行うことができます。

グループベーストランスフォーマーは、ひとつずつ送られてきたフィーチャーの流れをそこでブロックする (妨げる) ことから、ブロッキングトランスフォーマー (Blocking Transformers) と呼ばれることもあります。

なお、「フィーチャーを受け取ってから何らかのアクションをおこす」という性質を feature driven (フィーチャーによって動かされる) と表現することもあります。裏返して言えば、トランスフォーマーは「フィーチャーを受け取らなければ何もしない」ということです。
例外的に Creator, SQLCreator などの入力ポートを持たないトランスフォーマーは、フィーチャーを受け取らなくても処理を行います。

原則としてトランスフォーマーはフィーチャーベースかグループベースのどちらかに分類できますが、例外的に、パラメーターの設定によってどちらの動作をするかが決まるトランスフォーマーもあります。例えば Generalizer は、Preserve Shared Boundaries パラメーターに No (デフォルト) が設定されたときはフィーチャーベースとして動作し、Yes が設定されたときはグループベースとして動作します。また、PythonCaller は、パラメーターとして設定されたスクリプトの定義内容によって、フィーチャーベース、グループベースのどちらのタイプとなるかが決まります。


標準のトランスフォーマーとカスタムトランスフォーマー

トランスフォーマーには、FME に標準で含まれているトランスフォーマー (Regular Transformers) とユーザーが定義したカスタムトランスフォーマー (Custom Transformers) があり、カスタムトランスフォーマーには組込型 (Embedded) とリンク型 (Linked) の2種類の使い方があります。

それらはキャンバス上で次のようにオブジェクトの色によって区別されますが、ワークスペースへの追加や他のオブジェクトとの接続などの基本的な操作方法は同じです。