Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

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.

Reply
cottrera
Post Prodigy
Post Prodigy

Power Query - Aggregate and transpose help

Hi 

 

Can you please tell me how I can use power query to transform this table

Job_NumberVoidPKCost TypeBase Amount
IWDEC570C570VoidsLABOUR33
IWDEC634C634VoidsLABOUR110
IWDEC641C641VoidsLABOUR110
IWDEC685C685VoidsLABOUR44
IWDEC851C851VoidsLABOUR44
IWDEC851C851VoidsLABOUR77
IWEL611L611VoidsLABOUR263.5
IWDEC808C808VoidsLABOUR110
IWDEC808C808VoidsLABOUR187
IWEL588L588VoidsLABOUR263.5
IWDEC561C561VoidsLABOUR187
IWDEC561C561VoidsLABOUR187
IWKB156B156VoidsLABOUR233.75
IWKB156B156VoidsLABOUR233.75
IWKB254B254VoidsLABOUR233.75
IWDEC536C536VoidsMATERIALS11.02
IWDEC590C590VoidsLABOUR77
IWDEC815C815VoidsLABOUR187
IWDEC815C815VoidsLABOUR110
IWGT244T244VoidsLABOUR44
IWGT106T106VoidsLABOUR33
IWGT126T126VoidsLABOUR22
IWGT53GT53VoidsLABOUR27.5
IWGT68GT68VoidsLABOUR99
IWST19ST19VoidsMATERIALS4.61
IWST19ST19VoidsMATERIALS48.61
IWGT67GT67VoidsMATERIALS235.57
IWKB254B254VoidsLABOUR233.75
IWKB254B254VoidsLABOUR110
IWKB160B160VoidsLABOUR233.75
IWKB160B160VoidsLABOUR151.25
IWKB202B202VoidsMATERIALS53.18
IWDEC659C659VoidsLABOUR44
IWDEC536C536VoidsMATERIALS22.08
IWDEC550C550VoidsMATERIALS46.73
IWDEC578C578VoidsLABOUR99
IWDEC578C578VoidsLABOUR99
IWDEC616C616VoidsLABOUR110
IWDEC642C642VoidsLABOUR187
IWKB160B160VoidsLABOUR233.75
IWKB160B160VoidsLABOUR82.5
IWKB160B160VoidsLABOUR233.75
IWKB160B160VoidsLABOUR27.5
IWKB202B202VoidsMATERIALS210.87
IWKB202B202VoidsMATERIALS190.83
IWKB202B202VoidsLABOUR233.75
IWKB202B202VoidsLABOUR233.75
IWKB202B202VoidsLABOUR233.75
IWKB202B202VoidsLABOUR137.5
IWKB202B202VoidsLABOUR41.25
IWKB160B160VoidsSCP888.68
IWKB55KB55VoidsMATERIALS92.84
IWKB55KB55VoidsMATERIALS45.62
IWKB261B261VoidsMATERIALS57
IWKB60KB60VoidsMATERIALS31.18
IWKB254B254VoidsLABOUR82.5
IWKB156B156VoidsMATERIALS21
IWKB254B254VoidsMATERIALS120.11
IWKB254B254VoidsMATERIALS44.46
IWKB283B283VoidsMATERIALS110.5
IWKB44KB44VoidsMATERIALS257.98
IWKB57KB57VoidsSCP926.16
IWKB222B222VoidsSCP3723.46

 

 

Into this.  

Job_NumberVoidPKLABOURMATERIALSSCPGrand Total
IWDEC536C536Voids 33.1 33.1
IWDEC550C550Voids 46.73 46.73
IWDEC561C561Voids374  374
IWDEC570C570Voids33  33
IWDEC578C578Voids198  198
IWDEC590C590Voids77  77
IWDEC616C616Voids110  110
IWDEC634C634Voids110  110
IWDEC641C641Voids110  110
IWDEC642C642Voids187  187
IWDEC659C659Voids44  44
IWDEC685C685Voids44  44
IWDEC808C808Voids297  297
IWDEC815C815Voids297  297
IWDEC851C851Voids121  121
IWEL588L588Voids263.5  263.5
IWEL611L611Voids263.5  263.5
IWGT106T106Voids33  33
IWGT126T126Voids22  22
IWGT244T244Voids44  44
IWGT53GT53Voids27.5  27.5
IWGT67GT67Voids 235.57 235.57
IWGT68GT68Voids99  99
IWKB156B156Voids467.521 488.5
IWKB160B160Voids962.5 888.681851.18
IWKB202B202Voids880454.88 1334.88
IWKB222B222Voids  3723.463723.46
IWKB254B254Voids660164.57 824.57
IWKB261B261Voids 57 57
IWKB283B283Voids 110.5 110.5
IWKB44KB44Voids 257.98 257.98
IWKB55KB55Voids 138.46 138.46
IWKB57KB57Voids  926.16926.16
IWKB60KB60Voids 31.18 31.18
IWST19ST19Voids 53.22 53.22

 

