Forum Discussion
Create a Column which labels table rows as Section 1, Section 2, 3, 4 according to number of rows
Hi - I have a table with a variable amount of rows. Whenever the data is refreshed (once a week) it changes.
I would like to count all the rows and then divide those rows into 4 sections, more of less.
For instance, if I have 100 rows:
Row 1-25 = Section 1
Row 26-50 - Section 2
etc
if I have 200 rows:
Row 1-50 = Section 1
etc
Is it possible to do in PQ?
Many thanks Linnil
please use my code as a new step, instead of puting it in the add column function.
click the "fx" label beside the formula edit bar, then copy code into formula area
=let
AAA=Table.RowCount(#"Added Index")
in Table.FromColumns(Table.ToColumns(#"Added Index")&{List.Transform({0..AAA-1},each "Section "&Text.From(Number.IntegerDivide(_,Number.RoundUp(AAA/4))+1))},Table.ColumnNames(#"Added Index")&{"Section"}))
15 Replies
- wdx223_DanielCommunity Champion
NewStep=let a=Table.RowCount(PreviousStepName) in Table.FromColumns(Table.ToRows(PreviousStepName)&{List.Transform({0..a-1},each "Section "&Text.From(Number.IntegerDivide(_,Number.RoundUp(a/4))+1))},Table.ColumnNames(PreviousStepName)&{"Section"})
- LinnilHelper III
Hi Daniel - thanks so much. This is on the right track. I've changed variable a to AAA so I could understand the script better.
When I created the custom column with this Let statement, I got this error:
Expression.Error: The count of 'columns' (1445) doesn't match that of 'columnNames' (11).
Details:
[List]So the number of rows is correct (1445).
And my table (with the new column we just created for Sections) has 11 columns.
Can you help me solve this mismatch?
Thanks 🙂- wdx223_DanielCommunity Champion
Could you show your code?
- BA_PeteSuper User
Hi Linnil,
You can try using the following in a custom step:
Table.Split(PreviousStepName, Number.RoundUp(Table.RowCount(PreviousStepName) / 4))This will split your table into four tables - not perfectly evenly, but it's fast and simple.
Pete
- LinnilHelper III
Thanks Pete - I ran a few scenarios trying this out before coming to the Community. Not quite what I need but thanks for your suggestion. Very kind of you to respond.