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-27Input of a batch macro: the macro is reconfigured and rerun for each incoming record
AWS Glue (2)
FlatMapread 2026-09-27Apply a transform to each frame of a collection and keep the results as a collection
MapToCollectionread 2026-09-27Apply a transform to each frame of a collection
Azure Data Factory (1)
For Eachread 2026-09-27Iterate over a collection and run the inner activities for each item
Duckle (1)
For Eachread 2026-09-25run a referenced pipeline once per upstream row
EasyMorph (3)
Iterateread 2026-09-27Run another module or project once per row of the table
Iterate columnread 2026-09-27Run another module or project once per column and append the returned columns
Iterate tableread 2026-09-27Run another module or project once per row, passing another table to it
KNIME Analytics Platform (9)
Chunk Loop Startread 2026-09-27Open a loop that processes a consecutive chunk of rows per iteration
Column List Loop Startread 2026-09-27Open a loop that iterates over the columns of a table
Group Loop Startread 2026-09-27Open a loop that processes one group of rows per iteration
Interval Loop Startread 2026-09-27Open a loop that steps a numeric variable through an interval
Loop Endread 2026-09-27Close a loop and stack the tables from every iteration row-wise
Loop End (Column Append)read 2026-09-27Close a loop and join the tables from every iteration column-wise on RowID
Table Row to Variable Loop Startread 2026-09-27Open a loop with one iteration per row, exposing that row's values as flow variables
Variable Loop Endread 2026-09-27Close a loop collecting only the flow variables produced, not data
Window Loop Startread 2026-09-27Open a loop that slides a fixed-size window of rows over the table, one step per iteration
Polars (1)
GroupBy.__iter__read 2026-09-27Iterate over the groups as pairs of key and sub-frame
RapidMiner Studio (12)
Loop Attribute Subsetsread 2026-09-27Run a subprocess for every combination of columns within a size range
Loop Attributesread 2026-09-27Run a subprocess once per selected column
Loop Batchesread 2026-09-27Run a subprocess on successive batches of rows
Loop Clustersread 2026-09-27Run a subprocess once per cluster, on that cluster's rows
Loop Collectionread 2026-09-27Run a subprocess once per object in a collection
Loop Data Fractionsread 2026-09-27Run an inner learner on only a given fraction of the rows
Loop Data Setsread 2026-09-27Run a subprocess once per input table
Loop Examplesread 2026-09-27Run a subprocess once per row
Loop Labelsread 2026-09-27Run a subprocess once per label column
Loop Parametersread 2026-09-27Run a subprocess for every combination of given parameter values
Loop Valuesread 2026-09-27Run a subprocess once per distinct value of a column
Process Windowsread 2026-09-27Slide a window over a series and run an inner subprocess on each window
SQLMesh (1)
@EACHread 2026-09-27Apply an anonymous function to each item of a list and emit the results, like a for loop
Talend (3)
tFlowToIterateread 2026-09-27Turn each input row into an iteration, storing its values in global variables
tForeachread 2026-09-27Loop over a list of values through an iterate link
tIterateToFlowread 2026-09-27Turn the iterations over a list into a flow of rows
VisiData (1)
repeat-input-selectedread 2026-09-23Rerun the previous command once per selected row
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]
Sources
- [1]Loop (statement) - Wikipediasecondary source
- [2]ForEach activity - Azure Data Factory & Azure Synapse | Microsoft Learndocumentation
- [3]ITERATE [EasyMorph Help]documentation
- [4]Loop Enddocumentation
- [5]Group Loop Startdocumentation
- [6]sqlmesh/docs/concepts/macros/sqlmesh_macros.md at 23b237cea7218cc8f338b89c14f0957394a0003b · SQLMesh/sqlmesh · GitHubdocumentation