Forum Discussion
How to split a column in two tables based on row content?
- 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" - 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"
cgkas , That add column first that will give 1 and 0 of some flag, and then get the position of in that new column, and the rest of the code will be in the same column
if Text.Contains([Column1], "production") then "1" else "0"
amitchandak Excellent. I was able to get it following your suggestion. Thanks again