Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Hi Everyone,
This is my first post and not sure if this is the correct way to post questions and request help.
I am trying to traspose/Pivot data in Power Query, Below is what I am trying to do:
Current Table:
CODE | Wave | date | #ofunits |
B001 | 1 | Jul 1 2020 | 5 |
B001 | 2 | Jul 10 2020 | 5 |
B001 | 3 | Aug 2 2020 | 10 |
B002 | 1 | Jul 3 2020 | 5 |
B002 | 2 | Jul 29 2020 | 10 |
B002 | 3 | Sep 12 2020 | 5 |
B002 | 4 | Oct 2 2020 | 5 |
B003 | 1 | May 20 2020 | 6 |
B003 | 2 | Jun 7 2020 | 18 |
I would like to change this table to the following:
Requested Table:
CODE | Wave | date | #ofunits | Wave2 | date2 | #ofunits2 | Wave3 | date3 | #ofunits3 | Wave4 | date4 | #ofunits4 |
B001 | 1 | Jul 1 2020 | 5 | 2 | Jul 10 2020 | 5 | 3 | Aug 2 2020 | 10 | |||
B002 | 1 | Jul 3 2020 | 5 | 2 | Jul 29 2020 | 10 | 3 | Sep 12 2020 | 5 | 4 | Oct 2 2020 | 5 |
B003 | 1 | May 20 2020 | 6 | 2 | Jun 7 2020 | 18 |
Thank you in advance for your support!
Solved! Go to Solution.
@Anonymous
generic function:
// output
let
Source = Table.FromRecords(Json.Document(Binary.Decompress(Binary.FromText("i65WcvZ3cVWyUnIyMDBU0lEKTyxLVbIy1FFKSSwBMpS8SnMUDBWMDIwMgJLK+WmleZklxUpWprU62HUaoeo0IEGrMVyrY2m6ghGmTkMDVK1GONxrTNBSIxzuNbIkxVaEg4NTCxQMsbgYp7UmcK3+ySXY/Iqm0xiLV30TK4H6MLWa4dKK7Nc8BXMsXrWojQUA",BinaryEncoding.Base64),Compression.Deflate))),
result = fnTrans(Source, {"CODE"})
in
result
// fnTrans
(sTbl as table, groupList as list)=>
let
fn=(tbl as table)=>
let
fd = List.Skip(Table.ColumnNames(tbl)),
nfd = groupList&List.TransformMany({1..Table.RowCount(tbl)}, each fd, (x,y)=>y&Text.From(x))
in Table.FromRows({Record.ToList((Table.SelectColumns(tbl, groupList)){0})&List.Combine(Table.ToRows(Table.SelectColumns(tbl, fd)))}, nfd),
group = Table.Group(sTbl, groupList, {"t", fn}, 0)[t],
result = Table.Combine(group)
in
result
Here is another generic function
Value.ReplaceType((table as table) =>
let
combineColumnName = Text.NewGuid()
in
Value.ReplaceType((primaryAttributeColumn as text, subAttributeColumns as list) as function =>
Value.ReplaceType((primaryAttributeValues as list) =>
let
primaryValueColumnNameFn = each primaryAttributeColumn & "." & Text.From(_),
primaryValueColumnNames = List.Transform(primaryAttributeValues, primaryValueColumnNameFn),
attributeColumnToText = Table.TransformColumns(table, {primaryAttributeColumn, primaryValueColumnNameFn, type text}),
mergeNewColumns = Table.CombineColumns(attributeColumnToText, subAttributeColumns, Value.ReplaceType(each Record.FromList(_, subAttributeColumns), type function(values as list) as Type.TableRow(Value.Type(Table.SelectColumns(#table(Value.Type(attributeColumnToText), {}), subAttributeColumns)))), combineColumnName),
pivot = Table.Pivot(mergeNewColumns, primaryValueColumnNames, primaryAttributeColumn, combineColumnName),
expandPivotColumn = List.Accumulate(primaryValueColumnNames, pivot, (t, c) => Table.ExpandRecordColumn(t, c, subAttributeColumns, List.Transform(subAttributeColumns, each c & "." & _)))
in
expandPivotColumn,
type function (primaryAttributeValues as (type {text} meta [Documentation.AllowedValues = List.Distinct(Table.Column(table, primaryAttributeColumn))])) as {text} meta [Documentation.Description = "Pivot Multiple (Step 3)", Documentation.LongDescription = "Step 3: Confirm the primary attribute values"]),
type function
(
primaryAttributeColumn as (type text meta [Documentation.AllowedValues = Table.ColumnNames(table)]),
subAttributeColumns as (type {text} meta [Documentation.AllowedValues = Table.ColumnNames(table)])
) as function meta [Documentation.Description = "Pivot Multiple (Step 2)", Documentation.LongDescription = "Step 2: Choose the primary attribute, and the list of sub attributes"]
),
(type function (table as table) as table) meta [Documentation.Description = "Pivot Multiple", Documentation.LongDescription = "Step 1: Choose a table to perform a multiple Pivot"]
)
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
102 | |
48 | |
19 | |
13 | |
11 |