Forum Discussion

eliottbbedard's avatar
eliottbbedard
Frequent Visitor
2 years ago
Solved

Splitting column in 2 for each delimiter occurence

Hello,   I'm working with data imported from a bilingual document and I'm trying to split a column in 2 columns, one for each language. In the screenshot below, each line can contains multiple elem...
  • dufoq3's avatar
    2 years ago

    Hi eliottbbedard, check this:

     

    Before

     

    v1 (each line in new row)

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("zdK9TsQwDADgV7E6c+LEgsR2OiFY7nRSx7aDad0SlNhVfjjujbjn6IvhpBNMLEhscWx/sqM0TXXCC3iyGGkAE0KiALdw8vJil0+nwUAwo6GW9e6N+ggHZJzIEccHeCa08RWQB6hxpHjJx414qNNM/t0EI1yyBy0Xb3hS/IlCzPdZzqY6NXJcrkAR6uXaJ2/WaCPpm6T5FcLY8l7cbA1yT3A2OoTFcx59LzyKd0XA9AFWTGj5qN39j4adj6a3uqKMsJs8lZ1UWGuLQoVwMqDNYHkN26bt9u7+kaOWU9XdNNU/GuVv9V9+lqrrvgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]),
        Ad_Splitted = Table.AddColumn(Source, "Splitted", each 
            [ a = Text.SplitAny([Column1], "#(lf)#(cr)"),
              b = List.Transform(a, (x)=> Text.Split(x, "/")),
              c = Table.FromRows(b, type table[English=text, French=text])
            ][c], type table),
        Splitted = Table.Combine(Ad_Splitted[Splitted]),
        TrimmedText = Table.TransformColumns(Splitted,{{"English", Text.Trim, type text}, {"French", Text.Trim, type text}})
    in
        TrimmedText

     

    v2 (preserved rows)

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("zdK9TsQwDADgV7E6c+LEgsR2OiFY7nRSx7aDad0SlNhVfjjujbjn6IvhpBNMLEhscWx/sqM0TXXCC3iyGGkAE0KiALdw8vJil0+nwUAwo6GW9e6N+ggHZJzIEccHeCa08RWQB6hxpHjJx414qNNM/t0EI1yyBy0Xb3hS/IlCzPdZzqY6NXJcrkAR6uXaJ2/WaCPpm6T5FcLY8l7cbA1yT3A2OoTFcx59LzyKd0XA9AFWTGj5qN39j4adj6a3uqKMsJs8lZ1UWGuLQoVwMqDNYHkN26bt9u7+kaOWU9XdNNU/GuVv9V9+lqrrvgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]),
        Ad_Splitted = Table.AddColumn(Source, "Splitted", each 
            [ a = Text.SplitAny([Column1], "#(lf)#(cr)"),
              b = List.Zip(List.Transform(a, (x)=> List.Transform(Text.Split(x, "/"), Text.Trim))),
              c = List.Transform(b, (x)=> Text.Combine(x, "#(lf)")),
              d = Table.FromColumns(List.Split(c, 1), type table[English=text, French=text])
            ][d], type table),
        Splitted = Table.Combine(Ad_Splitted[Splitted])
    in
        Splitted