{{ transformations:IterateTableAction.png}}
====== ITERATE TABLE ======
Category: Workflow / Internal \\
\\
=====Description=====
This action is similar to [[transformations:iterate|Iterate]] action but allows passing a table to an iterated project. //Iterate table// has two inputs:
- The output of the previous action
- The external table passed into the called module/project (referenced in the Action settings)
This action works as follows: It takes a dataset from another table (input #2, above), passes it to the called module or project, and runs it as many times as there are rows in the input dataset (input #1, above).
The iterated module/project should use the [[transformations:input|Input]] action to receive the external table.\\
\\
=====Use cases=====
This action is helpful when multiple calculations with different parameters have to be performed on the same dataset (e.g. financial stress testing).\\
\\
=====Action settings=====
^Setting^Description^
|Other table|Select the table from the current project that will be passed into the called module (or project).|
|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.|
|Iteration mode|Choose whether to just iterate the called module (or project) and //not// return any results, or iterate and return\\ a dataset. Options: //Iterate// or //Iterate, append results// (and select the Result table from\\ the called module or project).|
|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 column, text/number, or parameter).|
* Setting can be specified using a [[:parameters|parameter]].\\
\\
=====Remarks=====
This action provides significantly increased performance in cases when the iterated project needs to operate with the same dataset in each iteration.\\
\\
=====Examples=====
**Mode: Iterate** — do not return anything from the iterated module, i.e. just run it one or several times. (top image, below)\\
{{ https://easymorph.com/images/learn/iterate-mode3.png }}
**Mode: Iterate and append results** — run the module one or several times, return a table (the result dataset) from each iteration, and append all result datasets into one, which becomes the output of the "Iterate table" action. (bottom image, above)\\
\\
====Community examples====
* [[https://community.easymorph.com/t//1625/4|Create a new table with columns based on row values]] ([[https://community.easymorph.com/uploads/short-url/4oGLUNDHrUfB971H80ciuOAtOTG.morph|Project]]; Module: //Main//; Group: //Tab 1//; Table: //Table 1//; Action position: //4//)
* [[https://community.easymorph.com/t//1749/2|Match action - matching multiple values]] ([[https://community.easymorph.com/uploads/short-url/klCJavldZpx8EQbvoCRW6a6cYlr.morph|Project]]; Module: //Main//; Group: //Tab 1//; Table: //All matches//; Action position: //2//)
* [[https://community.easymorph.com/t//2008/2|“Printed” Text File: Could EasyMorph import this?]] ([[https://community.easymorph.com/uploads/short-url/kIb1qqOJb9WK6D1N1jFZdnHzC46.morph|Project]]; Module: //Main//; Group: //Tab 1//; Table: //TIMESHEET.txt (2)//; Action position: //4//)
* [[https://community.easymorph.com/t//1625/4|Create a new table with columns based on row values]] ([[https://community.easymorph.com/uploads/short-url/4oGLUNDHrUfB971H80ciuOAtOTG.morph|Project]]; Module: //Main//; Group: //Tab 1//; Table: //Table 1//; Action position: //4//)
\\
=====See also=====
* [[transformations:input|Input]]
* [[transformations:iterate|Iterate]]
* [[transformations:iteratecolumn|Iterate column]]
* Read [[http://easymorph.com/learn/iterations.html|Iterations and loops in EasyMorph]] for more details regarding this action.