{{ transformations:IterateColumnAction.png}}
====== ITERATE COLUMN ======
Category: Workflow / Internal \\
\\
=====Description=====
Iteratively call another module or project and pass the columns of the input dataset to the called module/project, one column per iteration.
The called module (or project) must have the [[transformations:input|Input]] action in order to receive a column passed from the calling module. During iterations, the //Input// action is populated with one column passed from the calling module at a time. The column will be automatically given a specific temporary name that can be used in module calculations, thus making it possible to apply the same calculation logic to many columns with different names.
\\
=====Use cases=====
The action allows applying the same calculation logic to all columns of a dataset and is useful for dealing with matrix tables or performing complex data quality checks for multiple columns.
\\
=====Action settings=====
^Setting^Description^
|Module/Project to run*|Select whether to call a module (within the current project), or an external project (.morph file), then select the\\ module, or browse to the project file.|
|Column name|Enter the name that will be assigned to all columns as they are passed to the called module.|
|Mode|Choose whether to just iterate the called module (or project) and //not// return any results, or iterate and return\\ columns. Options: //Iterate, ignore results// or //Iterate, append result columns// (and select the Result table from\\ the called module or project; returned columns will be appended side-by-side).|
|Assign parameters|Select the parameter(s) in the called module (or project) to pass values in through, and enter the associated value(s)* (can be a text/number, or parameter).|
|Exclude selected columns|Check to exclude selected columns from being iterated. Select the columns to be skipped and not be sent to the called module.|
* Setting can be specified using a [[:parameters|parameter]].\\
\\
=====Remarks=====
Note that the action automatically gives the columns a specified name when they are passed to the called module. As a result, the [[transformations:input|Input]] action of the called module always contains one column with the same name, regardless of what it was called in the calling action. This allows using a workflow designed for one column name to work over all columns in the source dataset.
{{ :undefined:iterate-column-schema.png?nolink |}}
Optionally, the resulting datasets of the called module can be appended side to side into one tabular dataset. In this case, only the column with the same name as in //Input// will be returned back to the calling module and renamed back to its original name. Other columns from the result table will be ignored and discarded.
\\
=====Examples=====
**Mode: Iterate, ignore results** — do not return anything from the iterated module, i.e. just run it one or several times. (top image, below)\\
{{ transformations:iterate-mode - columns.png }}
**Mode: Iterate, append result columns** — run the module one or several times, return a table (the result dataset) from each iteration, append all result columns into one, which becomes the output of the "Iterate column" action. (bottom image, above)\\
\\
====Community examples====
* [[https://community.easymorph.com/t//1689/2|How to use iterate column action]] ([[https://community.easymorph.com/uploads/short-url/ezX9RWE3v2mqtc04PpyZ0hLB9nZ.morph|Project]]; Module: //Main//; Group: //Tab 1//; Table: //Table 2//; Action position: //3//)
* [[https://community.easymorph.com/t//1870/4|Send email - Add table extract to outlook email message]] ([[https://community.easymorph.com/uploads/short-url/xnfDuDCTN6iJgA4pEcQQsRIZET3.morph|Project]]; Module: //Main//; Group: //Tab 1//; Table: //Column widths (added for convenience)//; Action position: //2//)
\\
=====See also=====
* [[transformations:input|Input]]
* [[transformations:iterate|Iterate]]
* [[transformations:iteratetable|Iterate table]]
* Read [[http://easymorph.com/learn/iterations.html|Iterations and loops in EasyMorph]] for more details regarding this action.