Mixpanel JQL使用AND条件

时间:2017-08-24 13:04:04

标签: mixpanel jql

我有一个查询 - 让我们说如果我想看“交易被查看”然后“交易声明”我怎么能实现这一点。我在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"}       
   );      
   }         

1 个答案:

答案 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。这样你就可以跳过在这里使用事件,只需对配置文件属性进行过滤。

您的另一个选择是使用上面的查询,并尝试在事件级别上完成剩余的工作。