Forum Discussion

lynnsop's avatar
lynnsop
Icon for Helper I rankHelper I
5 years ago
Solved

New table from two tables with condition

Hey Guys.

 

I have 3 tables.

1 Base table ("a")

2 Data Tables ("b","c")

All of them have a username column.

 

Now I need 2 new tables with conditional rows:

(1) First new table: Includes only rows where username from "b" is also in "a".

(2) Second new table: Includes only rows where username from "c" is not in "a". (basically c-a)

 

How can I realize that? For (1) I tried merging queries in query editor but this seems to be buggy?

It shows that 164 rows (usernames) are matching but when I create the table it seems to be done nothing:

Resulting table: 

I'm also open to any DAX Logic that creates new tables.

In result I would need two new seperate tables.

 

Thanks in advance 🙂

 

 

  • Hey lynnsop ,

     

    I would do the work all in Power Query. The joins that you want are already available and you won't have additional tables in the data model that you don't need.

    Please find my example file here:

    https://www.swisstransfer.com/d/9387d28f-e05e-436e-9151-3de28ad519fd

     

    For your first case, you only have to do an inner join:

     

    For the second case you have to do a "left anti":

     

    And that should already give you the result you want.

     

    If you need any help please let me know.
    If I answered your question I would be happy if you could mark my post as a solution ✔️ and give it a thumbs up 👍
     
    Best regards
    Denis
     

     

     

     

3 Replies

  • selimovd's avatar
    selimovd
    Icon for Most Valuable Professional rankMost Valuable Professional

    Hey lynnsop ,

     

    I would do the work all in Power Query. The joins that you want are already available and you won't have additional tables in the data model that you don't need.

    Please find my example file here:

    https://www.swisstransfer.com/d/9387d28f-e05e-436e-9151-3de28ad519fd

     

    For your first case, you only have to do an inner join:

     

    For the second case you have to do a "left anti":

     

    And that should already give you the result you want.

     

    If you need any help please let me know.
    If I answered your question I would be happy if you could mark my post as a solution ✔️ and give it a thumbs up 👍
     
    Best regards
    Denis
     

     

     

     

  • lynnsop , Try two new tables

     

    new table =
    var _tab = INTERSECT(TableB[username], TableA[username])
    return
    calculatetable(filter(TableA, TableA[user] in _tab))

     

    new table 2 =
    var _tab = except(TableC[username], TableA[username])
    return
    calculatetable(filter(TableC, TableC[user] in _tab))

    • lynnsop's avatar
      lynnsop
      Icon for Helper I rankHelper I

      Hi amitchandak 

      the "intersect" and "except" both seem to require a single table and not column of table. Therefore I get an error when I want to implement this solution