Forum Discussion

cgkas's avatar
cgkas
Icon for Helper V rankHelper V
3 years ago
Solved

How to split a column in two tables based on row content?

Hi, I have a table like this below For which I want to split it in two different tables, the first from row 1 until row before first occurence of "production_options". And next table from firs...
  • amitchandak's avatar
    3 years ago

    cgkas , check out steps in this power query code

     

    let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlSK1YlWMgKTxmDSBEyagkkzMzAVUJSfUppcEu9fUJKZn1cMFrMAk5Zg0tAAu7JYAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}}),
    _pos = List.PositionOf(#"Changed Type"[Column1],"Product_Options"),
    _firstList = List.FirstN(#"Changed Type"[Column1],_pos+1),
    _LastList = List.LastN(#"Changed Type"[Column1],List.Count(#"Changed Type"[Column1])- (_pos+1)),
    _final = List.Zip({_firstList,_LastList}),
    #"Converted to Table" = Table.FromList(_final, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Extracted Values" = Table.TransformColumns(#"Converted to Table", {"Column1", each Text.Combine(List.Transform(_, Text.From), ";"), type text}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Extracted Values", "Column1", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"Column1.1", "Column1.2"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Column1.1", type text}, {"Column1.2", type text}})
    in
    #"Changed Type1"

  • amitchandak's avatar
    3 years ago

    cgkas , Try this one with your data

     

     

     

    let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("fY7BCsIwEET/pedQWi149epJ76WENdnSQJINm01Bv96aCnrytLAzvDfj2JiShQKyxgDOq+f53hoKLZRmUltKcXYcQBzFT0O4YM0sJmAJGEVd4krOYK7/VNgskFETW2R1u+r+cBxqJMjBRfBqoSy66067ZJugF/L2yyZ2G7dqVb9TmWwxdQel99llZtBZIHlUM/iM/6ozsUFthp8mlKStX+WRVNdM0ws=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [DATA = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"DATA", type text}}),
    _pos = List.PositionOf(#"Changed Type"[DATA],"production_options"),
    _firstList = List.FirstN(#"Changed Type"[DATA],_pos+1),
    _LastList = List.LastN(#"Changed Type"[DATA],List.Count(#"Changed Type"[DATA])- (_pos+1)),
    _final = List.Zip({_firstList,_LastList}),
    #"Converted to Table" = Table.FromList(_final, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Extracted Values" = Table.TransformColumns(#"Converted to Table", {"Column1", each Text.Combine(List.Transform(_, Text.From), ";"), type text}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Extracted Values", "Column1", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"Column1.1", "Column1.2"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Column1.1", type text}, {"Column1.2", type text}})
    in
    #"Changed Type1"