Forum Discussion
[M language] Transform column type to datetime with 2 string formats?
- 8 years ago
You shouldn't replace the "_" at all.
My intenton was to have you just follow the indicated steps and only adjust the generated code by adding the if .. then .. else part,
But if you want to copy and adjust the code, then change the previous step name and the column reference.
According to your example code, this would be:
#"Convert Date" = Table.TransformColumns(#"Expanded Document",{{"Document.timestamp", each Date.From(DateTimeZone.From(_, if Text.Contains(_,"M") then "en-US" else "nl-NL")), type date}})
Thanks a lot for your help, it's working now.
But what does the '_' mean in the formula?
I think it's the solution I was looking for. If I compare the code you send me and the code I made first, there are similar.
The "_" refers to each value in column "Document.timestamp".
It is part of the syntax related to keyword each (which is actually a function).
Typically, each _ refers to the corresponding values, depending on the function in which it is used.
In Table.TransformColumns it refers to the values in the column with the name in the preceding parameter.
Other examples:
In Table.AddColumn, each _ refers to each record.
If you want to refer to another column, you need to add the column, e.g. _[Col1].
And in this particular case you can also omit the _ and only use the column reference [Col] as a shortcut.
In List.Transform, each _ refers to each list item, e.g.:
List.Transform({1..10}, each _ * 10)