Forum Discussion
branners
5 years agoNew Member
Splitting row into 2 rows based on field value
Hi Been going around in circles here, really hope someone can help. We have potentially 2 sales people on a given deal. If there is a second salesperson, they should be created as an addition...
- 5 years ago
I tried something in power query for you, check it out and see if it works for you.
AntrikshSharma
5 years agoCommunity Champion
branners Try this:
let
Source = Table.FromRows (
Json.Document (
Binary.Decompress (
Binary.FromText (
"i45WCk7MSS0uSC0qzs9TMFSoUUDmGwH5QallqXmlqUqxOtFKXvmpCk45+enpxUCJvNKcHCClYmxqYACWDU4sSsxQ8ErMSwUKe+Vn5IHVgpQAVQCVxAIA",
BinaryEncoding.Base64
),
Compression.Deflate
)
),
let
_t = ( ( type nullable text ) meta [ Serialized.Text = true ] )
in
type table [ Column1 = _t ]
),
PromotedHeaders = Table.PromoteHeaders ( Source, [ PromoteAllScalars = true ] ),
RenamedColumns = Table.RenameColumns (
PromotedHeaders,
{ { "Salesperson 1 | Salesperson 2 | Revenue", "Data" } }
),
SplitTextIntoList = Table.AddColumn (
RenamedColumns,
"Split To List",
each Splitter.SplitTextByDelimiter ( "|" )( [Data] )
),
ExtractNumbers = Table.AddColumn (
SplitTextIntoList,
"Get Number",
each
if Text.Contains ( [Data], "Revenue" ) = false then
Number.From ( Text.Trim ( List.Reverse ( [Split To List] ){0} ) )
else
null,
Int64.Type
),
RemoveNulls = Table.AddColumn (
ExtractNumbers,
"Remove Nulls",
each List.RemoveItems (
List.Transform (
List.FirstN ( [Split To List], List.Count ( [Split To List] ) - 1 ),
each Text.Trim ( _ )
),
{ "null" }
)
),
ConvertToTable = Table.AddColumn (
RemoveNulls,
"Names",
each Table.FromList ( [Remove Nulls] )
),
Result = Table.AddColumn (
ConvertToTable,
"Salesperson Amount",
( x ) => Table.AddColumn ( x[Names], "Amount", each x[Get Number] )
),
RemovedOtherColumns = Table.SelectColumns ( Result, { "Salesperson Amount" } ),
ExpandedSalespersonAmount = Table.ExpandTableColumn (
RemovedOtherColumns,
"Salesperson Amount",
{ "Column1", "Amount" },
{ "Column1", "Amount" }
),
RenamedColumns1 = Table.RenameColumns (
ExpandedSalespersonAmount,
{ { "Column1", "Sales Person" } }
),
ChangedType1 = Table.TransformColumnTypes (
RenamedColumns1,
{ { "Sales Person", type text }, { "Amount", Int64.Type } }
)
in
ChangedType1