In BigQuery, verwende ich die folgende Abfrage die Anzahl der täglichen aktiven Nutzer zu erhalten:Falsche Anzahl der täglichen aktiven Nutzer auf Android in BigQuery
`
#legacySQL
SELECT
user_dim.app_info.app_platform as appPlatform,
event_dim.date as eventDate,
COUNT(DISTINCT user_dim.app_info.app_instance_id) as daily_active_users
FROM
TABLE_QUERY([table_name], 'table_id CONTAINS "app_events_"'),
TABLE_QUERY([table_name], 'table_id CONTAINS "app_events_"')
GROUP BY
appPlatform, eventDate
ORDER BY
appPlatform, eventDate
`
Das Ergebnis Diese Abfrage für ein konkretes Datum ist 534 users for Android and 142 users for IOS.
Aber Firebase zeigt, dass es an diesem Tag nur 209 aktive Android-Nutzer gab. Und diese Nummer ist korrekt, weil ich sie mit Daten von Appsee vergleichen kann. Wie bei IOS gibt Firebase genau dieselbe Nummer wie meine Abfrage in BigQuery zurück.
Was ist falsch in meiner Abfrage und wie kann ich dieses Problem lösen?
Ich habe versucht, die Abfrage in SQL-Standard zu schreiben, aber auch: `
#standardSQL
SELECT
event.date as date,
COUNT(DISTINCT user_dim.app_info.app_instance_id) AS daily_visitors
FROM `table.table.app_events_*`
CROSS JOIN UNNEST(event_dim) AS event
GROUP BY date
ORDER BY date DESC
` Aber das Ergebnis dieser Abfrage ist absolut das gleiche wie die zuvor erwähnt: 534 Benutzer pro Tag statt von 209 für Android, korrekte Nummer für IOS.
Also, ich denke, dass das Problem in meinem Missverständnis der inneren FB/BQ-Mechanismen ist.
Bitte helfen Sie mir, die Wurzel des Problems herauszufinden.
Ein Teil des Problems ist, dass COUNT (DISTINCT ...) 'ist nur eine Annäherung, wenn Legacy-SQL. –
können Sie auch versuchen, 'EXACT_COUNT_DISTINCT' anstelle von' COUNT (DISTINCT) 'zu verwenden, wie Elliott darauf hingewiesen hat. Gibt es dennoch einen Grund, die Standardversion von BQ nicht zu verwenden? –
COUNT (DISTINCT) und EXACT_COUNT_DISTINCT geben in meinem Fall die gleichen Ergebnisse. Was meinst du mit "Standard-Version von BQ" sagen? Standard SQL? Und ich habe genau die gleiche Anzahl von Benutzern für IOS wie Firebase zeigt mir, wenn ich COUNT (DISTINCT) oder EXACT_COUNT_DISTINCT. Aber für Android-Nutzer ist das Ergebnis mehr als 2 mal höher als das in FB. – Vlad