Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
8 years ago
Solved

Cannot convert value to type table

Hello   I'm trying to split a string into multiple columns and I found out this code: SplitByDelimiter = (table, column, delimiter) => let Count = List.Count(List.Select(Text....
  • MarcelBeug's avatar
    MarcelBeug
    8 years ago

    Somehow you need to determine how many coluns you need for the entry with the largest number of delimiters.

    One way is to have a "trial split" and count the number of items, as in the code below (with adjusted "Count" step).

     

    let
        SplitByDelimiter = (table, column, delimiter) =>
            let
                Count = List.Max(List.Transform(Table.Column(table, column), each List.Count(Text.Split(_,delimiter)))),
                Names = List.Transform(List.Numbers(1, Count), each column & "." & Text.From(_)),
                Types = List.Transform(Names, each {_, type text}),
                Split = Table.SplitColumn(table, column, Splitter.SplitTextByDelimiter(delimiter), Names),
                Typed = Table.TransformColumnTypes(Split, Types)
            in
                Typed, 
    
        MyTable = #table(type table[my column = text],{{"A B C D"},{"A"},{"B C"},{"A B C D E"}}),
        #"Split Column by Delimiter" = SplitByDelimiter(MyTable, "my column", " ")
    in
        #"Split Column by Delimiter"