Forum Discussion
Jalolbek85
2 years agoRegular Visitor
Count a set of consecutive digits
Hi All,
I want to count a set of consecutive digits from a product field called ‘Products’[Code].
Counting how many times the current digit appears consecutively from the current position.
For example.
- For 488873383, the expected concatenated output should be 32 (set of three 8s and two 3s)
- For 100, the concatenated output should be 2 (set of two 0s)
- For 22798822, the concatenated output should be 222 (set of two 2s, two 8s, and another two 2s)
thanks
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMrGwsDA3NrYwVorViVYyNDAA00ZG5pYWFkZGSrGxAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]), #"Added Column" = Table.AddColumn(Source, "cnt", each Text.Combine(List.Transform(List.Select(Table.Group(Table.FromList(Text.ToList([Column1])), "Column1", {"grp", Table.RowCount}, 0)[grp], each _>1), Text.From))) in #"Added Column"
2 Replies
- ThxAlot
Super User
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMrGwsDA3NrYwVorViVYyNDAA00ZG5pYWFkZGSrGxAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]), #"Added Column" = Table.AddColumn(Source, "cnt", each Text.Combine(List.Transform(List.Select(Table.Group(Table.FromList(Text.ToList([Column1])), "Column1", {"grp", Table.RowCount}, 0)[grp], each _>1), Text.From))) in #"Added Column" - ThxAlot
Super User
A better inspiration came up during my supper.
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMrGwsDA3NrYwVorViVYyNDAA00ZG5pYWFkZGSrGxAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]), #"Added Column" = Table.AddColumn(Source, "cnt", each Text.Combine(List.Transform(List.Select(List.Accumulate(Text.ToList([Column1]), {"", 0}, (s,c) => if c=s{0} then List.RemoveLastN(s) & {List.Last(s) + 1} else {c} & s & {1}), each try _>1 otherwise false), Text.From))) in #"Added Column"