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