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
buttercream
Helper I
Helper I

Reformat table

Hello,

 

How do I transform this table preferably in DAX as calculated table:

 

InvoiceDateHas nameHas address
1531/1/2024YesYes
1541/1/2024YesYes
1551/1/2024NoYes
1561/2/2024YesNo
1571/2/2024YesNo
1581/2/2024YesYes
1591/3/2024NoNo
1601/3/2024NoNo

 

Into this:

DateTest% Yes
1/1/2024Has name66.67%
1/1/2024Has address100.00%
1/2/2024Has name100.00%
1/2/2024Has address33.33%
1/3/2024Has name0.00%
1/3/2024Has address0.00%
1 ACCEPTED SOLUTION
rajendraongole1
Super User
Super User

Hi @buttercream -Open Power Query Editor by clicking on Transform Data.
Unpivot Columns

Select the columns Has name and Has address.
Right-click on the selected columns and choose Unpivot Columns.
This will create two new columns: Attribute (with the values "Has name" and "Has address") and Value (with the values "Yes" and "No").
Rename Columns

Rename the Attribute column to Test.
Rename the Value column to % Yes.
Replace "Yes" and "No"

Replace "Yes" with 1 and "No" with 0 in the % Yes column.
Select the % Yes column.
Go to Transform > Replace Values.
Group Data

Select the Date and Test columns.
Go to Home > Group By.
In the Group By window:
Set Group By to Date and Test.
Set Operation to Average on % Yes and name it Average.
Convert Average to Percentage

Change the data type of the Average column to Percentage or multiply by 100 to format as a percentage.
Rename the Average Column

Rename the Average column to % Yes.
Load Data Back

Click Close & Apply to load the transformed data back into Power BI.

 

advanced M code FYR:

 

 

let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjQ1VtJRMtQ31DcyMDIBMiNTi6FkrA5I2gS/tCmqtF8+iqwZWNYIVTNQDUTWHK+sBTZZhNGWYGljFIthes0McEjGAgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Invoice = _t, Date = _t, #"Has name" = _t, #"Has address" = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Invoice", Int64.Type}, {"Date", type date}, {"Has name", type text}, {"Has address", type text}}),
#"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Invoice", "Date"}, "Attribute", "Value"),
#"Renamed Columns" = Table.RenameColumns(#"Unpivoted Columns",{{"Attribute", "Test"}, {"Value", "% Yes"}}),
#"Replaced Value" = Table.ReplaceValue(#"Renamed Columns","Yes","1",Replacer.ReplaceText,{"% Yes"}),
#"Replaced Value1" = Table.ReplaceValue(#"Replaced Value","No","0",Replacer.ReplaceText,{"% Yes"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Replaced Value1",{{"% Yes", Int64.Type}}),
#"Grouped Rows" = Table.Group(#"Changed Type1", {"Date", "Test"}, {{"Average", each List.Average([#"% Yes"]), type nullable text}}),
#"Changed Type2" = Table.TransformColumnTypes(#"Grouped Rows",{{"Average", Percentage.Type}}),
#"Renamed Columns1" = Table.RenameColumns(#"Changed Type2",{{"Average", "Yes"}})
in
#"Renamed Columns1"

 

rajendraongole1_0-1735390995799.png

 





Did I answer your question? Mark my post as a solution!

Proud to be a Super User!





View solution in original post

5 REPLIES 5
Ashish_Mathur
Super User
Super User

Hi,

Would you be OK with a Power Query and measure solution?  Why do you need a calculated table solution?


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/
danextian
Super User
Super User

Hi @buttercream 

 

Things like this are better than in the query editor than in DAX but for the sake of whether it is is possible, please see below:

danextian_0-1735399034844.png

Reformatted = 
VAR _hasname =
    SELECTCOLUMNS (
        Source,
        "Date", Source[Date],
        "Invoice", Source[Invoice],
        "Test", "Has name",
        "Value", Source[Has name]
    )
VAR _hasaddress =
    SELECTCOLUMNS (
        Source,
        "Date", Source[Date],
        "Invoice", Source[Invoice],
        "Test", "Has address",
        "Value", Source[Has address]
    )
VAR _combined =
    UNION ( _hasname, _hasaddress )
