Forum Discussion

Dion-NZ's avatar
Dion-NZ
Frequent Visitor
5 years ago
Solved

Help Mapping Dynamic Number of Columns with Different Names Together

Hi there,   Hopefully someone can help me with this because I'm running out of hacky ideas to transform a table I'm working with. I'll do my best to explain...   I have a table that contains a lo...
  • Anonymous's avatar
    Anonymous
    5 years ago

    Hi Dion-NZ 

     

    No, it was based on the sample, I did not think about ID greater than 1 digit...so we need to adjust the steps split RECORD ID and digit a little bit

    let
        Source = #"SYSTEMDataPostAudit (Source)",
            #"Filtered Rows" = Table.SelectRows(dbo_SYSTEMDataPostAudit, each ([IsRequest] = true)),
            #"Removed Irrelevant Columns" = Table.RemoveColumns(#"Filtered Rows",{"IsRequest", "SYSTEMDataPostActionId", "JobQueueItem", "SYSTEMDataPostAction"}),
            #"Added Custom" = Table.AddColumn(Source, "Custom", each Text.Split([DataPost],"&")),
            #"Split Column by Delimiter" = Table.SplitColumn(#"Expanded Custom", "Custom", Splitter.SplitTextByDelimiter("="), {"Custom", "Custom2"}),
            #"Added Custom1" = Table.AddColumn(#"Split Column by Delimiter", "index", each try Number.From(Text.Reverse( Text.BeforeDelimiter( Text.Reverse([Custom]),"_"))) otherwise 0),
            #"Added Custom2" = Table.AddColumn(#"Added Custom1", "Custom1", each if [index] = 0 then [Custom] else Text.Reverse( Text.AfterDelimiter( Text.Reverse([Custom]),"_"))),
            #"Removed Columns" = Table.RemoveColumns(#"Added Custom2",{"DataPost", "Custom"}),
            JobTable = Table.SelectRows(#"Removed Columns", each ([index] = 0)),
            RecordTable = Table.SelectRows(#"Removed Columns", each ([index] <> 0)),
            PivotedTable = Table.Pivot(RecordTable, List.Distinct(RecordTable[Custom1]), "Custom1", "Custom2"),
            Custom1 = Table.Pivot(JobTable, List.Distinct(JobTable[Custom1]), "Custom1", "Custom2"),
            #"Removed Columns1" = Table.RemoveColumns(Custom1,{"index"}),
            #"Merged Queries" = Table.NestedJoin(#"Removed Columns1", {"LogID"}, PivotedTable, {"LogID"}, "Custom1", JoinKind.LeftOuter),
            #"Expanded Custom1" = Table.ExpandTableColumn(#"Merged Queries", "Custom1", List.RemoveItems( Table.ColumnNames( #"Merged Queries"[Custom1]{0}),{"LogID"}))
    in
        #"Expanded Custom1"

     

    You can try to work from here, and yes, it is VERY interesting journey, enjoy:)