2017-08-24 4 views
0

J'ai une requête - Disons que si je veux voir "Deal vu" ET puis "Deal Claimed" comment puis-je réaliser cela.J'ai inclus ces deux événements dans event_selectors, je peux voir les gens qui ont vu l'affaire OU revendiqué deal. Mais je veux ET au lieu de OU.Mixpanel JQL filtre deux événements avec ET la condition

Below is my jql  
    function main() {  
     return join( 
     Events({  
     from_date: '2017-08-24', 
     to_date: '2017-08-24',  
     event_selectors:[{event:"Offer Viewed", selector: 'properties["Offer  
     Type"]=="Deal"' && 'properties["Offer 
    Title"]=="testDealtestDealtestDeal"'},  
          {event:"Offer Claimed"}]  
     }),   
    People(),  
    { type:"inner"}  
    );  
    }   

Répondre

0

Je pense que vous ne pouvez pas le faire directement. Ce que vous pouvez faire est de trouver les ID de profil correspondant à votre condition AND, c'est-à-dire les profils qui ont envoyé les deux événements. Vous pouvez le faire en utilisant le regroupement sur les événements comme celui-ci:

function main() { 
    return Events({ 
    from_date: '2017-11-23', 
    to_date: '2017-11-24', 
    event_selectors: [ 
     { event: "Offer Viewed", selector: 'properties["Offer  
    Type"] == "Deal"'}, 
     { event: "Offer Claimed"} 
    ] 
    }) 

    // Find unique event-name/ID pairs. There will be 1-2 rows for each ID. 
    .groupBy(["name", "properties.$id"], mixpanel.reducer.any()) 
    .map(e => { return {"event" : e.key[0], "id" : e.key[1]} }) 

    // Find IDs for profiles that sent both events 
    // (i.e. that are returning 2 items after grouping on ID) 
    .groupBy(["id"], mixpanel.reducer.count()) 
    .filter(e => { return e.value === 2}) 
    .map(e => { return {"id" : e.key[0]} }) 
} 

Mais quand vous essayez de le rejoindre avec les gens(), vous êtes tenu de vous retrouver avec cette restriction de JQL:

Error validating script: Uncaught exception Error: join(Events(), People()) is the only form of join JQL supports. 
    return join(

Un moyen de contourner cela est de définir une propriété de profil aussi bien à chaque fois que vous envoyez des événements. Ce que nous utilisons beaucoup est un modèle où, disons quand vous envoyez une offre, vous effectuez également une mise à jour de profil et définissez la propriété de profil Offer Viewed At=$timestamp. De cette façon, vous pouvez éviter de travailler avec des événements ici, et juste faire le filtrage sur les propriétés du profil.

Votre autre option consiste à utiliser la requête ci-dessus, et essayer de faire le reste de ce dont vous avez besoin au niveau des événements.