Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
3 years ago
Solved

Auto set all column types to specific Data Type

Hello,

I have the following table loaded in Power Query which is updated every week with new or removed or renamed columns in the source Excel spreadsheet. I am trying to find a dynamic way to change the Data Type of all the columns so that it will always be "Whole Number" without having to do this manually. The problem is that when it is autodetected, the data type is sometimes set to decimal. Can this be solved automatically?

 

YearWeek numberStockReturnsDefective
20221348
202226917
202232510
202249316
202255615
202362210
202277822
202283313
202296318
2022103314
2022112717
2022123722
2022137519
2022149818
2022156716
20221671434
  • Doing this manually generates M code that looks like

    = Table.TransformColumnTypes(Source,{{"Year", Int64.Type}, {"Week number", Int64.Type}, {"Stock", Int64.Type}, {"Returns", Int64.Type}, {"Defective", Int64.Type}})

    We can make this dynamic by transforming the list of column names into a list of {"ColumName", Int64.Type}.

    = Table.TransformColumnTypes(Source, List.Transform(Table.ColumnNames(Source), each {_, Int64.Type}))

    This should work for any number of integer columns.

1 Reply

  • Doing this manually generates M code that looks like

    = Table.TransformColumnTypes(Source,{{"Year", Int64.Type}, {"Week number", Int64.Type}, {"Stock", Int64.Type}, {"Returns", Int64.Type}, {"Defective", Int64.Type}})

    We can make this dynamic by transforming the list of column names into a list of {"ColumName", Int64.Type}.

    = Table.TransformColumnTypes(Source, List.Transform(Table.ColumnNames(Source), each {_, Int64.Type}))

    This should work for any number of integer columns.