summary refs log tree commit diff
path: root/eg/mapred_03.pl
blob: 9f2e27dd49c3f03a10d7ddc14f4d6edb6f393ab2 (plain) (blame)
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
38
39
40
41
42
#!/usr/bin/env perl
use strict;
use warnings;
use 5.010;

use Net::Riak;

my $riak = Net::Riak->new();

my $result =
  $riak->add('goog')->map(map_max_daily_variance())
  ->reduce(reduce_max_daily_variance())->run;
say "max daily variance";
map { say $_ . " => ". $result->[0]->{$_} } sort {$a cmp $b} keys %{$result->[0]};

sub map_max_daily_variance {
    "
function(value, keyData, arg){
  var data = Riak.mapValuesJson(value)[0];
  var month = value.key.split('-').slice(0,2).join('-');
  var obj = {};
  obj[month] = data.High - data.Low;
  return [ obj ];
}
";
}

sub reduce_max_daily_variance {
    "
function(values, arg){
  return [ values.reduce(function(acc, item){
             for(var month in item){
                 if(acc[month]) { acc[month] = (acc[month] < item[month]) ? item[month] : acc[month]; }
                 else { acc[month] = item[month]; }
             }
             return acc;
            })
         ];
}
";
}