Forum Discussion
Reduce table in table to columns
I use Power Query for Microsoft Excel. I get my data from an API. I transform it and group it. Afterwards, I receive a table which has table entries. I don't need tables there, I need the first column of the table in the table.
The first column of the column is only the name of the column, so I need to remove the first column.
I tried to use the "Extend columns" functionality (symbol with the two arrows in the header). But then I get the two columns in the first column. Doing the same in the second column, brings up lines of the first column multiplied with number of lines of the second columns.
I just want to see the columns in a table withe original number of results.
How can I achieve this?
Expand the column
My code after the API request. This request is not provided.
result = Quelle[result],
rowsList = result[rowsList],
#"In Tabelle konvertiert" = Table.FromList(rowsList, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Erweiterte Column1" = Table.ExpandListColumn(#"In Tabelle konvertiert", "Column1"),
#"Erweiterte Column2" = Table.ExpandRecordColumn(#"Erweiterte Column1", "Column1", {"value", "columnName"}, {"Column1.value", "Column1.columnName"}),
#"Neu angeordnete Spalten" = Table.ReorderColumns(#"Erweiterte Column2",{"Column1.columnName", "Column1.value"}),
#"Gruppierte Zeilen" = Table.Group(#"Neu angeordnete Spalten", {"Column1.columnName"}, {{"Anzahl", each _, type table [Column1.columnName=nullable text, Column1.value=nullable text]}}),
#"Transponierte Tabelle2" = Table.Transpose(#"Gruppierte Zeilen"),
#"Höher gestufte Header2" = Table.PromoteHeaders(#"Transponierte Tabelle2", [PromoteAllScalars=true]),
#"Erweiterte 1" = Table.ExpandTableColumn(#"Höher gestufte Header2", "11", {"Column1.value"}, {"11.Column1.value"})
in
#"Erweiterte 1"
Hello Anonymous
check out this dynamically solution. It chooses the first column of your single tables that contains the name "value" and uses it's data for the column. Be aware that the source step it's just here to reproduce your scenario. The transformation you can see in the step "CreateListOfValueColumns "
let Source = #table ( type table [Column1=table, 204 = table], { { #table ( type table [Column1.ColumnName= text, Column1.Value= any ], { { "name1", "value1" }, { "name2", "value2" }, { "name3", "value3" } } ), #table ( type table [Column1.ColumnName= text, Column1.Value= any ], { { "name1", "abc" }, { "name2", "abcddd" } } ) } } ), CreateListOfValueColumns = Table.TransformRows ( Source, (rec)=> Table.TransformColumns ( Record.ToTable(rec), { { "Value", (tbl)=> Table.Column(tbl,List.Select(Table.ColumnNames(tbl), each Text.Contains(Text.Upper(_), "VALUE")){0}) } } )[Value] ){0}, CreateFinalTable = Table.FromColumns(CreateListOfValueColumns,Table.ColumnNames(Source)) in CreateFinalTableCopy paste this code to the advanced editor in a new blank query to see how the solution works. If you need to implement it in your data source let me know
If this post helps or solves your problem, please mark it as solution (to help other users find useful content and to acknowledge the work of users that helped you)
Kudoes are nice too
Have fun
Jimmy
7 Replies
- AnonymousNot applicable
another way, all steps done by GUI
1) group by name and make a duplicate. Let call the "original" a and the "copy" b.
2) drill down both tables of column all (Table aaa on query a and table bbb on query b)
3) add column index to both tables
4) finally merge tables a and b on Index column
you get this:
then expand tables on column b and delete the unnecessary columns and you are done
- FowmySuper User
Anonymous
Do you need to extract only the first column from each table and combine it as one table?
Sample Data will be great.________________________
If my answer was helpful, please consider Accept it as the solution to help the other members find it
Click on the Thumbs-Up icon if you like this reply 🙂
- AnonymousNot applicable
Fowmy I added more details and code to my post.
- FowmySuper User
- AnonymousNot applicable
Actually, it is easy to understand.
Maybe this example helps you to understand better, what is the expectation:
I have a result with exactly two result lines.
Now I expand the first colum, so that the stored table there will be included in the table but only with one column.
And I use the column value:
Then I get the two lines in the first column:
Now I expand the second column, because I need data there and not tables:
Now I got 4 lines, instead of two, because for each line the previous line is expanded and that is wrong.
In the end the results will be multiplied, and not just showing the results of the table columns in one table.