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

Get Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Request now

Reply
Nata800
Regular Visitor

Unpivot selected columns based on certain conditions

Hi there,

 

I want to unpivot 3 value columns based on the row content given in another column.

 

Logic: If Category = "Total" unpivot columns Old and New Else unpivot column Value

 

Nata800_0-1679656141169.png

 

How to adjust this formula accordingly? 

Nata800_1-1679656196625.png

 

 

Thank you very much!

BR
Nata

1 ACCEPTED SOLUTION
BA_Pete
Super User
Super User

Hi Nata,

 

Do the unpivot as normal, then just add a custom filter.

Paste this into a new blank query to see the steps to take. It's the conditions in the 'filterRows' step that do the work:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("PY0xDsAgCEWv0jC7CIIw9wrdjIN7ky7eP/WbtNPP58GjNbqeOW5KxGq+Qi0QYuqFemp0jnlkAA8DwDyRq3H+OeMeJytzFNtVl+hbEAAuFYJaYr9T+zGM4SrwSCijCy9d7y8=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Category = _t, Old = _t, New = _t, Value = _t]),
    chgTypes = Table.TransformColumnTypes(Source,{{"Category", type text}, {"Old", Int64.Type}, {"New", Int64.Type}, {"Value", Int64.Type}}),

    unpivOthCols = Table.UnpivotOtherColumns(chgTypes, {"Category"}, "Attribute", "Value.1"),

    filterRows = Table.SelectRows(unpivOthCols, each  if [Category] = "Total" then [Attribute] <> "Value" else [Attribute] = "Value")

in
    filterRows

 

Example query turns this:

BA_Pete_0-1679669370841.png

 

...into this:

BA_Pete_1-1679669399244.png

 

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

2 REPLIES 2
Nata800
Regular Visitor

thank you so much Pete, works perfectly!

BA_Pete
Super User
Super User

Hi Nata,

 

Do the unpivot as normal, then just add a custom filter.

Paste this into a new blank query to see the steps to take. It's the conditions in the 'filterRows' step that do the work:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("PY0xDsAgCEWv0jC7CIIw9wrdjIN7ky7eP/WbtNPP58GjNbqeOW5KxGq+Qi0QYuqFemp0jnlkAA8DwDyRq3H+OeMeJytzFNtVl+hbEAAuFYJaYr9T+zGM4SrwSCijCy9d7y8=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Category = _t, Old = _t, New = _t, Value = _t]),
    chgTypes = Table.TransformColumnTypes(Source,{{"Category", type text}, {"Old", Int64.Type}, {"New", Int64.Type}, {"Value", Int64.Type}}),

    unpivOthCols = Table.UnpivotOtherColumns(chgTypes, {"Category"}, "Attribute", "Value.1"),

    filterRows = Table.SelectRows(unpivOthCols, each  if [Category] = "Total" then [Attribute] <> "Value" else [Attribute] = "Value")

in
    filterRows

 

Example query turns this:

BA_Pete_0-1679669370841.png

 

...into this:

BA_Pete_1-1679669399244.png

 

Pete



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

Proud to be a Datanaut!




Helpful resources

Announcements
Fabric Data Days Carousel

Fabric Data Days

Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!

October Power BI Update Carousel

Power BI Monthly Update - October 2025

Check out the October 2025 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.