Forum Discussion

jerryr125's avatar
jerryr125
Helper IV
1 year ago
Solved

Creating a header from the first two rows

Hi - 

I know in Power Query you can "Use First Row as headers" function.

Is there a way to use the first two rows as headers  (combine both rows  to create one header row).

Example:

 

abcd
efgh
10203040
50607080
90100110120

 

Output:

 

aebfcgdh
10203040
50607080
90100110120

Any thoughts?

 

Thanks - jerryr

8 Replies

  • Fowmy's avatar
    Fowmy
    Super User

    jerryr125 
    Create a blank Query, go to the Advanced Editor, clear the existing code, and paste the codes give below and follow the steps.

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("JYu5DcBADMN2UX2FnT+zGC7yZ/8JIjkFCUKAIrChYScHOZEtcLFu8pC3FjdmJ/XSYLWO6kmapeVfV7VbuX7OY+YH", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t, Column3 = _t, Column4 = _t]),
        Custom1 = Table.FromRows({List.Transform(Table.ToColumns(Table.FirstN(Source,2)) , each Text.Combine(_) )}),
        Custom2 = Table.PromoteHeaders(Table.Combine( {Custom1 , Table.Skip(Source,2)} ))
    in
        Custom2

     

     

  • Hi jerryr125 

     

    = Table.FromRows(
    List.Skip(Table.ToRows(Source), 2),
    List.Transform(
    List.Zip({Record.ToList(Source{0}), Record.ToList(Source{1})}),
    Text.Combine))

    Stéphane

  • Here's another solution you could refer to. Thanks

     

  • Hi jerryr125 , Could you please try this 

    • Promote the first row to headers: Use the "Use First Row as Headers" option.
    • Combine the first two rows:
      1. Select both rows.
      2. Use the "Transform" tab > "Merge Columns."
      3. Select desired delimiter.
        If this post helped please do give a kudos and accept this as a solution
        Thanks In Advance
  • dufoq3's avatar
    dufoq3
    Community Champion

    Hi jerryr125, another solution:

     

    Add this code as a new step, replace Source in code with your previous_step_name if necessary.

    = Table.PromoteHeaders(Table.FromColumns(List.TransformMany(Table.ToColumns(Source),
            each {List.Skip(_, 2)},
            (x,y)=> {Text.Combine(List.FirstN(x, 2))} & y)))