# Run steps once per item

Control / flow

A variant of [Branch or loop](https://meridian.online/operations/branch-or-loop).

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

Page: <https://meridian.online/operations/branch-or-loop/run-steps-once-per-item>

## Status

Not built yet.

arcform does not do this yet; it would live in how a Protocol runs. [Its place on the roadmap](https://meridian.online/roadmap#branch-or-loop)

## What other tools call it

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

- Azure Data Factory: [`For Each`](https://learn.microsoft.com/en-us/azure/data-factory/control-flow-for-each-activity) (read 2026-09-27)
- Alteryx Designer: [`Control Parameter`](https://help.alteryx.com/current/en/designer/tools/interface-tools/control-parameter-tool.html) (read 2026-09-27)
- Duckle: [`For Each`](https://github.com/slothflowlabs/duckle/blob/f85f8960edfb6efbf4cb89d58a7b32e16df0e867/website/docs/components.html) (read 2026-09-25)
- EasyMorph: [`Iterate`](https://help.easymorph.com/doku.php?id=transformations:iterate) (read 2026-09-27)
- EasyMorph: [`Iterate column`](https://help.easymorph.com/doku.php?id=transformations:iteratecolumn) (read 2026-09-27)
- EasyMorph: [`Iterate table`](https://help.easymorph.com/doku.php?id=transformations:iteratetable) (read 2026-09-27)
- AWS Glue: [`FlatMap`](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-transforms-flat-map.html) (read 2026-09-27)
- AWS Glue: [`MapToCollection`](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-transforms-MapToCollection.html) (read 2026-09-27)
- KNIME Analytics Platform: [`Chunk Loop Start`](https://api.hub.knime.com/nodes/*d25EcU2lz6RoE3gB?details=full) (read 2026-09-27)
- KNIME Analytics Platform: [`Column List Loop Start`](https://api.hub.knime.com/nodes/*NmCHLnBIGbvnDkb6?details=full) (read 2026-09-27)
- KNIME Analytics Platform: [`Group Loop Start`](https://api.hub.knime.com/nodes/*7a8fxq51Z1jrgXeM?details=full) (read 2026-09-27)
- KNIME Analytics Platform: [`Interval Loop Start`](https://api.hub.knime.com/nodes/*cS6y40vANWKQ0mfn?details=full) (read 2026-09-27)
- KNIME Analytics Platform: [`Loop End`](https://api.hub.knime.com/nodes/*jMYlf7Kg3kAlY_9z?details=full) (read 2026-09-27)
- KNIME Analytics Platform: [`Loop End (Column Append)`](https://api.hub.knime.com/nodes/*CCMhDNWHYFXV506q?details=full) (read 2026-09-27)
- KNIME Analytics Platform: [`Table Row to Variable Loop Start`](https://api.hub.knime.com/nodes/*q7loejCZ1HWH5hUr?details=full) (read 2026-09-27)
- KNIME Analytics Platform: [`Variable Loop End`](https://api.hub.knime.com/nodes/*DVAx3BnVGfzP7ddX?details=full) (read 2026-09-27)
- KNIME Analytics Platform: [`Window Loop Start`](https://api.hub.knime.com/nodes/*TEcctovYo9zMzP39?details=full) (read 2026-09-27)
- Polars: [`GroupBy.__iter__`](https://docs.pola.rs/api/python/stable/reference/dataframe/group_by.html) (read 2026-09-27)
- RapidMiner Studio: [`Loop Attribute Subsets`](https://docs.rapidminer.com/latest/studio/operators/utility/process_control/loops/loop_attribute_subsets.html) (read 2026-09-27)
- RapidMiner Studio: [`Loop Attributes`](https://docs.rapidminer.com/latest/studio/operators/utility/process_control/loops/loop_attributes.html) (read 2026-09-27)
- RapidMiner Studio: [`Loop Batches`](https://docs.rapidminer.com/latest/studio/operators/utility/process_control/loops/loop_batches.html) (read 2026-09-27)
- RapidMiner Studio: [`Loop Clusters`](https://docs.rapidminer.com/latest/studio/operators/utility/process_control/loops/loop_clusters.html) (read 2026-09-27)
- RapidMiner Studio: [`Loop Collection`](https://docs.rapidminer.com/latest/studio/operators/utility/process_control/loops/loop_collection.html) (read 2026-09-27)
- RapidMiner Studio: [`Loop Data Fractions`](https://docs.rapidminer.com/latest/studio/operators/utility/process_control/loops/loop_data_fractions.html) (read 2026-09-27)
- RapidMiner Studio: [`Loop Data Sets`](https://docs.rapidminer.com/latest/studio/operators/utility/process_control/loops/loop_data_sets.html) (read 2026-09-27)
- RapidMiner Studio: [`Loop Examples`](https://docs.rapidminer.com/latest/studio/operators/utility/process_control/loops/loop_examples.html) (read 2026-09-27)
- RapidMiner Studio: [`Loop Labels`](https://docs.rapidminer.com/latest/studio/operators/utility/process_control/loops/loop_labels.html) (read 2026-09-27)
- RapidMiner Studio: [`Loop Parameters`](https://docs.rapidminer.com/latest/studio/operators/utility/process_control/loops/loop_parameters.html) (read 2026-09-27)
- RapidMiner Studio: [`Loop Values`](https://docs.rapidminer.com/latest/studio/operators/utility/process_control/loops/loop_values.html) (read 2026-09-27)
- RapidMiner Studio: [`Process Windows`](https://docs.rapidminer.com/latest/studio/operators/modeling/time_series/windowing/process_windows.html) (read 2026-09-27)
- SQLMesh: [`@EACH`](https://github.com/SQLMesh/sqlmesh/blob/23b237cea7218cc8f338b89c14f0957394a0003b/docs/concepts/macros/sqlmesh_macros.md) (read 2026-09-27)
- Talend: [`tFlowToIterate`](https://help.qlik.com/talend/en-US/components/8.0/orchestration/orchestration-component) (read 2026-09-27)
- Talend: [`tForeach`](https://help.qlik.com/talend/en-US/components/8.0/orchestration/orchestration-component) (read 2026-09-27)
- Talend: [`tIterateToFlow`](https://help.qlik.com/talend/en-US/components/8.0/orchestration/orchestration-component) (read 2026-09-27)
- VisiData: [`repeat-input-selected`](https://github.com/saulpw/visidata/blob/7609212ec2febafa9caba7183cbebfaf49627909/visidata/features/repeat.py#L35) (read 2026-09-23)
