Forum Discussion
Invoking function causes "Expression.Error: We cannot convert a value of type Record to type Number"
- 9 years ago
So why do you want to rename your columns, is it:
1. Because you get the error of duplicate column names, or
2. You want to rename your columns for another reason, but as a result you get duplicate column names?
In any case if you want to rename your columns so there won't be any duplicates, then you need to find some other solution for any duplicates, typically that would be adding a seqeunce number, e.g. if you have multiple "INFO CARD LINK" columns, then the first can be "INFO CARD LINK", the second "INFO CARD LINK.1", the third "INFO CARD LINK.2" and so on.
That would require a complete different approach.
Note: in Power Query, column names are case-sensitive, but when loading the result, you'll get an error (I guess that is the error you mentioned in your previous post).
Technically spoken you provide a record [Comparer = Comparer.OrdinalIgnoreCase] as the third argument for Table.RenameColumns, where you can only provide a number: the value for MissingField.
Edit: you code works fine if you remove that third argument.
My idea would be:
let
fnRenameColumns = (tableName as table) =>
let
Source = tableName,
ColumnNames = Table.ColumnNames(Source),
Transform = List.Transform(ColumnNames, each {_, Text.Upper(Text.Replace(_,"_"," "))}),
RenameColumns = Table.RenameColumns(tableName,Transform)
in
RenameColumns
in
fnRenameColumns
Thanks, so I added that 3rd argument because when I don't use it I get this error:
An error occurred in the ‘fnRenameColumns’ query. Expression.Error: The field 'INFO CARD LINK' already exists in the record.
Details:
Name=INFO CARD LINK
Value=
- MarcelBeug9 years agoCommunity Champion
So why do you want to rename your columns, is it:
1. Because you get the error of duplicate column names, or
2. You want to rename your columns for another reason, but as a result you get duplicate column names?
In any case if you want to rename your columns so there won't be any duplicates, then you need to find some other solution for any duplicates, typically that would be adding a seqeunce number, e.g. if you have multiple "INFO CARD LINK" columns, then the first can be "INFO CARD LINK", the second "INFO CARD LINK.1", the third "INFO CARD LINK.2" and so on.
That would require a complete different approach.
Note: in Power Query, column names are case-sensitive, but when loading the result, you'll get an error (I guess that is the error you mentioned in your previous post).
- edwardrmiles9 years agoHelper III
ah, I get it now... silly error on my part. My objective was to just to imporve the readability of column names, but that renaming has created a duplicate that I didn't originaly see. I should have actually though about what the error message was telling me...
Your solution works perfectly and I greatly apprecaite your expert help!