From e93df59cf5c9c932ba853d6eefcbf5c5b5d4774c Mon Sep 17 00:00:00 2001 From: Ian Murray Date: Fri, 5 Oct 2012 11:44:02 +0100 Subject: [PATCH] [ec] Fix for small bug in tracking running totals. Fix for a bug where the running totals for the first day a page was visited were being counted twice. ie: If on day 1, a given dataset page is visited by 2 distinct users, then the count for that day will be 2, but both running total columns will show 4. This doubling only occurs on the first day: subsequent days' running totals will still be out-by-N (where N is the error on the first day), but not continue to double --- ckan/lib/cli.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ckan/lib/cli.py b/ckan/lib/cli.py index 04d89e8a13f..516c1ff1ae2 100644 --- a/ckan/lib/cli.py +++ b/ckan/lib/cli.py @@ -963,16 +963,16 @@ def update_tracking(self, engine, summary_date): # update summary totals for resources sql = '''UPDATE tracking_summary t1 SET running_total = ( - SELECT sum(count) + SELECT COALESCE(sum(count), 0) FROM tracking_summary t2 WHERE t1.url = t2.url - AND t2.tracking_date <= t1.tracking_date + AND t2.tracking_date < t1.tracking_date ) + t1.count ,recent_views = ( - SELECT sum(count) + SELECT COALESCE(sum(count), 0) FROM tracking_summary t2 WHERE t1.url = t2.url - AND t2.tracking_date <= t1.tracking_date AND t2.tracking_date >= t1.tracking_date - 14 + AND t2.tracking_date < t1.tracking_date AND t2.tracking_date >= t1.tracking_date - 14 ) + t1.count WHERE t1.running_total = 0 AND tracking_type = 'resource';''' engine.execute(sql) @@ -980,16 +980,16 @@ def update_tracking(self, engine, summary_date): # update summary totals for pages sql = '''UPDATE tracking_summary t1 SET running_total = ( - SELECT sum(count) + SELECT COALESCE(sum(count), 0) FROM tracking_summary t2 WHERE t1.package_id = t2.package_id - AND t2.tracking_date <= t1.tracking_date + AND t2.tracking_date < t1.tracking_date ) + t1.count ,recent_views = ( - SELECT sum(count) + SELECT COALESCE(sum(count), 0) FROM tracking_summary t2 WHERE t1.package_id = t2.package_id - AND t2.tracking_date <= t1.tracking_date AND t2.tracking_date >= t1.tracking_date - 14 + AND t2.tracking_date < t1.tracking_date AND t2.tracking_date >= t1.tracking_date - 14 ) + t1.count WHERE t1.running_total = 0 AND tracking_type = 'page' AND t1.package_id IS NOT NULL