Forum Discussion
Stev_data
4 years agoFrequent Visitor
Merge repeated row headers
Hi guys,
I have recently started using Powerquery and have managed to filter the data from an excel csv into the 'Current' table shown below. I am trying to change the 'Current' into the 'Expected Result' shown below
Current
| Column4 | Column5 | Column8 | Column10 | Column13 | Column14 | Column15 | Value |
| Defect : 181 POOR TRACK REPAIR Details : | |||||||
| File No | Customer | Cct Defect Qty | Batch Cct Qty | Batch Cct Defect % | Defect Cost | W/O No. | |
| 211571 | PS Limited | 1 | 5 | 20 | maj | 881-148-1-104 | |
| Defect :181 POOR TRACK REPAIR Totals : | |||||||
| Defect : 182 POOR SHORT REMOVAL Details : | |||||||
| File No | Customer | Cct Defect Qty | Batch Cct Qty | Batch Cct Defect % | Defect Cost | W/O No. | |
| 211179 | BF Limited | 1 | 18 | 5.555555556 | jap | 51.13333333 | 1380-863-1-106 |
| 211742 | KSLimited | 3 | 30 | 10 | jmw | 53.7 | 1823-5-1-101 |
| 181031 | SK | 3 | 54 | 5.555555556 | maj | 26.16 | 2088-1-14-102 |
| 211499 | QT Ltd | 4 | 384 | 1.041666667 | jmw | 58.73625 | 291-534-1-108 |
| 211654 | CMMLtd | 8 | 24 | 33.33333333 | jmw | 509.5666667 | 82-151-1-104 |
| 211523 | SUTLtd | 1 | 24 | 4.166666667 | jmw | 20.37333333 | 93-230-1-102 |
| 201643 | IELtd | 1 | 600 | 0.166666667 | maj | 5.641666667 | 947-460-11-104 |
| Defect :182 POOR SHORT REMOVAL Totals : | |||||||
| Defect : 183 DAMAGED PAD / HOLE Details : | |||||||
| File No | Customer | Cct Defect Qty | Batch Cct Qty | Batch Cct Defect % | Defect Cost | W/O No. | |
| 181098 | AMLtd | 3 | 32 | 9.375 | jdo | 48.6675 | 1145-145-4-104 |
| 081219 | RK Limited | 2 | 360 | 0.555555556 | jdo | 3.26 | 1750-7-14-102 |
| 171394 | D Ltd | 46 | 1728 | 2.662037037 | aoj | 32.96921995 | 1944-10-86-104 |
| 201652 | Amp | 2 | 110 | 1.818181818 | jdo | 26.76363636 | 2288-7-23-102 |
| 201652 | Amp | 6 | 110 | 5.454545455 | jdo | 80.29090909 | 2288-7-24-102 |
| 201255 | IE Ltd $ | 2 | 840 | 0.238095238 | sab | 4.232276414 | 2375-1-8-106 |
| 151131 | IE Ltd $ | 2 | 540 | 0.37037037 | jdo | 7.74 | 2375-2-19-106 |
| 201438 | QT Ltd | 1 | 108 | 0.925925926 | jdv | 32.41725218 | 291-449-7-108 |
| 211555 | QT Ltd | 1 | 36 | 2.777777778 | navg | 34.32 | 291-536-1-108 |
| 211364 | BSSLtd. | 1 | 42 | 2.380952381 | jdv | 33.03451045 | 642-859-3-213 |
| 201345 | IELtd | 1 | 2640 | 0.037878788 | jdv | 1.241086627 | 947-486-5-104 |
| Defect :183 DAMAGED PAD / HOLE Totals : |
Expected Result
| File No | Customer | Cct Defect Qty | Batch Cct Qty | Batch Cct Defect % | Operator | Defect Cost | W/O No. | DefectType |
| 211571 | PS Limited | 1 | 5 | 20 | maj | 881-148-1-104 | 181 POOR TRACK REPAIR Details : | |
| 211179 | BF Limited | 1 | 18 | 5.555555556 | jap | 51.13333333 | 1380-863-1-106 | 182 POOR SHORT REMOVAL Details : |
| 211742 | KSLimited | 3 | 30 | 10 | jmw | 53.7 | 1823-5-1-101 | 182 POOR SHORT REMOVAL Details : |
| 181031 | SK | 3 | 54 | 5.555555556 | maj | 26.16 | 2088-1-14-102 | 182 POOR SHORT REMOVAL Details : |
| 211499 | QT Ltd | 4 | 384 | 1.041666667 | jmw | 58.73625 | 291-534-1-108 | 182 POOR SHORT REMOVAL Details : |
| 211654 | CMMLtd | 8 | 24 | 33.33333333 | jmw | 509.5666667 | 82-151-1-104 | 182 POOR SHORT REMOVAL Details : |
| 211523 | SUTLtd | 1 | 24 | 4.166666667 | jmw | 20.37333333 | 93-230-1-102 | 182 POOR SHORT REMOVAL Details : |
| 201643 | IELtd | 1 | 600 | 0.166666667 | maj | 5.641666667 | 947-460-11-104 | 182 POOR SHORT REMOVAL Details : |
| 181098 | AMLtd | 3 | 32 | 9.375 | jdo | 48.6675 | 1145-145-4-104 | 183 DAMAGED PAD / HOLE Details : |
| 081219 | RK Limited | 2 | 360 | 0.555555556 | jdo | 3.26 | 1750-7-14-102 | 183 DAMAGED PAD / HOLE Details : |
| 171394 | D Ltd | 46 | 1728 | 2.662037037 | aoj | 32.96921995 | 1944-10-86-104 | 183 DAMAGED PAD / HOLE Details : |
| 201652 | Amp | 2 | 110 | 1.818181818 | jdo | 26.76363636 | 2288-7-23-102 | 183 DAMAGED PAD / HOLE Details : |
| 201652 | Amp | 6 | 110 | 5.454545455 | jdo | 80.29090909 | 2288-7-24-102 | 183 DAMAGED PAD / HOLE Details : |
| 201255 | IE Ltd $ | 2 | 840 | 0.238095238 | sab | 4.232276414 | 2375-1-8-106 | 183 DAMAGED PAD / HOLE Details : |
| 151131 | IE Ltd $ | 2 | 540 | 0.37037037 | jdo | 7.74 | 2375-2-19-106 | 183 DAMAGED PAD / HOLE Details : |
| 201438 | QT Ltd | 1 | 108 | 0.925925926 | jdv | 32.41725218 | 291-449-7-108 | 183 DAMAGED PAD / HOLE Details : |
| 211555 | QT Ltd | 1 | 36 | 2.777777778 | navg | 34.32 | 291-536-1-108 | 183 DAMAGED PAD / HOLE Details : |
| 211364 | BSSLtd. | 1 | 42 | 2.380952381 | jdv | 33.03451045 | 642-859-3-213 | 183 DAMAGED PAD / HOLE Details : |
| 201345 | IELtd | 1 | 2640 | 0.037878788 | jdv | 1.241086627 | 947-486-5-104 | 183 DAMAGED PAD / HOLE Details : |
- Anonymous4 years ago
Hi Stev_data,
You can try to use the following M query codes if it was suitable for your requirement.
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("xVZNc9MwEP0rmg7csKrVt7ilSYBOW1KSUA6dHkwbIJmEMNSF4d+zu1Jsp5QZyqVW7JFs6enp7dudXF4eDLfru81Xe/Ci9Fzbi20PVNc1XbdbBLTqol7fLQ6uXlweCBz97R4tPi2uG/FSQARxPplMxXw6GJ6I6fh8cDwVo0VTL9e34iUDvVquF+Ltlva5u222m8V36uLygvKu+UWYR3Vz/UUM84u9cZn3fH/z4fa2wdGHwwmCS95JA7gA+PJ8Jk6Xm2WzuMEBvaCjaVUANvUKnzFCBTZW+FT2n0/88IHn26am84rHKKcz0OzNZDpHoLPJxeD0KaWDkGjtq3vSAVnISVcuj6NV/Y3egQSTL5pmoqqiN6yn32EGq/HbyayDpLmGIsF+XG1+EpKRgXfSpnIMAAyAYitDHGYnZaWzf5DJ0dRegucgRw6pRRC9Y2ETnezdXJw2RIEwTKQnSGXB0xU6MlEG4zU7JkHljGVGcQfmmcPw7CyDkTqaEY00nRwFSyXpWvyoK3DQMxz5VdPs2ft5RoMdmpWZV5+ZVtKEdodkKm0Uo5WDKvCWvhyPOzCvSGa1h5YVc9L3zp5sqKxHuMemw4Mu/q98MGI0OBu8Ho/E+WAkDsWbyen4yfKBrJcotoMSZ/YtmTlhEMgcqxviYaNEAWmMNkPv4m1bBVUEDWS96UkvqQjE+ByWvaxiQCM1DSA4VYW+jyGASWSN0c7GeZ5mByILrUzAH47q7YrZyuQTEkhML1nCwhTt7IeGccRmsPlWeAFnJcgIpbW8MMGCN9xopDHNAhpwz309MN+COWldbp1qUUmdFLcemO2DaZ5+PKbDimeFXrRZNo3FJmHqEL3b+iPnizZaB7Q0SaQxRJgZsS1FmHfAleQeoCuArFwWLzMMMrRAmLapK2oKLO/blhMukioyTtKOfzmeP3IULAbJadaSKoq1iSLbVRTHR93DyyLLUC5a+rX+8Zm+WMk2zLXJ79cm44n00WyGSLJAcQXWcqcYdMyMVMY6dANt762uoksVVhX8e1BOaqy7V0+0L4qhWJFabPFAaotc0IhtQUGzuUfWkwerQK+eXP0G", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"(blank)" = _t, #"(blank).1" = _t, #"(blank).2" = _t, #"(blank).3" = _t, #"(blank).4" = _t, #"(blank).5" = _t, #"(blank).6" = _t, #"(blank).7" = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"(blank)", type text}, {"(blank).1", type text}, {"(blank).2", type text}, {"(blank).3", type text}, {"(blank).4", type text}, {"(blank).5", type text}, {"(blank).6", type text}, {"(blank).7", type text}}), #"Added Custom" = Table.AddColumn(#"Changed Type", "Defect", each if Text.Contains([#"(blank).7"],"Defect :") then Text.Trim(Text.RemoveRange([#"(blank).7"],0,8)) else null), #"Filled Down" = Table.FillDown(#"Added Custom",{"Defect"}), #"Removed Top Rows" = Table.Skip(#"Filled Down",2), #"Promoted Headers" = Table.PromoteHeaders(#"Removed Top Rows", [PromoteAllScalars=true]), #"Filtered Rows" = Table.SelectRows(#"Promoted Headers", each ([File No] <> " " and [File No] <> "File No")), #"Renamed Columns" = Table.RenameColumns(#"Filtered Rows",{{" ", "Operator"}, {"181 POOR TRACK REPAIR Details :", "DefectType"}}) in #"Renamed Columns"
Regards,Xiaoxin Sheng
1 Reply
- AnonymousNot applicable
Hi Stev_data,
You can try to use the following M query codes if it was suitable for your requirement.
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("xVZNc9MwEP0rmg7csKrVt7ilSYBOW1KSUA6dHkwbIJmEMNSF4d+zu1Jsp5QZyqVW7JFs6enp7dudXF4eDLfru81Xe/Ci9Fzbi20PVNc1XbdbBLTqol7fLQ6uXlweCBz97R4tPi2uG/FSQARxPplMxXw6GJ6I6fh8cDwVo0VTL9e34iUDvVquF+Ltlva5u222m8V36uLygvKu+UWYR3Vz/UUM84u9cZn3fH/z4fa2wdGHwwmCS95JA7gA+PJ8Jk6Xm2WzuMEBvaCjaVUANvUKnzFCBTZW+FT2n0/88IHn26am84rHKKcz0OzNZDpHoLPJxeD0KaWDkGjtq3vSAVnISVcuj6NV/Y3egQSTL5pmoqqiN6yn32EGq/HbyayDpLmGIsF+XG1+EpKRgXfSpnIMAAyAYitDHGYnZaWzf5DJ0dRegucgRw6pRRC9Y2ETnezdXJw2RIEwTKQnSGXB0xU6MlEG4zU7JkHljGVGcQfmmcPw7CyDkTqaEY00nRwFSyXpWvyoK3DQMxz5VdPs2ft5RoMdmpWZV5+ZVtKEdodkKm0Uo5WDKvCWvhyPOzCvSGa1h5YVc9L3zp5sqKxHuMemw4Mu/q98MGI0OBu8Ho/E+WAkDsWbyen4yfKBrJcotoMSZ/YtmTlhEMgcqxviYaNEAWmMNkPv4m1bBVUEDWS96UkvqQjE+ByWvaxiQCM1DSA4VYW+jyGASWSN0c7GeZ5mByILrUzAH47q7YrZyuQTEkhML1nCwhTt7IeGccRmsPlWeAFnJcgIpbW8MMGCN9xopDHNAhpwz309MN+COWldbp1qUUmdFLcemO2DaZ5+PKbDimeFXrRZNo3FJmHqEL3b+iPnizZaB7Q0SaQxRJgZsS1FmHfAleQeoCuArFwWLzMMMrRAmLapK2oKLO/blhMukioyTtKOfzmeP3IULAbJadaSKoq1iSLbVRTHR93DyyLLUC5a+rX+8Zm+WMk2zLXJ79cm44n00WyGSLJAcQXWcqcYdMyMVMY6dANt762uoksVVhX8e1BOaqy7V0+0L4qhWJFabPFAaotc0IhtQUGzuUfWkwerQK+eXP0G", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"(blank)" = _t, #"(blank).1" = _t, #"(blank).2" = _t, #"(blank).3" = _t, #"(blank).4" = _t, #"(blank).5" = _t, #"(blank).6" = _t, #"(blank).7" = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"(blank)", type text}, {"(blank).1", type text}, {"(blank).2", type text}, {"(blank).3", type text}, {"(blank).4", type text}, {"(blank).5", type text}, {"(blank).6", type text}, {"(blank).7", type text}}), #"Added Custom" = Table.AddColumn(#"Changed Type", "Defect", each if Text.Contains([#"(blank).7"],"Defect :") then Text.Trim(Text.RemoveRange([#"(blank).7"],0,8)) else null), #"Filled Down" = Table.FillDown(#"Added Custom",{"Defect"}), #"Removed Top Rows" = Table.Skip(#"Filled Down",2), #"Promoted Headers" = Table.PromoteHeaders(#"Removed Top Rows", [PromoteAllScalars=true]), #"Filtered Rows" = Table.SelectRows(#"Promoted Headers", each ([File No] <> " " and [File No] <> "File No")), #"Renamed Columns" = Table.RenameColumns(#"Filtered Rows",{{" ", "Operator"}, {"181 POOR TRACK REPAIR Details :", "DefectType"}}) in #"Renamed Columns"
Regards,Xiaoxin Sheng