In what order are features processed when there are parallel transformers

Liz Sanderson
Liz Sanderson
  • Updated

FME Version

  • FME 2016.x

Introduction

In what order are features processed when there are multiple streams of data?

Normally one would not care about this but there are some cases where it can make a difference (such as when writing to tables that have foreign key constraints on them, or when global variables are involved) or if you want to take advantage of transformers that have a 'feature' first option to improve performance (i.e. PointOnAreaOverlayer, Areas First parameter).

In FME2016 or newer, if you have multiple connection links coming out of a single output port of a transformer, junction orsource feature type you can right-click on a connection and there is an option to decide what order the connections should fire in - Set Connection Run Time Order.

connectionorder.png

 

'Creator' transformers (such as Creator, SQLCreator , PythonCreator, have a similar option that controls the order they are triggered:

creatorruntimeorder.png

FeatureHolder or Sorter can be used to hold back a set of features while a parallel data flow passes through, or to ensure they are in the correct sequence. Both are 'blocker' transformers and will cache your data, which ca have an impact on performance. FeatureHolder may not work if there are other 'blocker' transformers in the workflow.

You can also use the Sampler to identify when the last feature has passed, and use this to trigger another transformer that has an Initiator input port, such as FeatureReader or SQLExecutor. Configure the Sampler with:

Sampling Rate (N): 1
Sampling Type: Last N Features

featureorderingwithsampler.png

In this workspace, Sampler used in this way allows the PointOnAreaOverlayer to take advantage of Areas First, improving performance

Was this article helpful?

Comments

0 comments

Please sign in to leave a comment.