Milimetric has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/84862


Change subject: fixing the default filling and slice problem
......................................................................

fixing the default filling and slice problem

Change-Id: Ib7bf30b96a960453da9e121091064e2c1de20036
---
M tests/test_metrics/test_bytes_added.py
M tests/test_metrics/test_timeseries.py
M wikimetrics/metrics/timeseries_metric.py
M wikimetrics/models/report_nodes/aggregate_report.py
4 files changed, 39 insertions(+), 14 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/analytics/wikimetrics 
refs/changes/62/84862/1

diff --git a/tests/test_metrics/test_bytes_added.py 
b/tests/test_metrics/test_bytes_added.py
index 1afb769..43f80c5 100644
--- a/tests/test_metrics/test_bytes_added.py
+++ b/tests/test_metrics/test_bytes_added.py
@@ -165,7 +165,7 @@
         
         metric = BytesAdded(
             namespaces=[0],
-            start_date='2013-01-01 00:00:00',
+            start_date='2012-12-31 09:00:00',
             end_date='2013-01-14 00:00:00',
             positive_only_sum=False,
             negative_only_sum=False,
@@ -176,6 +176,7 @@
         results = metric(list(self.cohort), self.mwSession)
         expected1 = {
             'net_sum': {
+                '2012-12-31 00:00:00' : 0,
                 '2013-01-01 00:00:00' : 100,
                 '2013-01-02 00:00:00' : 0,
                 '2013-01-03 00:00:00' : 0,
diff --git a/tests/test_metrics/test_timeseries.py 
b/tests/test_metrics/test_timeseries.py
index a5e3535..be03f4f 100644
--- a/tests/test_metrics/test_timeseries.py
+++ b/tests/test_metrics/test_timeseries.py
@@ -137,19 +137,22 @@
         results = {
             1: {
                 'test': {
-                    '2013-01-02 00:00:00': 12,
-                    '2013-03-02 00:00:00': 1,
+                    '2013-01-01 00:00:00': 12,
+                    '2013-03-01 00:00:00': 1,
                 }
             },
         }
         r = m.fill_in_missing_datetimes(results, [('test', 1, 0)])
         
+        from pprint import pprint
+        pprint(r)
+        
         assert_equals(r, {
             1: {
                 'test': {
-                    '2013-01-02 00:00:00': 12,
-                    '2013-02-02 00:00:00': 0,
-                    '2013-03-02 00:00:00': 1,
+                    '2013-01-01 00:00:00': 12,
+                    '2013-02-01 00:00:00': 0,
+                    '2013-03-01 00:00:00': 1,
                 }
             },
         })
@@ -164,17 +167,20 @@
         results = {
             1: {
                 'test': {
-                    '2013-03-10 00:00:00': 12,
+                    '2013-01-01 00:00:00': 12,
                 }
             },
         }
         r = m.fill_in_missing_datetimes(results, [('test', 1, 0)])
+        from pprint import pprint
+        pprint(r)
         
         assert_equals(r, {
             1: {
                 'test': {
-                    '2013-03-10 00:00:00': 12,
-                    '2014-03-10 00:00:00': 0,
+                    '2013-01-01 00:00:00': 12,
+                    '2014-01-01 00:00:00': 0,
+                    '2015-01-01 00:00:00': 0,
                 }
             },
         })
diff --git a/wikimetrics/metrics/timeseries_metric.py 
b/wikimetrics/metrics/timeseries_metric.py
index 83423f1..2834dc7 100644
--- a/wikimetrics/metrics/timeseries_metric.py
+++ b/wikimetrics/metrics/timeseries_metric.py
@@ -183,7 +183,7 @@
         
         slice_delta = self.get_delta_from_choice()
         timeseries_slices = dict()
-        slice_to_default = self.start_date.data
+        slice_to_default = self.get_first_slice()
         while slice_to_default < self.end_date.data:
             date_key = format_pretty_date(slice_to_default)
             timeseries_slices[date_key] = None
@@ -202,6 +202,24 @@
         
         return results_by_user
     
+    def get_first_slice(self):
+        """
+        Given a user's choice of timeseries grouping, and the value of the 
start_date,
+        return the first interval in the timeseries
+        """
+        if self.timeseries.data == TimeseriesChoices.NONE:
+            return None
+        
+        d = self.start_date.data
+        if self.timeseries.data == TimeseriesChoices.HOUR:
+            return datetime(d.year, d.month, d.day, d.hour)
+        if self.timeseries.data == TimeseriesChoices.DAY:
+            return datetime(d.year, d.month, d.day, 0)
+        if self.timeseries.data == TimeseriesChoices.MONTH:
+            return datetime(d.year, d.month, 1, 0)
+        if self.timeseries.data == TimeseriesChoices.YEAR:
+            return datetime(d.year, 1, 1, 0)
+    
     def get_delta_from_choice(self):
         """
         Given a user's choice of timeseries grouping,
diff --git a/wikimetrics/models/report_nodes/aggregate_report.py 
b/wikimetrics/models/report_nodes/aggregate_report.py
index 0f228e0..19f5ed2 100644
--- a/wikimetrics/models/report_nodes/aggregate_report.py
+++ b/wikimetrics/models/report_nodes/aggregate_report.py
@@ -107,15 +107,15 @@
                         if not key in aggregation:
                             aggregation[key] = dict()
                             helper[key] = dict()
-                            for subkey in value:
+                        
+                        for subkey in value:
+                            if not subkey in aggregation[key]:
                                 aggregation[key][subkey] = 0
                                 helper[key][subkey] = dict()
                                 helper[key][subkey]['sum'] = Decimal(0.0)
                                 helper[key][subkey]['count'] = 0
-                        
-                        for subkey in value:
-                            value_subkey = value[subkey] or Decimal(0)
                             
+                            value_subkey = value[subkey] or Decimal(0)
                             helper[key][subkey]['sum'] += Decimal(value_subkey)
                             helper[key][subkey]['count'] += 1
                             

-- 
To view, visit https://gerrit.wikimedia.org/r/84862
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib7bf30b96a960453da9e121091064e2c1de20036
Gerrit-PatchSet: 1
Gerrit-Project: analytics/wikimetrics
Gerrit-Branch: master
Gerrit-Owner: Milimetric <dandree...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to