例子

以下是一些示例查询,以帮助您了解您可以从JQL获得什么。我们将包括样本输出,但您应该尝试自己运行查询。

细分查询

您可能熟悉Mixpanel的细分报告,该报告使您可以根据其属性过滤和细分事件。这对于了解不同的用户段的行为以及随着时间的流逝是什么样的趋势很有用。

这是Mixpanel的核心功能之一,其最大的卖点是其灵活性。我们可以使用JQL仅使用几行代码来重新进化大多数分割后端。

var params = {from_date:'2018-10-18',to_date:'2018-10-19',event_name:'完整聊天',//事件以分析segment_property:'platform_property:'platform',//按类型属于组:“唯一” //查询类型 - 可以是'unique'或'total'};var groupKeys = [function(event){return(new Date(event.time))。toisoString()。split('t')[0];}];//如果(params.segment_property)//为所选属性groupkeys.push(function(event){return event.properties [params.sement_property];}添加另一个分组,请始终按一天进行细分。函数main(){//定义Collection var collection = event = event({from_date:params.from_date,to_date:params.to_date}).filter(function(event){return evert.name == params.event_name});//总分割只是一个组,如果(params.type =='total')返回集合.groupby(GroupKeys,mixpanel.reducer.count());//唯一的分割必须在groupby之前删除否则(params.type =='unique')返回集合.groupbyuser(groupkeys,mixpanel.reducer.null())// //将集合更改为唯一的键/用户组。}
//按DAY和“推荐人”进行分割的“主页” [{“ key”:[“ 2015-10-01”,“ Google.com”],“ value”:3487},{“ key”:[2015--10-01“,“ $ direct”],“ value”:432},{“ key”:[“ 2015-10-01”,“ reddit.com”],“ value”:876},{“ key”:[“ 2015-10-02”,“ Google.com”],“值”:4298},... //更多数据]

漏斗分析

这是Funnels的简单实现,这是Mixpanel的另一个核心功能。funnels可帮助您了解用户如何浏览您定义的一系列步骤。

在此示例中,我们单独处理每个用户以找出他们在漏斗中的距离,然后计算每个步骤结束的用户数量。从那里,我们可以获取最终漏斗:完成渠道每个步骤的用户数量。

var漏斗= params.funnel ||[“主页”,“注册”,“购买”];函数main(){返回事件({{from_date:params.from_date,to_date:params.to_date})//获取每个用户.groupbyuser(function_step,events){if(current_step ======================================================={current_step = -1} _.each(事件,function(e){if(e.name == funnel [current_step+1]){current_step ++;}}}); return current_step;})//不输入漏斗.filter(function(item){return item.value> -1})//计算在每个步骤中结束的用户数.groupby([function(item){return exturn item.value}],mixpanel.REDUCER.COUNT())//做一些数学以将步骤n用户添加到上一个步骤//这是从“以每个步骤结束的用户”转换为“ //每个步骤“。(步骤,函数(步骤){//组键是用户在var step_idx = st上结束的步骤ep.key [0];//通过在此步骤结束的用户数量来增加上一步。while(step_idx> -1){funnel_steps [step_idx] += step.value;step_idx--; } }); // if there are a LOT of steps we might have // processed some of them previously, so we have // to add the previously processed counts together. _.each(accumulators, function(accumulator) { _.each(accumulator, function(step_count, i) { funnel_steps[i] += step_count; }); }); return funnel_steps; }); }
//步骤计数5步漏斗[[2538,437,354,274,214]]

通过动态键进行分组

关于最有趣的事情通过...分组是,它使通过动态计算的密钥进行分组非常容易 - 而不仅仅是进行简单的“组成这两个属性”,我们可以编写一个函数来计算键。

在此示例中,我们提出了一个问题:“我们用户的十大最常见的电子邮件域是什么?”。我们没有电子邮件域名作为属性,但是我们有电子邮件,因此我们可以计算它。

//助手功能摘除域功能geteMailDomain(user){var email = user.properties [“ $ email”];if(!email){返回未定义;} pos = email.indexof('@');if(pos <0){返回未定义;}返回email.substr(pos + 1);}函数main(){return people().groupby([geteMailDomain],mixpanel.reducer.count()).Reduce(mixpanel.reducer.top(10));}
[[{“ key”:[“ gmail.com”],“ value”:2074},{“ key”:[“ www.jy710.com”],“ value”:822},... //更多数据]这是给予的

这个页面对你有帮助吗?