FME Transformers: 2024.1

Filters and Joins
Related Transformers


Merges the attributes and/or geometry of one set of features onto another set of features, based on matching key attribute values and expressions.

Jump to Configuration

Typical Uses

  • Combining attributes and/or geometry from two different streams of features, based on a common key attribute value or expression.

How does it work?

The FeatureMerger receives two streams of features via its input ports.

Requestor: Requestors are the features that will receive new attributes and/or geometry.

Supplier: Suppliers provide attributes and/or geometry to be merged onto the Requestors.

Matches between Requestor and Supplier are identified according to the Join On configuration in the parameters dialog. The Join conditions can be simple or complex, using attribute values, constants, functions, or a combination of any of these in expression form. Multiple join conditions can be defined (features must meet all conditions to match).

When a Requestor finds a matching Supplier, the attributes and/or geometry from the Supplier are merged onto the Requestor.

  • If the Requestor already has an attribute that the Supplier also has, the Requestor's original value for that attribute can be preserved or overridden.
  • A single Supplier may be used by many Requestors.
  • Many Suppliers can be merged onto a single Requestor.
  • When attribute names conflict, you can choose whether Requestor or Supplier attribute values are maintained by using the Conflict Resolution parameter, and whether null values follow the same behavior by using the Ignore Nulls parameter.

Requestor features match Supplier features when every pair of keys (which support expressions) specified in the Join On table has the same value for both the Requestor and Supplier features.


Usage Notes

  • For simple joins, the FeatureJoiner may provide better performance than the FeatureMerger. However, the FeatureJoiner only accepts attribute values as keys and not constructed expressions, and does not support list attributes. Additionally, the FeatureMerger is able to (optionally) restrict output to one feature in the case of multiple matching Suppliers, whereas the FeatureJoiner will create multiple features for all matches.
  • For complex joins using SQL syntax, or more than two input feature streams, consider using the InlineQuerier.
  • Where multiple FeatureMergers are required, consider using the InlineQuerier instead.
  • If all the data to be queried already exists in a SQL-capable data source, it will be more efficient to use the SQLCreator or SQLExecutor, which allows the queries and filtering of the data to be executed directly by the database before it enters the FME environment.
  • To perform a join between features already in the workspace and data residing in an external database, consider the DatabaseJoiner.
  • To perform a join where the Requestor key is a list attribute, consider using the ListBasedFeatureMerger.
  • To join features on matching geometry, consider the Matcher. The FeatureMerger does not accept geometry as a key.
  • To join all Suppliers to all Requestors when there is no common join value, setting Join On > Requestor and Join On > Supplier to the same constant value (for example, 1 and 1) will merge all to all. Enable Generate List to store multiple matches per feature.

Choosing a Feature Joining Method

Many transformers can perform data joining based on matching attributes, expressions and/or geometry. When choosing one for a specific joining task, considerations include the complexity of the join, data format, indexing, conflict handling, and desired results. Some transformers use SQL syntax, and some access external databases directly. They may or may not support list attribute reading and creation.

Generally, choosing the one that is most specific to the task you need to accomplish will provide the optimal performance results. If there is more than one way to do it (which is frequently the case), time spent on performance testing alternate methods may be worthwhile. Performance may vary greatly depending on the existence of key indexes when reading external tables (as opposed to features already in the workspace).


Input Ports

Output Ports


Editing Transformer Parameters

Transformer parameters can be set by directly entering values, using expressions, or referencing other elements in the workspace such as attribute values or user parameters. Various editors and context menus are available to assist. To see what is available, click beside the applicable parameter.

For more information, see Transformer Parameter Menu Options.


Processing Behavior


Feature Holding


Dependencies None

FME Community

The FME Community is the place for demos, how-tos, articles, FAQs, and more. Get answers to your questions, learn from other users, and suggest, vote, and comment on new features.

Search for all results about the FeatureMerger on the FME Community.


Examples may contain information licensed under the Open Government Licence – Vancouver, Open Government Licence - British Columbia, and/or Open Government Licence – Canada.