plain-lizard-13513
08/09/2021, 12:11 PM{
"users": 0
}
future-teacher-7046
plain-lizard-13513
08/09/2021, 1:43 PMfunction main() {
// Site-Wide - Number of Users
return Events({from_date: "2021-05-11", to_date: "2021-08-09"})
.filter(function(event) {
// Valid page view
if(event.name === "Page view") return true;
return false;
})
// One event per user
.groupByUser(mixpanel.reducer.min("time"))
.reduce([
// Overall count of users
mixpanel.reducer.count(),
// Count of users per day
(prevs, events) => {
const dates = {};
prevs.forEach(prev => {
prev.dates.forEach(d=>dates[d.date] = (dates[d.date] || 0) + d.users)
});
events.forEach(e=>{
const date = (new Date(e.value)).toISOString().substr(0,10);
dates[date] = (dates[date] || 0) + 1;
});
return {
type: "byDate",
dates: Object.keys(dates).map(d => ({
date: d,
users: dates[d]
}))
};
}
])
// Transform into easy-to-use objects
.map(vals => vals.map(val => !val.type ? {type:"overall",users:val} : val))
}
click to minimize
function main() {
// Site-Wide - Metric value (appointment_booked)
return Events({from_date: "2021-05-11", to_date: "2021-08-09"})
.filter(function(event) {
// Valid page view
if(event.name === "Page view") return true;
if(event.name === "appointment_booked") return true;
return false;
})
// Metric value per user
.groupByUser(function(state, events) {
state = state || {firstPageView: false, metricValue: null, queuedValues: []};
for(var i=0; i<events.length; i++) {
if(!state.firstPageView && events[i].name === "Page view") {
state.firstPageView = events[i].time;
// Process queued values
state.queuedValues.forEach((q) => {
// Check conversion window (3 days)
if(q.time - state.firstPageView > 259200000) {
return
}
state.metricValue = Math.min(1,(state.metricValue || 0) + q.value);
});
state.queuedValues = [];
continue;
}
if(events[i].name === "appointment_booked") {
if(!state.firstPageView) {
continue;
}
// Check conversion window (3 days)
if(events[i].time - state.firstPageView > 259200000) {
continue;
}
state.metricValue = Math.min(1,(state.metricValue || 0) + 1);
}
}
return state;
})
// Remove users that did not convert
.filter(function(ev) {
return ev.value.firstPageView && ev.value.metricValue !== null;
})
.reduce([
// Overall summary metrics
mixpanel.reducer.numeric_summary('value.metricValue'),
// Summary metrics by date
(prevs, events) => {
const dates = {};
prevs.forEach(prev => {
prev.dates.forEach(d=>{
dates[d.date] = dates[d.date] || {count:0, sum:0};
dates[d.date].count += d.count;
dates[d.date].sum += d.sum;
})
});
events.forEach(e=>{
const date = (new Date(e.value.firstPageView)).toISOString().substr(0,10);
dates[date] = dates[date] || {count:0, sum:0};
dates[date].count++;
dates[date].sum += e.value.metricValue;
});
return {
type: "byDate",
dates: Object.keys(dates).map(d => ({
date: d,
...dates[d]
}))
};
}
])
// Transform into easy-to-use objects
.map(vals => vals.map(val => {
if(val[0] && val[0].percentile) return {type: "percentile",percentiles:val};
if(val.count) return {type: "overall", ...val};
return val;
}));
}
future-teacher-7046
plain-lizard-13513
08/09/2021, 3:06 PMappointment_booked
future-teacher-7046
plain-lizard-13513
08/09/2021, 3:41 PM