Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
4 years ago
Solved

Combining columns from different Tables but in same orders

Dear Community Members, 

 

Request your help with below query -

 

I have 14 tables with similar data and 5 columns per table

 

Example of two tables below:

 

Table 1

Cif IDName
1711None
6947Somoene
1276Noone
5645Anyone

 

Table 2

 

CRNName
2868Yum
6502dum
6498some
5362ton

 

I want to combine all the columns in order with each representing the subsequent value in a new table like below:

Cif IDName
1711None
6947Somoene
1276Noone
5645Anyone
2868Yum
6502dum
6498some
5362ton

 

 

PS - Please note that columns are not in exact order header wise hence cannot use Append query , also tried below function 

 

= Table.Combine({
Table.RenameColumns(
Table.SelectColumns(#"Table 1","CIF Id") ,{{"CIF Id","CIF ID"}})
,
Table.RenameColumns(
Table.SelectColumns(#"Table 2","CRN") ,{{"CRN","CIF ID"}})
,
Table.RenameColumns(
Table.SelectColumns(#"Table 1","Name") ,{{"Name","Name"}})
,
Table.RenameColumns(
Table.SelectColumns(#"Table 2","Name") ,{{"Name","Name"}})

})

 

But it give below result :

 

Cif IDName
1711null
6947null
1276null
5645null
2868null
6502null
6498null
5362null
nullNone
nullSomoene
nullNoone
nullAnyone
nullYum
nulldum
nullsome
nullton

 

Please help

 

  • This pattern should work:

    let
        Source =
        Table.SelectColumns(
            Table.Combine(
                {
                    Table.RenameColumns(Table1, {{"ID1", "ID_Output"}, {"Name1", "Name_Output"}}),
                    Table.RenameColumns(Table2, {{"ID2", "ID_Output"}, {"Name2", "Name_Output"}}),
                    Table.RenameColumns(Table3, {{"ID3", "ID_Output"}, {"Name3", "Name_Output"}})
                }
            ),
            {"ID_Output", "Name_Output"}
        )
    in
        Source

    Update the column names as appropriate for your situation.

6 Replies

  • ImkeF's avatar
    ImkeF
    Community Champion

    Oh yes, sorry - my fault:

    = Table.Combine({
    Table.RenameColumns(
    Table.SelectColumns(#"Table 1","CIF Id", "Name") ,{{"CIF Id","CIF ID"}})
    ,
    Table.RenameColumns(
    Table.SelectColumns(#"Table 2","CRN", "Name") ,{{"CRN","CIF ID"}})
    })
    • Anonymous's avatar
      Anonymous
      Not applicable

      I am troubling you..

      so there are 14 tables, all dont have the header as "Name", so ultimately i have to convert the "Name" to "Name"

  • This pattern should work:

    let
        Source =
        Table.SelectColumns(
            Table.Combine(
                {
                    Table.RenameColumns(Table1, {{"ID1", "ID_Output"}, {"Name1", "Name_Output"}}),
                    Table.RenameColumns(Table2, {{"ID2", "ID_Output"}, {"Name2", "Name_Output"}}),
                    Table.RenameColumns(Table3, {{"ID3", "ID_Output"}, {"Name3", "Name_Output"}})
                }
            ),
            {"ID_Output", "Name_Output"}
        )
    in
        Source

    Update the column names as appropriate for your situation.

  • ImkeF's avatar
    ImkeF
    Community Champion

    Hi Anonymous ,
    please try the following instead:

    = Table.Combine({
    Table.RenameColumns(
    Table.SelectColumns(#"Table 1","CIF Id", "Name") ,{{"CIF Id","CIF ID", "Name"}})
    ,
    Table.RenameColumns(
    Table.SelectColumns(#"Table 2","CRN", "Name") ,{{"CRN","CIF ID", "Name"}})
    })



    • Anonymous's avatar
      Anonymous
      Not applicable

      Hi,

       

      It give below error:

       

      We cannot convert the value "Name" to type Number.

  • ImkeF's avatar
    ImkeF
    Community Champion

    Hi Anonymous ,
    sorry, but I don't understand the requirement.