I want to split a column into rows according to delimiter if the text doesn't start with "A-" or "B-".
Here is my original column1:
column1_original |
A-2389 |
B-23893a |
A-kljasdf |
89324-234 |
abc-43892 |
And now I want to split all values except the ones who start with "A-" or "B-" into new rows according example:
column1_original | column1_new |
A-2389 | A-2389 |
B-23893a | B-23893a |
A-kljasdf | A-kljasdf |
89324-234 | 89324 |
89324-234 | 234 |
abc-43892 | abc |
abc-43892 | 43892 |
So in pseudocode it would be somethin like:
IF CELL starts with "A-" OR "B-"
nothing
Else
Split according delimiter "-" into new rows
Solved! Go to Solution.
Define a new custom column with the following logic:
if Text.StartsWith([column1], "A-") or Text.StartsWith([column1], "B-")
then {[column1]}
else Text.Split([column1], "-")
Then expand that column.
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WctQ1MrawVIrViVZyAjONE8EcR93snKzE4pQ0MA8obGQClDYB8xKTknVNgEqNlGJjAQ==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [column1 = _t]),
#"Added Custom" = Table.AddColumn(Source, "new", each if Text.StartsWith([column1], "A-") or Text.StartsWith([column1], "B-") then {[column1]} else Text.Split([column1], "-"), type list),
#"Expanded new" = Table.ExpandListColumn(#"Added Custom", "new")
in
#"Expanded new"
Define a new custom column with the following logic:
if Text.StartsWith([column1], "A-") or Text.StartsWith([column1], "B-")
then {[column1]}
else Text.Split([column1], "-")
Then expand that column.
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WctQ1MrawVIrViVZyAjONE8EcR93snKzE4pQ0MA8obGQClDYB8xKTknVNgEqNlGJjAQ==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [column1 = _t]),
#"Added Custom" = Table.AddColumn(Source, "new", each if Text.StartsWith([column1], "A-") or Text.StartsWith([column1], "B-") then {[column1]} else Text.Split([column1], "-"), type list),
#"Expanded new" = Table.ExpandListColumn(#"Added Custom", "new")
in
#"Expanded new"
NewStep=#table(2,List.TransformMany(Table.ToRows(PreviousStepName),each if List.Contains({"A-","B-"},_,(x,y)=>Text.StartsWith(y,x)) then {_} else Text.Split(_,"-"),(x,y)=>{x,y}))
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WctQ1MrawVIrViVZyAjONE8EcR93snKzE4pQ0MA8obGQClDYB8xKTknVNgEqNlGJjAQ==", 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}}),
#"NewStep" = #table(2,List.TransformMany(Table.ToRows(#"Changed Type"),each if List.Contains({"A-","B-"},_,(x,y)=>Text.StartsWith(y,x)) then {_} else Text.Split(_,"-"),(x,y)=>{x,y}))
in
#"NewStep"
Power BI release plans for 2023 release wave 1 describes all new features releasing from April 2023 through September 2023.
Make sure you register today for the Power BI Summit 2023. Don't miss all of the great sessions and speakers!
User | Count |
---|---|
32 | |
22 | |
20 | |
20 | |
17 |