Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
1 year ago
Solved

Transform Column1 to ColumnHeaders

Hi -- this feels like a very basic transformation issue but for the life of me I cannot figure out the proper steps of getting to my desired table. Any help is much appreciated! 

 

ORIGINAL TABLE

Column1 Column2

Full Name Abayan, Mark

Loan Release Date 11/21/2024

Loan Amount 4000

Loan Type Salary Loan

Loan Purpose Sent to parents

Full Name Dacanay, Jeffrey

Loan Release Date 11/25/2024

Loan Amount 1000

Loan Type Cash Advance

Loan Purpose Cash Advance

Full Name Flores, Joan

Loan Release Date 11/28/2024

Loan Amount 500

Loan Type Cash Advance

Loan Purpose null

 

TARGET RESULT TABLE

Full Name Loan Release Date Loan Amount Loan Type Loan Purpose

Abayan, Mark 11/21/2024 4000 Salary Loan Sent to parents

Dacanay, Jeffrey 11/25/2024 1000 Cash Advance Cash Advance

Flores, Joan 11/28/2024 500 Cash Advance null

Cheers,

David

  • Hi Anonymous 

    I have taken only column1 and column 2 in my excel file:


    Here is the M query:
    let
    Source = Excel.Workbook(File.Contents("File_Name.xlsx"), null, true),
    Sheet1_Sheet = Source{[Item="Sheet1",Kind="Sheet"]}[Data],
    #"Promoted Headers" = Table.PromoteHeaders(Sheet1_Sheet, [PromoteAllScalars=true]),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Column1", type text}, {"Column2", type any}}),
    #"Added Conditional Column" = Table.AddColumn(#"Changed Type", "Group", each if [Column1] = "Full Name" then [Column2] else null),
    #"Filled Down" = Table.FillDown(#"Added Conditional Column",{"Group"}),
    #"Pivoted Column" = Table.Pivot(#"Filled Down", List.Distinct(#"Filled Down"[Column1]), "Column1", "Column2"),
    #"Removed Columns" = Table.RemoveColumns(#"Pivoted Column",{"Group"})
    in
    #"Removed Columns"

    This should give you the desired result:

     




  • Hi Anonymous 

     

    Try this:

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("rZDBasMwDIZfRfgcWFJa2DW066Frt7HmFnLQMoWGObKxlYHffo5hpKPtDmPgg9H3+xef61ptR63hCQdSmSrfMCBncED3oZqsVlUvegLPlhxKb9hD6b0k9jBYbcJALDGwNiwOWxlRJ7g3yPBKmtATbFCmkqK4W8STL5ZzpBzMmAqWeZ7P4yrY6cURNboA02hmL6Ozxiccd4MYsOjizafIuc4GW2QMGeyo6xyFH0qPvbQnYjgKdt2lUOqp+tjzm87qlk5xTWeN/gTl+ydyS9d8Lvi5zFYbRz66fH/Gv4rc3xJZ/cGD40rVNF8=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}, {"Column2", type text}}),
        #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1, Int64.Type),
        #"Added Custom" = Table.AddColumn(#"Added Index", "GroupMarker", each if [Column1] =  "Full Name" then [Index] else null),
        #"Filled Down" = Table.FillDown(#"Added Custom",{"GroupMarker"}),
        #"Removed Columns" = Table.RemoveColumns(#"Filled Down",{"Index"}),
        #"Grouped Rows" = Table.Group(#"Removed Columns", {"GroupMarker"}, {{"Grouped", each _, type table [Column1=nullable text, Column2=nullable text, GroupMarker=number]}}),
        #"Added Custom1" = Table.AddColumn(#"Grouped Rows", "Pivoted", each Table.Pivot([Grouped], List.Distinct([Grouped][Column1]), "Column1", "Column2")),
        #"Removed Columns1" = Table.RemoveColumns(#"Added Custom1",{"GroupMarker", "Grouped"}),
        #"Expanded Pivoted" = Table.ExpandTableColumn(#"Removed Columns1", "Pivoted", {"Full Name", "Title", "Employment", "Loan Release Date", "Loan Amount", "Loan Type", "Loan Purpose"}, {"Full Name", "Title", "Employment", "Loan Release Date", "Loan Amount", "Loan Type", "Loan Purpose"})
    in
        #"Expanded Pivoted"

     

     

8 Replies

  • Hi, 

    I am not sure what is the source format of this data. For example, does it has two seperate columns or both column1& Column2 are part of one column?

    So I have done the transformation assuming both column 1 and column 2 are two seperate columns and saved in excel.

    Column1Column2
    Full NameAbayan, Mark
    Loan Release Date11/21/2024
    Loan Amount4000
    Loan TypeSalary Loan
    Loan PurposeSent to parents
    Full NameDacanay, Jeffrey
    Loan Release Date11/25/2024
    Loan Amount1000
    Loan TypeCash Advance
    Loan PurposeCash Advance
    Full NameFlores, Joan
    Loan Release Date11/28/2024
    Loan Amount500
    Loan TypeCash Advance
    Loan Purposenull


    The below are the transformation steps in Power Query:
    Step1: Create a conditional column call it as 'Group' and include the below 
    If [Column1] = "Full Name" then [Column2] else null
    In this way, we are trying to break the group of rows based on Full Name
    Ste2: Filldown the 'Group' column
    Step3: Pivot colum1 and select the column2 as values
    Step4: Remove the Group Column

    Here is the M query:
    let
    Source = Excel.Workbook(File.Contents("File_Path.xlsx"), null, true),
    Sheet1_Sheet = Source{[Item="Sheet1",Kind="Sheet"]}[Data],
    #"Promoted Headers" = Table.PromoteHeaders(Sheet1_Sheet, [PromoteAllScalars=true]),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Column1", type text}, {"Column2", type any}}),
    #"Added Conditional Column" = Table.AddColumn(#"Changed Type", "Group", each if [Column1] = "Full Name" then [Column2] else null),
    #"Filled Down" = Table.FillDown(#"Added Conditional Column",{"Group"}),
    #"Pivoted Column" = Table.Pivot(#"Filled Down", List.Distinct(#"Filled Down"[Column1]), "Column1", "Column2"),
    #"Removed Columns" = Table.RemoveColumns(#"Pivoted Column",{"Group"})
    in
    #"Removed Columns"

     




  • Hi Anonymous 

    I have taken only column1 and column 2 in my excel file:


    Here is the M query:
    let
    Source = Excel.Workbook(File.Contents("File_Name.xlsx"), null, true),
    Sheet1_Sheet = Source{[Item="Sheet1",Kind="Sheet"]}[Data],
    #"Promoted Headers" = Table.PromoteHeaders(Sheet1_Sheet, [PromoteAllScalars=true]),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Column1", type text}, {"Column2", type any}}),
    #"Added Conditional Column" = Table.AddColumn(#"Changed Type", "Group", each if [Column1] = "Full Name" then [Column2] else null),
    #"Filled Down" = Table.FillDown(#"Added Conditional Column",{"Group"}),
    #"Pivoted Column" = Table.Pivot(#"Filled Down", List.Distinct(#"Filled Down"[Column1]), "Column1", "Column2"),
    #"Removed Columns" = Table.RemoveColumns(#"Pivoted Column",{"Group"})
    in
    #"Removed Columns"

    This should give you the desired result:

     




  • Hi Anonymous 

     

    Try this:

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("rZDBasMwDIZfRfgcWFJa2DW066Frt7HmFnLQMoWGObKxlYHffo5hpKPtDmPgg9H3+xef61ptR63hCQdSmSrfMCBncED3oZqsVlUvegLPlhxKb9hD6b0k9jBYbcJALDGwNiwOWxlRJ7g3yPBKmtATbFCmkqK4W8STL5ZzpBzMmAqWeZ7P4yrY6cURNboA02hmL6Ozxiccd4MYsOjizafIuc4GW2QMGeyo6xyFH0qPvbQnYjgKdt2lUOqp+tjzm87qlk5xTWeN/gTl+ydyS9d8Lvi5zFYbRz66fH/Gv4rc3xJZ/cGD40rVNF8=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}, {"Column2", type text}}),
        #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1, Int64.Type),
        #"Added Custom" = Table.AddColumn(#"Added Index", "GroupMarker", each if [Column1] =  "Full Name" then [Index] else null),
        #"Filled Down" = Table.FillDown(#"Added Custom",{"GroupMarker"}),
        #"Removed Columns" = Table.RemoveColumns(#"Filled Down",{"Index"}),
        #"Grouped Rows" = Table.Group(#"Removed Columns", {"GroupMarker"}, {{"Grouped", each _, type table [Column1=nullable text, Column2=nullable text, GroupMarker=number]}}),
        #"Added Custom1" = Table.AddColumn(#"Grouped Rows", "Pivoted", each Table.Pivot([Grouped], List.Distinct([Grouped][Column1]), "Column1", "Column2")),
        #"Removed Columns1" = Table.RemoveColumns(#"Added Custom1",{"GroupMarker", "Grouped"}),
        #"Expanded Pivoted" = Table.ExpandTableColumn(#"Removed Columns1", "Pivoted", {"Full Name", "Title", "Employment", "Loan Release Date", "Loan Amount", "Loan Type", "Loan Purpose"}, {"Full Name", "Title", "Employment", "Loan Release Date", "Loan Amount", "Loan Type", "Loan Purpose"})
    in
        #"Expanded Pivoted"

     

     

  • Hi Anonymous , it would be better if you share sample excel file of this data . the original table is hard to read

    • Anonymous's avatar
      Anonymous
      Not applicable

      Hi powerbidev123 -- here's the reformatted tables. Hopefully that helps.

       

      ORIGINAL TABLE

      NameColumn1Column2
      employee_financial_assistance_markabayan_20241121.xlsxFull NameAbayan, Mark
      employee_financial_assistance_markabayan_20241121.xlsxTitleOperations Asst
      employee_financial_assistance_markabayan_20241121.xlsxEmploymentContractual
      employee_financial_assistance_markabayan_20241121.xlsxLoan Release Date11/21/2024
      employee_financial_assistance_markabayan_20241121.xlsxLoan Amount4000
      employee_financial_assistance_markabayan_20241121.xlsxLoan TypeSalary Loan
      employee_financial_assistance_markabayan_20241121.xlsxLoan PurposeSent to parents
      employee_financial_assistance_jeffreydacanay_20241125.xlsxFull NameDacanay, Jeffrey
      employee_financial_assistance_jeffreydacanay_20241125.xlsxTitleKitchen Staff
      employee_financial_assistance_jeffreydacanay_20241125.xlsxEmploymentFull Time
      employee_financial_assistance_jeffreydacanay_20241125.xlsxLoan Release Date11/25/2024
      employee_financial_assistance_jeffreydacanay_20241125.xlsxLoan Amount1000
      employee_financial_assistance_jeffreydacanay_20241125.xlsxLoan TypeCash Advance
      employee_financial_assistance_jeffreydacanay_20241125.xlsxLoan PurposeCash Advance
      employee_financial_assistance_joanflores_20241128.xlsxFull NameFlores, Joan
      employee_financial_assistance_joanflores_20241128.xlsxTitleKitchen Staff
      employee_financial_assistance_joanflores_20241128.xlsxEmploymentFull Time
      employee_financial_assistance_joanflores_20241128.xlsxLoan Release Date11/28/2024
      employee_financial_assistance_joanflores_20241128.xlsxLoan Amount500
      employee_financial_assistance_joanflores_20241128.xlsxLoan TypeCash Advance
      employee_financial_assistance_joanflores_20241128.xlsxLoan Purposenull

       

      TARGET TABLE

      Full NameTitleEmploymentLoan Release DateLoan AmountLoan TypeLoan Purpose
      Abayan, MarkOperations AsstContractual11/21/20244000Salary LoanSent to parents
      Dacanay, JeffreyKitchen StaffFull Time11/25/20241000Cash AdvanceCash Advance
      Flores, JoanKitchen StaffFull Time11/28/2024500Cash Advancenull
  • Anonymous's avatar
    Anonymous
    Not applicable

    Thank you everyone! Tried all suggestions and they all work. The gist is to have a helper column that will be used for GROUP BY function.