Forum Discussion

peterhui50's avatar
peterhui50
Helper III
5 years ago
Solved

Table.SelectColumns, select multiple columns from a list

Hi,

 

I have a table here, it has 150 columns, I want to select 45 of them. Is there a way to do this without having to check box one by one? I also don't want to unpivot and join either, since this table has 200,000 rows.

 

I was thinking if there is a way to past a list into the Table.SelectColumns, maybe put the 45 columns I want as a variable and some how pass it into Table.SelectColumns Step.

 

 

let
    Source = Csv.Document(File.Contents("XYZ.csv"),[Delimiter=",", Columns=150, Encoding=65001, QuoteStyle=QuoteStyle.None]),
    #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
    #"Removed Other Columns" = Table.SelectColumns(#"Promoted Headers",{"My Columns_1"..."My Columns_45"})
in
    #"Removed Other Columns"

 

 

I tried something like this but didn't work

 

(X ) => {"NAME","TRANSACTION_NUM"..."Column_45"}
let
    Source = Csv.Document(File.Contents("XYZ.csv"),[Delimiter=",", Columns=150, Encoding=65001, QuoteStyle=QuoteStyle.None]),
    #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
    #"Removed Other Columns" = Table.SelectColumns(#"Promoted Headers",{X})
in
    #"Removed Other Columns"

 

  • peterhui50 not sure why, try this:

     

    let
        X =  {"NAME","TRANSACTION_NUM"..."Column_45"},
        Source = Csv.Document(File.Contents("XYZ.csv"),[Delimiter=",", Columns=150, Encoding=65001, QuoteStyle=QuoteStyle.None]),
        #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
        #"Removed Other Columns" = Table.SelectColumns(#"Promoted Headers",X)
    in
        #"Removed Other Columns"

     

    Check my latest blog post Comparing Selected Client With Other Top N Clients | PeryTUS  I would ❤ Kudos if my solution helped. 👉 If you can spend time posting the question, you can also make efforts to give Kudos to whoever helped to solve your problem. It is a token of appreciation!

    Visit us at https://perytus.com, your one-stop-shop for Power BI-related projects/training/consultancy.

4 Replies

  • peterhui50 not sure why, try this:

     

    let
        X =  {"NAME","TRANSACTION_NUM"..."Column_45"},
        Source = Csv.Document(File.Contents("XYZ.csv"),[Delimiter=",", Columns=150, Encoding=65001, QuoteStyle=QuoteStyle.None]),
        #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
        #"Removed Other Columns" = Table.SelectColumns(#"Promoted Headers",X)
    in
        #"Removed Other Columns"

     

    Check my latest blog post Comparing Selected Client With Other Top N Clients | PeryTUS  I would ❤ Kudos if my solution helped. 👉 If you can spend time posting the question, you can also make efforts to give Kudos to whoever helped to solve your problem. It is a token of appreciation!

    Visit us at https://perytus.com, your one-stop-shop for Power BI-related projects/training/consultancy.

  • peterhui50 Since x is already a list, you don't need to wrap it in curly brackets:

     

    (X ) => {"NAME","TRANSACTION_NUM"..."Column_45"}
    let
        Source = Csv.Document(File.Contents("XYZ.csv"),[Delimiter=",", Columns=150, Encoding=65001, QuoteStyle=QuoteStyle.None]),
        #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
        #"Removed Other Columns" = Table.SelectColumns(#"Promoted Headers",X)
    in
        #"Removed Other Columns"

     

    Check my latest blog post Comparing Selected Client With Other Top N Clients | PeryTUS  I would ❤ Kudos if my solution helped. 👉 If you can spend time posting the question, you can also make efforts to give Kudos to whoever helped to solve your problem. It is a token of appreciation!

    Visit us at https://perytus.com, your one-stop-shop for Power BI-related projects/training/consultancy.

    • peterhui50's avatar
      peterhui50
      Helper III

      gave me a strange error called Eof Expected

       

       

      odd...

  • It worked, but why does this list have to be inside the "let" statement?