Unique Records in Beast Mode

I have three topics/cards with id's 11631,11634 &11636 and I have many users who completed these topics/cards. Now I want the list of all the users who completed all the three cards in a beast mode calculation. 
Base dataset would have columns like : card_id, user_id, Time

Best Answer

  • GrantSmith
    GrantSmith Indiana 🔴
    Accepted Answer

    Hi @user073741 


    You can use a beast mode to calculate the number of distinct topic / card IDs if you're grouping based on the user ID with a simple COUNT(DISTINCT `user_id`)  however you aren't able to filter on an aggregate on a card. There is an alpha feature which enables this however I don't recommend it as it's doesn't always function as expected and is not even in beta.


    What I recommend you do is use either a Dataset View (beta - talk with your CSM to about getting it enabled) to do a group by user_id and count the distinct number of card_ids


    Alternatively you could do this within a Magic ETL 2.0 dataflow using a groupby tile with the "Count Distinct Values" option.


    The end result is a dataset you can then use which would contain the user IDs and the number of distinct card_ids the user has taken to then filter this information based on.


  • Thanks for the idea. I tried this way although I didn't get the filter this works for me.

  • jaeW_at_Onyx
    jaeW_at_Onyx Budapest / Portland, OR 🟤

    does this video help address the thing you're trying to solve.

    honestly, it's a bit complex for your use case.  you could just make a beast mode


    case when card_ID in (<list of ids> ) then 'keep' else 'toss' end


    then use that to filter your card. 

    if you put 'user' on the axis, you know ever user that has completed one of those trainings.


    if you take sum( case when card_ID in (<list of ids> ) then 1 end), if the number = 3 then they completed all the cards.