Forum Discussion
GiveMeArrays
3 years agoFrequent Visitor
Correct Syntax for Table.TransformColumns + Text.Length + Text.Combine
Please help with syntax guidance for the following M code:
= Table.TransformColumns( #"table" , { "column", each if Text.Length(_) = 4 then _ else Text.Combine( {"0",_} ) } )
Result: Expression.Error: A cyclic reference was encountered during evaluation.
In short, the "column" within "table" stores four digit numbers as text for IDs. However, some three digit IDs need a zero appended to the front of the string (e.g., 0123). The formula above is attempting to fix that.
Dozens of edits have brought me this far, so maybe it's conceptual at this point, rather than syntax?
Thank You!
- Anonymous3 years ago
Hi GiveMeArrays - You could consider using Text.PadStart like this:
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjI3VorViVYyNjExBTNMjYxNYSJg2sRIKTYWAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", Int64.Type}}), #"Added to Column" = Table.TransformColumns(#"Changed Type", {{"Column1", each Text.PadStart( Text.From(_) ,4 , "0" ) , type text }}) in #"Added to Column"
1 Reply
- AnonymousNot applicable
Hi GiveMeArrays - You could consider using Text.PadStart like this:
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjI3VorViVYyNjExBTNMjYxNYSJg2sRIKTYWAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", Int64.Type}}), #"Added to Column" = Table.TransformColumns(#"Changed Type", {{"Column1", each Text.PadStart( Text.From(_) ,4 , "0" ) , type text }}) in #"Added to Column"