{{ transformations:EnumerateRowsAction.png}}
====== ENUMERATE ROWS ======
Category: Transform / Basic\\
\\
=====Description=====
This action adds a new column with row numbers.\\
Rows can be enumerated:
*for the entire table
*inside groups defined by combinations of values in particular columns (row numbers restart from 1 inside each group)
*to a specified value (once this value is reached, enumeration restarts at 1)
\\
=====Use cases=====
*Create unique row IDs for datasets that do not already possess a unique key field.
*To define an original record order with which to re-sort records downstream.
*Prepare datasets for pivoting by setting a defined number of rows and row groupings (repetitions).
\\
=====Action settings=====
^Setting^Description^
|Enumerate in groups|Select this option to restart row numbering at each unique value in the selected column(s). |
|Repeat after*|Enter or set a maximum value after which the count resets to 1. Check the //Add column with repetition count// to\\ add a column (named "Repetition") that displays the count of the repetition.|
|Column list|This list appears when the //Enumerate in groups// is selected. Select which columns are taken into account to\\ form unique values when numbering columns. Column numbering will restart at 1 for each unique value or value\\ combination across all selected columns.|
* Setting can be specified using a [[:parameters|parameter]].\\
\\
=====Examples=====
**Source table:**
^Province ^City ^Amount ^Total Tax ^
|ON |Toronto | 1000| 125|
|ON |Ottawa | 1000| 125|
|ON |Brampton | 2000| 250|
|QC |Montreal | 2000| 270|
|QC |Quebec City | 2000| 270|
\\
After transformation (enumeration for entire table).
^RowNo ^Province ^City ^Amount ^Total Tax ^
| 1|ON |Toronto | 1000| 125|
| 2|ON |Ottawa | 1000| 125|
| 3|ON |Brampton | 2000| 250|
| 4|QC |Montreal | 2000| 270|
| 5|QC |Quebec City | 2000| 270|
\\
After transformation (enumeration for each Province).
^RowNo ^Province ^City ^Amount ^Total Tax ^
| 1|ON |Toronto | 1000| 125|
| 2|ON |Ottawa | 1000| 125|
| 3|ON |Brampton | 2000| 250|
| 1|QC |Montreal | 2000| 270|
| 2|QC |Quebec City | 2000| 270|
\\
After transformation (enumeration for each Province-Amount pairing).
^RowNo ^Province ^City ^Amount ^Total Tax ^
| 1|ON |Toronto | 1000| 125|
| 2|ON |Ottawa | 1000| 125|
| 1|ON |Brampton | 2000| 250|
| 1|QC |Montreal | 2000| 270|
| 2|QC |Quebec City | 2000| 270|
\\
After transformation (Repeat after "2").
^RowNo ^Province ^City ^Amount ^Total Tax ^
| 1|ON |Toronto | 1000| 125|
| 2|ON |Ottawa | 1000| 125|
| 1|ON |Brampton | 2000| 250|
| 2|QC |Montreal | 2000| 270|
| 1|QC |Quebec City | 2000| 270|
\\
After transformation (Repeat after "2", Add column with repetition count).
^RowNo ^Repetition ^Province ^City ^Amount ^Total Tax ^
| 1| 1|ON |Toronto | 1000| 125|
| 2| 1|ON |Ottawa | 1000| 125|
| 1| 2|ON |Brampton | 2000| 250|
| 2| 2|QC |Montreal | 2000| 270|
| 1| 3|QC |Quebec City | 2000| 270|
\\
====Community examples====
* [[https://community.easymorph.com/t//1332/3|String manipulation (REVERSE)]] ([[https://community.easymorph.com/uploads/short-url/67c52KIJt323kknw2Q4vOvlAJ05.morph|Project]]; Module: //Main//; Group: //Tab 1//; Table: //Using actions//; Action position: //4//)
* [[https://community.easymorph.com/t//1351/1|How to order columns by a list of columns]] ([[https://community.easymorph.com/uploads/short-url/bKeuXUgwKo1alDrA03LY5z3tPJv.morph|Project]]; Module: //Main//; Group: //Tab 1//; Table: //Reordered columns//; Action position: //2//)
* [[https://community.easymorph.com/t//1649/14|Update existing data in a database table]] ([[https://community.easymorph.com/uploads/short-url/hauw3ZALjf9UqXAOP8prtLUNbxH.morph|Project]]; Module: //Main//; Group: //Tab 1//; Table: //Sample data//; Action position: //4//)
* [[https://community.easymorph.com/t//1849/4|Iterate through a set of column]] ([[https://community.easymorph.com/uploads/short-url/5icrGfTGgzbmG2l5AuSiqb43QvR.morph|Project]]; Module: //Main//; Group: //Tab 1//; Table: //in.csv//; Action position: //2//)
* [[https://community.easymorph.com/t//2454/4|.txt to .csv - Multiple Line & Character Length HELP!]] ([[https://community.easymorph.com/uploads/short-url/m3PqCDwhBrNEG2xW23QqEvl8RbX.morph|Project]]; Module: //Main//; Group: //Group 1//; Table: //SAMPLE.txt//; Action position: //4//)
\\
=====See also=====
*[[transformations:enumerategroups|Enumerate groups]]
*[[transformations:sequence|Sequence]]