VAR _grouped01 =
    GROUPBY (
        _combined,
        [Date],
        [Test],
        [Value],
        "Count", COUNTX ( CURRENTGROUP (), 1 )
    )
VAR _percentageTable =
    ADDCOLUMNS (
        _grouped01,
        "YesCount",
            VAR _test = [Test]
            VAR _date = [Date]
            RETURN
                CALCULATE (
                    SUMX (
                        FILTER ( _grouped01, [Value] = "Yes" && [Test] = _test && [Date] = _date ),
                        [Count]
                    )
                ),
        "TotalCount",
            VAR _test = [Test]
            VAR _date = [Date]
            RETURN
                CALCULATE (
                    SUMX ( FILTER ( _grouped01, [Test] = _test && [Date] = _date ), [Count] )
                )
    )
VAR _finalTable =
    ADDCOLUMNS (
        _percentageTable,
        "Percentage", DIVIDE ( [YesCount], [TotalCount], 0 ) + 0
    )
RETURN
    GROUPBY ( _finalTable, [Test], [Date], [Percentage] )

Source is the name of the table containing the original data format.





Dane Belarmino | Microsoft MVP | Proud to be a Super User!

Did I answer your question? Mark my post as a solution!


"Tell me and I’ll forget; show me and I may remember; involve me and I’ll understand."
Need Power BI consultation, get in touch with me on LinkedIn or hire me on UpWork.
Learn with me on YouTube @DAXJutsu or follow my page on Facebook @DAXJutsuPBI.

Thanks.

rajendraongole1
Super User
Super User

Hi @buttercream -Open Power Query Editor by clicking on Transform Data.
Unpivot Columns

Select the columns Has name and Has address.
Right-click on the selected columns and choose Unpivot Columns.
This will create two new columns: Attribute (with the values "Has name" and "Has address") and Value (with the values "Yes" and "No").
Rename Columns

Rename the Attribute column to Test.
Rename the Value column to % Yes.
Replace "Yes" and "No"

Replace "Yes" with 1 and "No" with 0 in the % Yes column.
Select the % Yes column.
Go to Transform > Replace Values.
Group Data

Select the Date and Test columns.
Go to Home > Group By.
In the Group By window:
Set Group By to Date and Test.
Set Operation to Average on % Yes and name it Average.
Convert Average to Percentage

Change the data type of the Average column to Percentage or multiply by 100 to format as a percentage.
Rename the Average Column

Rename the Average column to % Yes.
Load Data Back

Click Close & Apply to load the transformed data back into Power BI.

 

advanced M code FYR:

 

 

let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjQ1VtJRMtQ31DcyMDIBMiNTi6FkrA5I2gS/tCmqtF8+iqwZWNYIVTNQDUTWHK+sBTZZhNGWYGljFIthes0McEjGAgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Invoice = _t, Date = _t, #"Has name" = _t, #"Has address" = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Invoice", Int64.Type}, {"Date", type date}, {"Has name", type text}, {"Has address", type text}}),
#"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Invoice", "Date"}, "Attribute", "Value"),
#"Renamed Columns" = Table.RenameColumns(#"Unpivoted Columns",{{"Attribute", "Test"}, {"Value", "% Yes"}}),
#"Replaced Value" = Table.ReplaceValue(#"Renamed Columns","Yes","1",Replacer.ReplaceText,{"% Yes"}),
#"Replaced Value1" = Table.ReplaceValue(#"Replaced Value","No","0",Replacer.ReplaceText,{"% Yes"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Replaced Value1",{{"% Yes", Int64.Type}}),
#"Grouped Rows" = Table.Group(#"Changed Type1", {"Date", "Test"}, {{"Average", each List.Average([#"% Yes"]), type nullable text}}),
#"Changed Type2" = Table.TransformColumnTypes(#"Grouped Rows",{{"Average", Percentage.Type}}),
#"Renamed Columns1" = Table.RenameColumns(#"Changed Type2",{{"Average", "Yes"}})
in
#"Renamed Columns1"

 

rajendraongole1_0-1735390995799.png

 





Did I answer your question? Mark my post as a solution!

Proud to be a Super User!





Thank you so much.

Helpful resources

Announcements
November Power BI Update Carousel

Power BI Monthly Update - November 2025

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

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!

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.

Top Solution Authors