我有一个查询 - 让我们说如果我想看“交易被查看”然后“交易声明”我怎么能实现这一点。我在event_selectors中包含了这两个事件,我可以看到看过这笔交易或声称交易的人。但我想要AND而不是OR。
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"}
);
}
答案 0 :(得分:0)
我认为你不能直接这样做。您可以做的是找到与您的AND条件匹配的配置文件ID,即已发送两个事件的配置文件。你可以使用像这样的事件分组:
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时,您还会进行个人资料更新并设置个人资料属性Offer Viewed At=$timestamp
。这样你就可以跳过在这里使用事件,只需对配置文件属性进行过滤。
您的另一个选择是使用上面的查询,并尝试在事件级别上完成剩余的工作。