/
analytics.rb
37 lines (33 loc) · 946 Bytes
/
analytics.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class Analytics
@venue_checkins_map = <<EOF
function() {
emit('avg', { sum: parseInt(this.stats.checkinsCount) });
}
EOF
@user_checkins_map = <<EOF
function() {
var sum = 0;
for( venue in this.venues ) {
sum += parseInt(this.venues[venue]);
}
emit('avg', { sum: sum });
}
EOF
@avg_reduce = <<EOF
function(key, values) {
var sum = 0;
values.forEach( function(value) {
sum += value.sum;
});
return sum/values.length;
}
EOF
def self.avg_checkins_per_user
response = USERS.mapreduce(@user_checkins_map, @avg_reduce,{:out => { :inline => true}, :raw => true});
response["results"][0]["value"]
end
def self.avg_checkins_per_venue
response = VENUES.mapreduce(@venue_checkins_map, @avg_reduce,{:out => { :inline => true}, :raw => true});
response["results"][0]["value"]
end
end