summary refs log tree commit diff
path: root/eg
diff options
context:
space:
mode:
Diffstat (limited to 'eg')
-rw-r--r--eg/mapred_01.pl26
-rw-r--r--eg/mapred_02.pl27
-rw-r--r--eg/mapred_03.pl43
3 files changed, 96 insertions, 0 deletions
diff --git a/eg/mapred_01.pl b/eg/mapred_01.pl
new file mode 100644
index 0000000..76e26b2
--- /dev/null
+++ b/eg/mapred_01.pl
@@ -0,0 +1,26 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use 5.010;
+
+use Net::Riak;
+
+my $riak = Net::Riak->new();
+my $result;
+
+$result = $riak->add('goog')->map(get_day_where_high_is('600.00'))->run;
+say "days where high is over 600:";
+map { say $_ } sort {$a cmp $b } @$result;
+
+sub get_day_where_high_is {
+    my $val = shift;
+"
+function(value, keyData, arg) {
+  var data = Riak.mapValuesJson(value)[0];
+  if(data.High && data.High > $val)
+    return [value.key];
+  else
+    return [];
+}
+";
+}
diff --git a/eg/mapred_02.pl b/eg/mapred_02.pl
new file mode 100644
index 0000000..31ab0eb
--- /dev/null
+++ b/eg/mapred_02.pl
@@ -0,0 +1,27 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use 5.010;
+
+use YAML;
+use Net::Riak;
+
+my $riak = Net::Riak->new();
+my $result;
+
+$result = $riak->add('goog')->map(days_where_close_is_lower_than_open())->run;
+say "days where close is lower than open";
+map { say $_ } sort {$a cmp $b} @$result;
+
+sub days_where_close_is_lower_than_open {
+    "
+function(value, keyData, arg) {
+  var data = Riak.mapValuesJson(value)[0];
+  if(data.Close < data.Open)
+    return [value.key];
+  else
+    return [];
+}
+";
+}
+
diff --git a/eg/mapred_03.pl b/eg/mapred_03.pl
new file mode 100644
index 0000000..228260b
--- /dev/null
+++ b/eg/mapred_03.pl
@@ -0,0 +1,43 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use 5.010;
+
+use Net::Riak;
+
+my $riak = Net::Riak->new();
+my $result;
+
+$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;
+            })
+         ];
+}
+";
+}
+