def monthly_metrics_between(table_id, from_date, to_date, use_cached=True, use_only_cached=False): date_list = utils.dt_month_range(from_date, to_date) views_dt_range = filter(core.valid_view_dt_pair, date_list) pdf_dt_range = filter(core.valid_downloads_dt_pair, date_list) query_list = [] query_list.extend(generate_queries(table_id, \ 'path_counts_query', \ views_dt_range, use_cached, use_only_cached)) query_list.extend(generate_queries(table_id, \ 'event_counts_query', \ pdf_dt_range, use_cached, use_only_cached)) bulk_query(query_list) # everything should be cached by now use_cached = True # DELIBERATE return metrics_for_range(table_id, views_dt_range, use_cached, use_only_cached)
def test_month_range(self): expected_output = [ (datetime(year=2014, month=12, day=1), datetime(year=2014, month=12, day=31)), (datetime(year=2015, month=1, day=1), datetime(year=2015, month=1, day=31)), (datetime(year=2015, month=2, day=1), datetime(year=2015, month=2, day=28)), (datetime(year=2015, month=3, day=1), datetime(year=2015, month=3, day=31)), ] start_dt = datetime(year=2014, month=12, day=15) end_dt = datetime(year=2015, month=3, day=12) self.assertEqual(expected_output, list(utils.dt_month_range(start_dt, end_dt)))
def monthly(doi, from_date, to_date, source=models.GA): """returns monthly metrics for the given article for the month starting in `from_date` to the month ending in `to_date`""" # because we're not storing dates, but rather a representation of a date date_list = utils.dt_month_range(from_date, to_date) # ll: [(2013-01-01, 2013-01-31), (2013-02-01, 2013-02-28), ...] date_list = [ymd(i[0])[:7] for i in date_list] # ll: [2013-01, 2013-02, 2013-03] return models.Metric.objects \ .filter(article__doi__iexact=doi) \ .filter(source=source) \ .filter(period=models.MONTH) \ .filter(date__in=date_list)
def test_monthly_average(self): sept_2015 = datetime(year=2015, month=9, day=1) dtrange = utils.dt_month_range(sept_2015, sept_2015) from_date, to_date = dtrange[0] resp = general.total_traffic_monthly(self.table_id, from_date, to_date) expected_resp = { "from_date": u"2015-09-01", "to_date": u"2015-09-30", "results": OrderedDict([(u"2015-09", 675857)]), "average": 675857, } self.assertEqual(resp, expected_resp)
def test_monthly_average(self): sept_2015 = datetime(year=2015, month=9, day=1) dtrange = utils.dt_month_range(sept_2015, sept_2015) from_date, to_date = dtrange[0] resp = general.total_traffic_monthly(self.table_id, from_date, to_date) expected_resp = { 'from_date': u'2015-09-01', 'to_date': u'2015-09-30', 'results': OrderedDict([(u'2015-09', 675857)]), 'average': 675857 } self.assertEqual(resp, expected_resp)
def total_traffic_monthly_query(table_id, from_date=None, to_date=None): "returns " from_date = from_date or core.VIEWS_INCEPTION to_date = to_date or datetime.now() month_range = utils.dt_month_range(from_date, to_date) from_date, to_date = month_range[0][0], month_range[-1][1] return { 'ids': table_id, 'max_results': 10000, # 10,000 is the max GA will ever return 'start_date': ymd(from_date), 'end_date': ymd(to_date), 'metrics': 'ga:pageviews', 'dimensions': 'ga:year,ga:month' }