2015-11-20 16:11:27 -08:00
// subscriptionPromptGroup A/B Results
2015-11-22 07:46:52 -08:00
// Test started 2015-09-18, ended 2015-11-22
// Final results:
// Subscribers by group: {
// "tactical-strike": 246,
// "boom-and-bust": 255,
// "favorable-odds": 303
// }
2015-11-20 16:11:27 -08:00
// Usage:
// mongo <address>:<port>/<database> <script file> -u <username> -p <password>
2015-11-22 07:46:52 -08:00
// Except actually now you run these scripts on the analytics server itself.
// https://docs.google.com/document/d/1d5mOsTjioX2KRNAqhWXdGyBevuhxSPH1xX7UWlYPpwk/edit#
2015-11-20 16:11:27 -08:00
load ( 'abTestHelpers.js' ) ;
var scriptStartTime = new Date ( ) ;
try {
2015-11-22 07:46:52 -08:00
var logDB = new Mongo ( "localhost" ) . getDB ( "analytics" ) ;
2015-11-20 16:11:27 -08:00
var startDay = '2015-09-18' ;
log ( "Today is " + new Date ( ) . toISOString ( ) . substr ( 0 , 10 ) ) ;
log ( "Start day is " + startDay ) ;
var eventFunnel = [ 'Started Level' , 'Saw Victory' ] ;
var levelSlugs = [ 'dungeons-of-kithgard' , 'gems-in-the-deep' , 'shadow-guard' , 'forgetful-gemsmith' , 'true-names' , 'favorable-odds' , 'the-raised-sword' , 'lowly-kithmen' , 'closing-the-distance' , 'tactical-strike' , 'a-mayhem-of-munchkins' , 'kithgard-gates' , 'boom-and-bust' , 'defense-of-plainswood' ] ;
// getSubscriptionPromptGroup
var testGroupFn = function ( testGroupNumber ) {
var group = testGroupNumber % 3 ;
if ( group === 0 ) return 'favorable-odds' ;
if ( group === 1 ) return 'tactical-strike' ;
if ( group === 2 ) return 'boom-and-bust' ;
} ;
2015-11-22 07:46:52 -08:00
var funnelData = getFunnelData ( startDay , eventFunnel , testGroupFn , levelSlugs , logDB ) ;
2015-11-20 16:11:27 -08:00
printFunnelData ( funnelData , function ( day , level , browser , group , started , finished , rate ) {
if ( day && level && browser && group ) {
log ( day + "\t" + group + "\t" + started + "\t" + finished + "\t" + rate . toFixed ( 2 ) ) ;
}
else if ( level && browser && group ) {
log ( level + "\t" + browser + "\t" + ( browser . length < 8 ? "\t" : "" ) + group + "\t" + started + "\t" + finished + "\t" + rate . toFixed ( 2 ) ) ;
}
else if ( level && group ) {
log ( level + "\t" + group + "\t" + started + "\t" + finished + "\t" + rate . toFixed ( 2 ) ) ;
}
else if ( group ) {
log ( group + "\t" + started + "\t" + finished + "\t" + rate . toFixed ( 2 ) ) ;
}
} ) ;
}
catch ( err ) {
log ( "ERROR: " + err ) ;
printjson ( err ) ;
}
finally {
log ( "Script runtime: " + ( new Date ( ) - scriptStartTime ) ) ;
}