From 6eb09249d02cdadd6302d14bcff933febda758df Mon Sep 17 00:00:00 2001 From: Thomas Steur <thomas.steur@gmail.com> Date: Tue, 12 Jan 2016 01:16:24 +0000 Subject: [PATCH] fixes #9357 API response may include more unique visitors than visits --- core/ArchiveProcessor.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/core/ArchiveProcessor.php b/core/ArchiveProcessor.php index 0485cc3532..f24b4993b6 100644 --- a/core/ArchiveProcessor.php +++ b/core/ArchiveProcessor.php @@ -442,6 +442,16 @@ class ArchiveProcessor $metrics[] = $uniqueVisitorsMetric; $uniques = $this->computeNbUniques($metrics); + + // see edge case as described in https://github.com/piwik/piwik/issues/9357 where uniq_visitors might be higher + // than visits because we archive / process it after nb_visits. Between archiving nb_visits and nb_uniq_visitors + // there could have been a new visit leading to a higher nb_unique_visitors than nb_visits which is not possible + // by definition. In this case we simply use the visits metric instead of unique visitors metric. + $visits = $row->getColumn('nb_visits'); + if ($visits !== false && $uniques[$uniqueVisitorsMetric] !== false) { + $uniques[$uniqueVisitorsMetric] = min($uniques[$uniqueVisitorsMetric], $visits); + } + $row->setColumn('nb_uniq_visitors', $uniques[$uniqueVisitorsMetric]); $row->setColumn('nb_users', $uniques[Metrics::INDEX_NB_USERS]); } -- GitLab