Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
7 years ago
Solved

Fill primary table using secondary table (join question)

Hello,

 

I have 2 tables I'd like to join. The secondary (table  B) should fill the primary (inserting rows) when merging with the priamry table (Table A). I'm having trouble because i need to scan through 2 fields from the second table, and merge it with the primary where it does not exist. See example below

 

I do a right outer join on project key, and I'm getting my rows multiplied by 5 (5,000 total records).


Can anyone please help with this??

 

 

 

 

 

 

  • Hi Anonymous ,

     

    One sample for your reference, please check the following steps as below.

    1. Add custom columns in both tables like this.

    [Products]&[Severity]

    2. Merge tables (LeftOuter) and fill the date column down.

     

     

    M code for your reference.

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WCijKTylNLlFwVNJRCk4tSy3KLKlUMFSK1cEhZYRbyhi3lAmKlBNuu5xw2+WE2y4nNLtiAQ==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Products = _t, Severity = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Products", type text}, {"Severity", type text}}),
        #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each [Products]&[Severity]),
        #"Merged Queries" = Table.NestedJoin(#"Added Custom", {"Custom"}, TableA, {"Custom"}, "TableA", JoinKind.LeftOuter),
        #"Expanded TableA" = Table.ExpandTableColumn(#"Merged Queries", "TableA", {"Products", "Date"}, {"TableA.Products", "TableA.Date"}),
        #"Filled Down" = Table.FillDown(#"Expanded TableA",{"TableA.Date"})
    in
        #"Filled Down"

    PBIX as attached.

     

1 Reply

  • v-frfei-msft's avatar
    v-frfei-msft
    Community Support

    Hi Anonymous ,

     

    One sample for your reference, please check the following steps as below.

    1. Add custom columns in both tables like this.

    [Products]&[Severity]

    2. Merge tables (LeftOuter) and fill the date column down.

     

     

    M code for your reference.

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WCijKTylNLlFwVNJRCk4tSy3KLKlUMFSK1cEhZYRbyhi3lAmKlBNuu5xw2+WE2y4nNLtiAQ==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Products = _t, Severity = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Products", type text}, {"Severity", type text}}),
        #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each [Products]&[Severity]),
        #"Merged Queries" = Table.NestedJoin(#"Added Custom", {"Custom"}, TableA, {"Custom"}, "TableA", JoinKind.LeftOuter),
        #"Expanded TableA" = Table.ExpandTableColumn(#"Merged Queries", "TableA", {"Products", "Date"}, {"TableA.Products", "TableA.Date"}),
        #"Filled Down" = Table.FillDown(#"Expanded TableA",{"TableA.Date"})
    in
        #"Filled Down"

    PBIX as attached.