如何在Mixpanel JQL中查询多事件的多个属性并分别统计计数?
解决Mixpanel JQL多事件多属性统计问题
你的代码核心问题是没有将事件类型纳入分组维度,导致三个事件的计数被合并为同一UserName+InviteCode组合的总和。以下是两种满足不同统计需求的解决方案:
方案1:按事件类型+用户名+邀请码分别统计
如果需要清晰区分每个事件在不同用户+邀请码组合下的发生次数,只需把event.name加入groupBy的分组数组:
function main () { return Events( { from_date: "2023-04-06", to_date: "2023-05-26", event_selectors: [{event: "FeedExited"}, {event: "GameExited"}, {event: "DiscoveryExited"}] }) .filter(function(event){ return event.properties.UserName && event.properties.InviteCode; }) // 新增event.name作为分组维度,拆分不同事件的计数 .groupBy(["event.name", "properties.UserName", "properties.InviteCode"], mixpanel.reducer.count()); }
输出结果结构示例:
[
{"key": ["FeedExited", "user1", "CODE1"], "value": 5},
{"key": ["GameExited", "user1", "CODE1"], "value": 3},
{"key": ["DiscoveryExited", "user2", "CODE2"], "value": 2},
...
]
方案2:同一用户+邀请码下展示各事件计数
如果希望每个UserName+InviteCode组合对应一条数据,同时包含三个事件的各自计数,可以自定义reducer实现结构化统计:
function main () { return Events( { from_date: "2023-04-06", to_date: "2023-05-26", event_selectors: [{event: "FeedExited"}, {event: "GameExited"}, {event: "DiscoveryExited"}] }) .filter(function(event){ return event.properties.UserName && event.properties.InviteCode; }) .groupBy( ["properties.UserName", "properties.InviteCode"], // 自定义reducer初始化并累加各事件计数 function(state, event) { if (!state) { state = { FeedExited: 0, GameExited: 0, DiscoveryExited: 0 }; } state[event.name]++; return state; } ); }
输出结果结构示例:
[
{"key": ["user1", "CODE1"], "value": {"FeedExited":5, "GameExited":3, "DiscoveryExited":1}},
{"key": ["user2", "CODE2"], "value": {"FeedExited":2, "GameExited":0, "DiscoveryExited":4}},
...
]
内容的提问来源于stack exchange,提问作者Microfox
相关产品推荐
相关产品推荐

