{{ 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<sup>*</sup>|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)<sup>*</sup> (can be a column, text/number, or parameter).|
<sup>*</sup> 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.

