Before I get to the point, I'd like to give short information about transpose and unpivot options at Power Query Editor, in case you don't know. Transpose option converts rows to columns and columns to rows in the given table. On the other hand, the unpivot option converts horizontally stored data into a vertical format. After unpivoting, you get two new columns. They are called attribute and value. The attribute column consists of data of header of columns and the value column consists of whatever you have under header columns. But, to be able to transpose or unpivot successfully, there is one thing you should be aware of. And this post is about that one thing.
In this table, I have countries and their GDP per capita values starting from 2000 until 2020. This table format is not ideal for analyzing the data because it has too many columns that actually should be rows. That's why I want to convert rows to columns and columns to rows by transposing. After I click on the transpose option which is on the transform menu, this is the table I get.
Where is the data about years? Nowhere. It's gone. Power BI swallowed it. Why? To do a successful transpose operation, we need empty column headers on top of the table that Power BI can eat, which has no value for us. So I deleted the last step from the applied steps pane and clicked on this:
This little fella here demote the headers of the table to the first row and creates column headers named Column1, Column2... After applying this step, I transposed again and this is the result I got:
Now it works correctly. It didn't swallow anything that I need. So what about unpivoting? Let's say I'm still not happy with the result I got and I want to convert country columns to rows. After choosing country columns and clicking on unpivot columns option on the transform menu, this is what happens:
Country names were supposed to be the attribute column, not the value column. Why has this happened? It has happened because for unpivoting, Power BI takes the column headers and converts them to attributes. Meaning I should have country names as column headers. To do that, I deleted the last step from the applied steps pane and clicked on use first row as headers option from the transform menu.

And what this fella does is, exactly the opposite of what use headers as first row does. It promotes the first row of the table into column headers. After clicking on this option, I choose the columns with country names and unpivot.
It worked correctly this time. After both transposing and unpivoting, Power BI has added new column headers named Column1, Column2... You can get rid of them again by clicking use first rows headers option. Long story short, if you're not getting the result you dreamt of after transposing or unpivoting, the column headers you have, or the column headers you don't have might be the reason.
Comments