Я думаю, что вы не можете сделать это напрямую. Что вы можете сделать, так это найти идентификаторы профилей, которые соответствуют вашему условию И, то есть профили, которые отправили оба события. Вы можете сделать это, группируя события следующим образом:
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]} })
}
Но когда вы попытаетесь присоединиться к нему с помощью People(), вы обязательно застрянете с этим ограничением JQL:
Error validating script: Uncaught exception Error: join(Events(), People()) is the only form of join JQL supports.
return join(
Один из способов обойти это — установить некоторое свойство профиля всякий раз, когда вы отправляете события. Что мы часто используем, так это шаблон, в котором, скажем, когда вы отправляете предложение «Просмотрено», вы также выполняете обновление профиля и устанавливаете свойство профиля Offer Viewed At=$timestamp
. Таким образом, вы можете пропустить здесь работу с событиями и просто выполнить фильтрацию по свойствам профиля.
Другой вариант — использовать приведенный выше запрос и попытаться сделать все остальное, что вам нужно, на уровне событий.
person
Sander Sonajalg
schedule
26.11.2017