This message was deleted.
# ask-questions
w
This message was deleted.
f
Hi Amr
Can you share the full query from the second image?
w
Hello Graham
function main() { // Helper aggregation functions const sum = (arr) => arr.reduce((sum, x) => sum + x, 0); const count = (arr) => arr.length; const countDistinct = (arr) => new Set(arr).size; const min = (arr) => Math.min(...arr); const max = (arr) => Math.max(...arr); const avg = (arr) => count(arr)>0?(sum(arr)/count(arr)):0; const percentile = (arr, p) => { const s = [...arr].sort((a,b)=>a-b); if(!s.length) return 0; if(p<=0) return s[0]; if(p>=100) return s[arr.length-1]; const r = (s.length-1)*p/100; const rf = Math.ceil(r) - r; return s[Math.floor(r)]*rf + s[Math.ceil(r)]*(1-rf); }; const median = (arr) => percentile(arr, 50); // Complete Purchase Revenue function isMetric(event) { return event.name === "Complete Purchase"; } // Last 90 days - Metric value (Complete Purchase Revenue) return Events({ "from_date": "2022-09-29", "to_date": "2022-12-28", "event_selectors": [ { "event": "Complete Purchase" } ] }) .filter(function(event) { if(isMetric(event)) return true; return false; }) // Metric value per user .groupByUser(function(state, events) { state = state || {date: null, metricValue: []}; for(var i=0; i<events.length; i++) { state.date = state.date || events[i].time; const event = events[i]; if(isMetric(event)) { state.metricValue.push(event.properties["Total Price"]); } } return state; }) // Remove users that did not convert .filter(function(ev) { return ev.value.date && ev.value.metricValue.length > 0; }) // Aggregate metric values per user .map(function(user) { // Metric - Complete Purchase Revenue user.value.metricValue = !user.value.metricValue.length ? 0 : ( (values => sum(values))(user.value.metricValue) ); return user; }) .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.date)).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.count) return {type: "overall", ...val}; return val; })); }
f
does
complete purchase
have the amount the purchase was?
w
Yes it's in the events properties with the attribute
Total Price
event's*
f
I see
w
here's an example
the last prop
137 Views