I basically need to aggregate the base amount and transpose the cost type.

 

thank you Richard

1 ACCEPTED SOLUTION
BA_Pete
Super User
Super User

Hi @cottrera ,

 

I've included the code to do what you want below, but the first question is: why do you want to do this? The original format of your data is the optimum and most efficient structure for reporting. Using expensive resources to move the structure further away from optimum is not generally considered best practice.

 

The answer to your actual question:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("vZXBbtswDIbfJedCEClRoo5pFwTFMmxovO1Q9NbLTj30/YGRcmDJk6J4xbDTbxsfSIr8RT8/7x5/fjo8ULS7u53Kj7dfr+/yfNrff/3+JA/O7V7uLlhwXjGRBgOwFechcx5ucEyZY2o47wvGlMOJfBSL8YIdTgGUUmkoDM5QFc9yjmd5fIoRxyUxsWIqtxJTyAcRGQTcyn2+BwryRaVN7JyJ9AESSZ2gMia1ShdylW4J+mU/HZ4e96dz7qSxWMFpNmJqjRirkzNk44iMOzTilhEeJ/R6GpXrBjtOYPUgKtcviVA4U9jpIS4UOXlXaaG4WOE4Bc5YaC2T0gU6T5DkXaXXX2/EJNtILqikjHPm2EPRkaH412YYkmUe4sNgsw9D64I/HXudBAKDVWqxmaa22DsROQNcLSZKeTFRGm6csbURja1iEs3WJtvtfjCx2rQUeV7Ig8lvxwLkOkVu7W2c9zaOF8q/GA+j2cRtj1jdnFvjRrCmOtAYhiSwG8BX3f5/SXDjBhQLry5G29HzwzcdEMtC4AUj3aQqvRYlNOy3oZ5MwFJl/oWpdG9lGVEuUqXHOSi3d7hk1qZr/nZriwwCruyB1sBW2HvjQ2HZZZZdN7CYtFSbf1Eq3WIpmlTNKs4DiOuJJgwGquw4OwRxjbmILlf58hs=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Job_Number = _t, VoidPK = _t, #"Cost Type" = _t, #"Base Amount" = _t]),
    chgTypes = Table.TransformColumnTypes(Source,{{"Job_Number", type text}, {"VoidPK", type text}, {"Cost Type", type text}, {"Base Amount", type number}}),
    pivotCostType = Table.Pivot(chgTypes, List.Distinct(chgTypes[#"Cost Type"]), "Cost Type", "Base Amount", List.Sum),
    addGrandTotal = Table.AddColumn(pivotCostType, "grandTotal", each List.Sum({[LABOUR],[MATERIALS],[SCP]}))
in
    addGrandTotal

 

Pete



Now accepting Kudos! If my post helped you, why not give it a thumbs-up?

Proud to be a Datanaut!




View solution in original post

4 REPLIES 4
BA_Pete
Super User
Super User

Hi @cottrera ,

 

I've included the code to do what you want below, but the first question is: why do you want to do this? The original format of your data is the optimum and most efficient structure for reporting. Using expensive resources to move the structure further away from optimum is not generally considered best practice.

 

The answer to your actual question:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("vZXBbtswDIbfJedCEClRoo5pFwTFMmxovO1Q9NbLTj30/YGRcmDJk6J4xbDTbxsfSIr8RT8/7x5/fjo8ULS7u53Kj7dfr+/yfNrff/3+JA/O7V7uLlhwXjGRBgOwFechcx5ucEyZY2o47wvGlMOJfBSL8YIdTgGUUmkoDM5QFc9yjmd5fIoRxyUxsWIqtxJTyAcRGQTcyn2+BwryRaVN7JyJ9AESSZ2gMia1ShdylW4J+mU/HZ4e96dz7qSxWMFpNmJqjRirkzNk44iMOzTilhEeJ/R6GpXrBjtOYPUgKtcviVA4U9jpIS4UOXlXaaG4WOE4Bc5YaC2T0gU6T5DkXaXXX2/EJNtILqikjHPm2EPRkaH412YYkmUe4sNgsw9D64I/HXudBAKDVWqxmaa22DsROQNcLSZKeTFRGm6csbURja1iEs3WJtvtfjCx2rQUeV7Ig8lvxwLkOkVu7W2c9zaOF8q/GA+j2cRtj1jdnFvjRrCmOtAYhiSwG8BX3f5/SXDjBhQLry5G29HzwzcdEMtC4AUj3aQqvRYlNOy3oZ5MwFJl/oWpdG9lGVEuUqXHOSi3d7hk1qZr/nZriwwCruyB1sBW2HvjQ2HZZZZdN7CYtFSbf1Eq3WIpmlTNKs4DiOuJJgwGquw4OwRxjbmILlf58hs=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Job_Number = _t, VoidPK = _t, #"Cost Type" = _t, #"Base Amount" = _t]),
    chgTypes = Table.TransformColumnTypes(Source,{{"Job_Number", type text}, {"VoidPK", type text}, {"Cost Type", type text}, {"Base Amount", type number}}),
    pivotCostType = Table.Pivot(chgTypes, List.Distinct(chgTypes[#"Cost Type"]), "Cost Type", "Base Amount", List.Sum),
    addGrandTotal = Table.AddColumn(pivotCostType, "grandTotal", each List.Sum({[LABOUR],[MATERIALS],[SCP]}))
in
    addGrandTotal

 

Pete



Now accepting Kudos! If my post helped you, why not give it a thumbs-up?

Proud to be a Datanaut!




Hi BA_Peter thank you for your response . The code works perfectly. In response as to why I am doing this. Its for a colleage and I will menstion your best practice comments

 

RIchard

Vijay_A_Verma
Super User
Super User

Open a blank query - Home - Advanced Editor - Remove everything from there and paste the below code to test (later on when you use the query on your dataset, you will have to change the source appropriately)

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("vZXBbtswDIbfJedCEClRoo5pFwTFMmxovO1Q9NbLTj30/YGRcmDJk6J4xbDTbxsfSIr8RT8/7x5/fjo8ULS7u53Kj7dfr+/yfNrff/3+JA/O7V7uLlhwXjGRBgOwFechcx5ucEyZY2o47wvGlMOJfBSL8YIdTgGUUmkoDM5QFc9yjmd5fIoRxyUxsWIqtxJTyAcRGQTcyn2+BwryRaVN7JyJ9AESSZ2gMia1ShdylW4J+mU/HZ4e96dz7qSxWMFpNmJqjRirkzNk44iMOzTilhEeJ/R6GpXrBjtOYPUgKtcviVA4U9jpIS4UOXlXaaG4WOE4Bc5YaC2T0gU6T5DkXaXXX2/EJNtILqikjHPm2EPRkaH412YYkmUe4sNgsw9D64I/HXudBAKDVWqxmaa22DsROQNcLSZKeTFRGm6csbURja1iEs3WJtvtfjCx2rQUeV7Ig8lvxwLkOkVu7W2c9zaOF8q/GA+j2cRtj1jdnFvjRrCmOtAYhiSwG8BX3f5/SXDjBhQLry5G29HzwzcdEMtC4AUj3aQqvRYlNOy3oZ5MwFJl/oWpdG9lGVEuUqXHOSi3d7hk1qZr/nZriwwCruyB1sBW2HvjQ2HZZZZdN7CYtFSbf1Eq3WIpmlTNKs4DiOuJJgwGquw4OwRxjbmILlf58hs=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Job_Number = _t, VoidPK = _t, #"Cost Type" = _t, #"Base Amount" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Job_Number", type text}, {"VoidPK", type text}, {"Cost Type", type text}, {"Base Amount", type number}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Job_Number", "VoidPK", "Cost Type"}, {{"Grand Total", each List.Sum([Base Amount]), type nullable number}}),
    #"Sorted Rows" = Table.Sort(#"Grouped Rows",{{"Job_Number", Order.Ascending}}),
    #"Added Custom" = Table.AddColumn(#"Sorted Rows", "LABOUR#(tab)MATERIALS SCP", each if [Cost Type]<>"LABOUR" then [Grand Total] else null),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Cost Type"}),
    #"Reordered Columns" = Table.ReorderColumns(#"Removed Columns",{"Job_Number", "VoidPK", "LABOUR#(tab)MATERIALS SCP", "Grand Total"})
in
    #"Reordered Columns"

 

Thank you for your response your code works but I have selected the person who responsed first as a solution😁

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors
Top Kudoed Authors