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.