Power Query 是做數據轉換、數據清洗的利器,不管是在Excel還是PowerBI,如何玩好Power Query是成功建模的必不可少的一步。
今天要get到的一個新技巧:行列轉換
如何將多行數據串聯到一列
場景:很多時候需要把多行的數據串聯起來
假設有數據如下,如何在Excel或者PowerBI做數據轉換得到需要的結果呢?
名字 | 產品 | 數量 |
---|---|---|
張三 | 蘋果 | 4 |
張三 | 雪梨 | 2 |
李四 | 香蕉 | 8 |
李四 | 橙子 | 3 |
李四 | 蘋果 | 10 |
需求:將各人買的東西和數量串聯起來到一行上。
1. 先把產品和數量串聯起來: 添加列》
= Table.AddColumn(#"Changed Type", "產品數量", each [產品] & ":" & Text.From([數量]))
2. PowerQuery編輯器》轉換》分組》 分組依據:名字 新列名:數據 操作:所有行
= Table.Group(#"新列 產品數量", {"名字"}, {{"數據", each _, type table [名字=text, 產品=text, 數量=number, 產品數量=text]}})
3. 添加列》 自定義列》 = Table.AddColumn(分組的行, "產品數量2", each Table.Column([數據],"產品數量"))
= Table.AddColumn(分組的行, "產品數量2", each Table.Column([數據],"產品數量"))
4. 點擊【產品數量2】列的擴展按鈕》提取值》分隔符:逗號 (任何你想要的間隔字符)
= Table.TransformColumns(已添加自定義, {"產品數量2", each Text.Combine(List.Transform(_, Text.From), ","), type text})
哇啦!結果顯示出來啦! 蘋果:4,雪梨:2 香蕉:8,橙子:3,蘋果:10
5. 刪除多余的列就得到結果啦!
= Table.RemoveColumns(提取值,{"數據"})
作業:
如果數據如下,如何得到結果呢?
名字 | 分類 | 產品 | 數量 |
---|---|---|---|
張三 | 水果 | 蘋果 | 4 |
張三 | 水果 | 雪梨 | 2 |
李四 | 水果 | 香蕉 | 8 |
李四 | 水果 | 橙子 | 3 |
李四 | 水果 | 蘋果 | 10 |
張三 | 餅干 | 桃酥 | 3 |
張三 | 餅干 | 杏仁餅 | 8 |
李四 | 餅干 | 龍須餅 | 3 |
李四 | 餅干 | 老婆餅 | 5 |
李四 | 餅干 | 老公餅 | 2 |
所需結果: