Mixpanel JQL фильтрует два события с условием AND

У меня есть вопрос. Скажем, если я хочу увидеть «Сделка просмотрена» И затем «Сделка заявлена», как я могу этого добиться. Я включил эти два события в event_selectors, я могу видеть людей, которые просмотрели сделку ИЛИ заявили о сделке. Но я хочу И вместо ИЛИ.

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"}       
   );      
   }         

person Bikram Kumar Das    schedule 24.08.2017    source источник


Ответы (1)


Я думаю, что вы не можете сделать это напрямую. Что вы можете сделать, так это найти идентификаторы профилей, которые соответствуют вашему условию И, то есть профили, которые отправили оба события. Вы можете сделать это, группируя события следующим образом:

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