Immer wieder gibt es Irritationen, wenn Benutzer die Zahlen aus der Google Analytics Source Komponente mit den Zahlen im Google Analytics Portal vergleichen. Bei kleineren Datenmengen sind die Daten meistens identisch, bei größeren Datenmengen variieren dagegen die Daten – unter umständen auch recht stark.
Dieses Verhalten stellt nicht direkt einen Fehler innerhalb der SSIS Komponente oder Google API dar, sondern entsteht vielmehr aufgrund der bewusst verwendeten Sampling Methode innerhalb von Google Analytics.
Unter Sampling versteht Google Analytics das Bereitstellen von Daten auf Basis verschiedener Trends innerhalb eines Subsets von Daten. Sampling (oder auch Stichprobe) ist eine weit verbreitete Methode innerhalb der statistischen Analyse und liefert im Normalfall ein sehr ähnliches Resultset verglichen mit den tatsächlichen Daten zurück.
Für vordefinierte Reports verwendet Google normalerweise vorab aggregierten Daten, welche täglich von aufbereitet werden. Bei Ad-Hoc Queries – was der normale Weg über die GA API ist – prüft die Google Analytics vorab, ob die Daten aus den aggregierten Tabellen genommen werden können. Ist dies nicht der Fall, verwnedte GA die Rohdaten um die Aggregationen on the fly zu berechnen.
Um hier weiterhin eine gute Performance zu erzielen, kann Google Analytics diese Daten dann mit Hilfe von Sampling zur Verfügung stellen. Normalerweise wird sampling verwendet, wenn mehr als 500.000 Sessions in einer Anfrage abgefrag werden. Das heißt, wenn die zu analysierende Webseite über ca. 120.000 Sessions pro Tag verfügt, entspricht das Ergebnis auf täglicher Basis den Rohdaten. Wird ein Zeitraum von 5 oder mehr Tagen analysiert, liefert Google Analytics die Daten mit Hilfe des Samplings zurück.
Über die Web-Oberfläche hat man die Möglichkeit die Sampling-Größe zu verändern, weitere Details dazu sind hier zu finden: https://support.google.com/analytics/answer/1733979?hl=en
Google Analytics Premium User haben zusätzlich auch die Möglichkeit un-sampled Daten zu laden. Die Beschränkungen hier liegen bei max. 3 Millionen Datensätzen und max. 200 Millionen Sessions.
Es gibt einige Ansätze – die ich auch schon mit Usern der Google Analytics Source diskutiert habe – wie das Sampling über die API zu großen Teilen vermieden werden kann. Zum einen können die Anzahl der Tage pro Query eingeschränkt werden, so dass z.B. in einer Abfrage nicht mehr als 10 Tage enthalten sind. Zum anderen könnte eine Query auch immer in n-Queries aufgeteilt werden. Beide Ansätze können ein Sampling nict vollständig umgehen, sondern nur die Chance dass Sampling Daten geladen werden verringern. Beide Ansätze stehen gerade mit auf der ToDo-Liste für eine der nächsten Vesionen.
Weitere Informationen zum Sampling sind hier zu finden: https://support.google.com/analytics/answer/1042498?hl=en&ref_topic=2601030
Um allgemein mehr Verständnis über die Daten zu gewinnen, sollte man sich auch einmal die folgenden Artikel durchlesen: