webentwicklung-frage-antwort-db.com.de

Piwik / Matomo-Archiv: Warum gibt es drei Datensätze für den Monatszeitraum?

Ich verwende einen Cron-Job, um den automatischen Archivierungsprozess für Matomo auszuführen. Es funktioniert großartig. Ich analysiere einige der Daten und habe festgestellt, dass ich beim Filtern der Daten in einer numerischen Archivtabelle für Zeitraum 3 (dh die Gesamtzahl der Besuche für einen bestimmten Monat) drei Datensätze für jede Site zurückerhalte. Ich hatte jedoch nur erwartet, eine für jede Site zu sehen, z. Die Gesamtzahl der Besuche auf einer Website für einen einzelnen Monat. Von diesen drei Datensätzen, die für eine einzelne Site zurückgegeben werden, scheint der älteste Datensatz in der Abfrage die Summe der beiden späteren Datensätze zu sein, und der älteste Datensatz ist die Gesamtzahl der Besuche auf der Site für einen bestimmten Monat.

Hier ist ein Beispiel für die Abfrage:

select * from piwik.piwik_archive_numeric_2019_10 as q
where q.name = 'nb_visits' and q.idsite = 1 and q.period = 3;

Weiß jemand, warum für den Monatszeitraum (z. B. Zeitraum 3) drei Datensätze aus einer piwik_archive_numeric_<date> - Tabelle zurückgegeben werden?.

1
joshmcode

die Antwort auf den Joshmcode ist korrekt. In Matomo gibt es mehrere Archive. Es kann mehrere Archive für denselben Zeitraum und dieselbe Site geben, z. B. wenn Sie mehrere Segmente haben oder wenn mehrere Archive zu unterschiedlichen Tageszeiten verarbeitet wurden und die "veralteten" Archive möglicherweise noch nicht gelöscht wurden. Sie können im Feld idarchive nachsehen, zu welchen Archiven es gehört.

1
mattab

OP-Hinweis: Ich bin zu 85% sicher, dass dies korrekt ist. Wenn jemand eine bessere Erklärung hat, posten Sie diese bitte.

Die Lösung befindet sich im Wert done in der Spalte name der Archivtabelle. Grundsätzlich ist überall dort, wo es einen Datensatz gibt, in dem die Namensspalte = done ist, das entsprechende idarchive der zugehörige korrekte Schlüssel für andere Aufzeichnungen. Wenn eine Zeile beispielsweise done in der Namensspalte enthält und idarchive1234 Ist, ist der richtige sum_visit_length Datensatz für eine bestimmte Site derjenige Dabei ist idarchive1234, auch wenn für diese Site möglicherweise andere Werte vorhanden sind.

So habe ich das in einem praktischeren Sinne verwendet:

select * from piwik.piwik_archive_numeric_2019_10 as q
where q.period = 3 and q.name = 'nb_users' and q.idarchive in
                                                (select q.idarchive from 
                                                 piwik.piwik_archive_numeric_2019_10 
                                                 as q where q.name = 'done');

Das obige Skript findet alle idarchive -Werte, wobei die Spalte name gleich done ist, und dann nimmt die äußere Abfrage nur Werte von nb_users An, wobei das entsprechende idarchive value befindet sich in der Unterabfrage.

0
joshmcode