Forum Discussion
Error converting data type to date but not if converting data type to datetime first
- 2 years ago
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMrTQNzDVNzIwMlQwNLUCImNjpdhYAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [data = _t]), to_date = Table.TransformColumns(Source, {"data", each Date.From(DateTime.From(_, "de-DE"))}) in to_date
Table.ColumnNames#"prevstep")
no opening bracket. You are trying to wrap everything into one single step. Don't be afraid to write your calcs down step by step - more chances to catch a real reason of your error when you are new to M. This does not always slow down your code.
If I understand your suggestion, your point is taken that making it work it 2 steps is fine, but I suppose 1 step is more efficient.
Two simple steps for one column are straightforward for me like this:
#"Changed Type" = Table.TransformColumnTypes(prevstep,{{"Date & Time", type datetime}}),
#"Changed Type1" = Table.TransformColumnTypes(#"Changed Type",{{"Date & Time", type date}}),
Also,
Table.TransformColumnTypes(prevstep,List.Transform(List.Select(Table.ColumnNames#"prevstep"), eachText.EndsWith(_,"Date"))),Seems to work, but combing them I still can't get it working. This:
= Table.TransformColumns(#"prevstep",
{List.Transform(List.Select(Table.ColumnNames,(#"prevstep"),
each Text.EndsWith(_,"Date"))),
each Date.From(DateTime.From(_, "en-GB")), type date})
now gives me
Expression.Error: 3 arguments were passed to a function which expects 2.
Details:
Pattern=
Arguments=[List]
- AlienSx2 years agoSuper User
ones again, don't use Table.TransformColumnTypes. I told many times about this. I give up, sorry 😞
- k1s22 years agoHelper I
I don't use TransformColumnTypes, I use TransformColumns as instructed, but I can't work out the syntax when combining with the the List.Transform(List.Select(Table.ColumnNames,(#"prevstep")...
- AlienSx2 years agoSuper User
k1s2 I am sorry, I was looking at message #11 with transform column types. Never mind. Try this
date_columns = List.Buffer( List.Select( Table.ColumnNames(prevstep), each Text.Contains(_, "Date") ) ), tfms = List.Transform( date_columns, each {_, each Date.From(DateTime.From(_, "en-GB")), type date} ), result = Table.TransformColumns(prevstep, tfms)