Skip to main content

Fork node

Decision

What it does​

The Fork node copies every input row to each of its outputs, so several downstream branches process the same data. A Router sends each row to one port; a Fork sends every row to every port in use.

Placed between Start and several Sources, a Fork also sets whether those Sources run at the same time or one at a time.

When to use​

  • The same rows feed several independent chains, for example a Load and a Notification, or a summary and a full extract.
  • A downstream branch needs the complete input before it starts (use Buffer All).
  • Several Sources must run in a fixed sequence, for example to fill a Cache before another branch reads it.

Configure​

Select the node and press Configure to open Configure Fork.

Save and Done stay unavailable while a required setting is missing. Cancel discards the changes made since the dialog opened or was last saved. A message confirms each save.

  • Outputs: how many outputs are in use, from 2 to 10. The + beside Out on the card adds one. Reducing the count deletes the edges on the outputs that are removed.
  • Mode:
    • Streaming (default): forwards rows to every output as they arrive.
    • Buffer All: waits for the full input stream, then sends it to every output.
  • Output Labels: an optional name for each output, up to 40 characters. The label shows on the port and on its edges in place of the default name, such as Out 1. A blank label shows the default name. Reducing the Outputs count clears the labels of the outputs that are removed.
  • Execution Order: applies when the Fork sits between Start and several Sources.
    • Current behavior (auto): Sources with separate downstream branches run at the same time. Sources that share a downstream node run one at a time.
    • Sequential (one source at a time): Sources run one after another, in the order they were added to the canvas.
    • Parallel (all sources at once): Sources run at the same time.

Ports​

PortDirectionKindNotes
inindataRows to copy.
out1 ... out10outdataOne port per output. Every row goes to every port in use. Ports past the Outputs count are not shown. A label changes the displayed name only; the port stays out1 and so on.
erroroutcontrolReceives the input rows when the node fails.

Examples​

Write and notify. Source > Fork (Outputs 2) > out1 to a Transform and a Load, out2 to a Notification node. Both receive every row.

Full extract and summary. Source > Fork > out1 to a Transform and a Load that write every row, out2 to a Compute node that totals by day, then a Transform and a Load.

Run two Sources in order. Start > Fork (Execution Order Sequential) > out1 to Source A, out2 to Source B. The Sources run one after another, in the order they were added to the canvas.

Troubleshooting​

SymptomCauseWhat to do
An edge disappearedThe Outputs count was reduced.Raise the count and connect the output again.
Downstream branches start lateMode is Buffer All, which waits for every row.Use Streaming unless a branch needs the whole input at once.
A branch receives rows in several batches under Buffer AllLarge inputs are delivered in batches.No action needed. Every row still reaches every output.
The run fails with a Variable node and Parallel orderA Variable node is reachable from several Sources set to run at once.Use Sequential or Current behavior (auto).