Control / flow · All operations

Run steps once per item

A variant of Branch or loop

Run a set of steps once for each row, value, column, group, chunk or table, and collect the results.

Status

In arcform

Not built yet

arcform does not do this yet; it would live in how a Protocol runs. Its place on the roadmap

What other tools call it

Meridian's classification; an independent blind rating agreed on 95.7% of 324 rows (variant, version 3).

Alteryx Designer (1)
  • Control Parameterread 2026-09-27

    Input of a batch macro: the macro is reconfigured and rerun for each incoming record

AWS Glue (2)
  • FlatMapread 2026-09-27

    Apply a transform to each frame of a collection and keep the results as a collection

  • MapToCollectionread 2026-09-27

    Apply a transform to each frame of a collection

Azure Data Factory (1)
  • For Eachread 2026-09-27

    Iterate over a collection and run the inner activities for each item

Duckle (1)
  • For Eachread 2026-09-25

    run a referenced pipeline once per upstream row

EasyMorph (3)
  • Iterateread 2026-09-27

    Run another module or project once per row of the table

  • Iterate columnread 2026-09-27

    Run another module or project once per column and append the returned columns

  • Iterate tableread 2026-09-27

    Run another module or project once per row, passing another table to it

KNIME Analytics Platform (9)
  • Chunk Loop Startread 2026-09-27

    Open a loop that processes a consecutive chunk of rows per iteration

  • Column List Loop Startread 2026-09-27

    Open a loop that iterates over the columns of a table

  • Group Loop Startread 2026-09-27

    Open a loop that processes one group of rows per iteration

  • Interval Loop Startread 2026-09-27

    Open a loop that steps a numeric variable through an interval

  • Loop Endread 2026-09-27

    Close a loop and stack the tables from every iteration row-wise

  • Close a loop and join the tables from every iteration column-wise on RowID

  • Open a loop with one iteration per row, exposing that row's values as flow variables

  • Variable Loop Endread 2026-09-27

    Close a loop collecting only the flow variables produced, not data

  • Window Loop Startread 2026-09-27

    Open a loop that slides a fixed-size window of rows over the table, one step per iteration

Polars (1)
  • GroupBy.__iter__read 2026-09-27

    Iterate over the groups as pairs of key and sub-frame

RapidMiner Studio (12)
  • Loop Attribute Subsetsread 2026-09-27

    Run a subprocess for every combination of columns within a size range

  • Loop Attributesread 2026-09-27

    Run a subprocess once per selected column

  • Loop Batchesread 2026-09-27

    Run a subprocess on successive batches of rows

  • Loop Clustersread 2026-09-27

    Run a subprocess once per cluster, on that cluster's rows

  • Loop Collectionread 2026-09-27

    Run a subprocess once per object in a collection

  • Loop Data Fractionsread 2026-09-27

    Run an inner learner on only a given fraction of the rows

  • Loop Data Setsread 2026-09-27

    Run a subprocess once per input table

  • Loop Examplesread 2026-09-27

    Run a subprocess once per row

  • Loop Labelsread 2026-09-27

    Run a subprocess once per label column

  • Loop Parametersread 2026-09-27

    Run a subprocess for every combination of given parameter values

  • Loop Valuesread 2026-09-27

    Run a subprocess once per distinct value of a column

  • Process Windowsread 2026-09-27

    Slide a window over a series and run an inner subprocess on each window

SQLMesh (1)
  • @EACHread 2026-09-27

    Apply an anonymous function to each item of a list and emit the results, like a for loop

Talend (3)
  • tFlowToIterateread 2026-09-27

    Turn each input row into an iteration, storing its values in global variables

  • tForeachread 2026-09-27

    Loop over a list of values through an iterate link

  • tIterateToFlowread 2026-09-27

    Turn the iterations over a list into a flow of rows

VisiData (1)

Background

An enumeration, also known as a determinate loop, is a loop intended to iterate over all the items of a collection.[1] In Azure Data Factory, the ForEach activity iterates over a collection and runs chosen activities in a loop, much like a foreach loop in a programming language.[2] In EasyMorph, the Iterate action calls another project once for each row of a table, assigning the called project's parameters from the table's fields.[3]

When to use it

An enumeration is less flexible than a loop that stops on a condition, but more predictable, and it is easier to guarantee that an enumeration terminates.[1] Before looping over rows or groups, check whether one grouped query over the whole table would do the same work. (Meridian's view)

An Azure Data Factory ForEach activity runs its iterations in parallel unless its isSequential property is set to true, since the default is false.[2] When an Azure Data Factory ForEach runs in parallel, it runs at most 50 iterations at once.[2] Parallel ForEach iterations in Azure Data Factory that write to different files in one folder are fine, but iterations writing at once to the same file most likely cause an error.[2] In Azure Data Factory, the Set Variable activity cannot be used inside a ForEach that runs in parallel, because pipeline variables are global to the whole pipeline.[2] Run iterations in parallel only when each one writes somewhere of its own and reads nothing that another iteration changes. (Meridian's view)

EasyMorph's Iterate action can either halt the project when an iteration fails, or collect the errors in a new Iteration errors column and continue.[3] Decide before the loop runs whether one failed item should stop the rest, and keep a record of which items failed. (Meridian's view)

The method

In KNIME, a loop runs between a loop start node and a Loop End node, and every node in between is executed once per iteration.[4] KNIME's Loop End node collects the results of the iterations by concatenating their tables row-wise.[4] KNIME's Group Loop Start node processes one group of rows per iteration, and by default sorts the table on the grouping columns before the loop starts.[5]

In Azure Data Factory, the @item() expression returns the current item of a ForEach loop, so the inner activities can use it in their properties.[2] An Azure Data Factory ForEach activity cannot be nested inside another ForEach or an Until loop, and it takes at most 100,000 items.[2] In its Iterate and append results mode, EasyMorph's Iterate action returns a table from each iteration and appends them all into one.[3] When EasyMorph appends the iteration results, columns with the same name are concatenated into one column, and columns with unique names are extended with empty cells.[3]

In SQLMesh, the @EACH macro transforms a list of items by applying a function to each of them, analogous to a for loop.[6] When @EACH is used in the SELECT clause of a query, SQLMesh prints each result and separates the items with commas.[6]