Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
5 years ago
Solved

Combining data from different sources based on data readiness

Hi All, 

 

I have 3 different data sources and would like to combine them to one "end result" table. I need the data to be combined based on "latest" data. Data source A is in its early stages, then B, then data C is in the latest, most recent stage. Therefore, the end result is the combination of data sources A B and C based on whatever opportunity is the most recent. How would I tackle this in the query? Any ideas? 

 

Thanks a lot for the help!!! 

  • Anonymous , I used A, B, C as table names

     

    a New table in DAX

     

    New Table =
    var _tab1 = union(calculateTable(B, B[opportunity] in except(all(B[opportunity]),all(C[opportunity]))),C)
    return
    union(calculateTable(A, A[opportunity] in except(all(A[opportunity]),all(_tab1[opportunity]))),_tab1)

  • Anonymous's avatar
    Anonymous
    5 years ago

    Hi Anonymous ,

     

    You will need to add a custom column for each table, for example tablea is 1 tableb is 2 and tablec is 3.

    Then use append queries feature to combine these 3 tables.

    Here's the query.

    let
        Source = Table.Combine({#"Table a", #"Table b", #"Table c"}),
        #"Grouped Rows" = Table.Group(Source, {"opportunity"}, {{"max", each List.Max([Custom]), type number}, {"amount", each _, type table [opportunity=nullable text, amount=nullable number, Custom=number]}}),
        #"Expanded amount" = Table.ExpandTableColumn(#"Grouped Rows", "amount", {"opportunity", "amount", "Custom"}, {"amount.opportunity", "amount.amount", "amount.Custom"}),
        #"Added Custom" = Table.AddColumn(#"Expanded amount", "Custom", each if [max] = [amount.Custom] then 1 else 0),
        #"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([Custom] = 1)),
        #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"max", "amount.opportunity", "amount.Custom", "Custom"})
    in
        #"Removed Columns"

    Pbix as attached.

     

    Best Regards,

    Jay

3 Replies

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi Anonymous ,

     

    You will need to add a custom column for each table, for example tablea is 1 tableb is 2 and tablec is 3.

    Then use append queries feature to combine these 3 tables.

    Here's the query.

    let
        Source = Table.Combine({#"Table a", #"Table b", #"Table c"}),
        #"Grouped Rows" = Table.Group(Source, {"opportunity"}, {{"max", each List.Max([Custom]), type number}, {"amount", each _, type table [opportunity=nullable text, amount=nullable number, Custom=number]}}),
        #"Expanded amount" = Table.ExpandTableColumn(#"Grouped Rows", "amount", {"opportunity", "amount", "Custom"}, {"amount.opportunity", "amount.amount", "amount.Custom"}),
        #"Added Custom" = Table.AddColumn(#"Expanded amount", "Custom", each if [max] = [amount.Custom] then 1 else 0),
        #"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([Custom] = 1)),
        #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"max", "amount.opportunity", "amount.Custom", "Custom"})
    in
        #"Removed Columns"

    Pbix as attached.

     

    Best Regards,

    Jay

    • Anonymous's avatar
      Anonymous
      Not applicable

      Amazing!!!!!

  • Anonymous , I used A, B, C as table names

     

    a New table in DAX

     

    New Table =
    var _tab1 = union(calculateTable(B, B[opportunity] in except(all(B[opportunity]),all(C[opportunity]))),C)
    return
    union(calculateTable(A, A[opportunity] in except(all(A[opportunity]),all(_tab1[opportunity]))),_tab1)