Wie zu tun, subselects in BigQuery
Wir haben eine riesige event-Tabelle mit Benutzer-Registrierung und das spielen unserer Spiele.
Nun möchte ich ermitteln, zweiten Tag Aufbewahrung für jeden Tag ist der Prozentsatz der Spieler, Anmeldung am Tag vorher spielt auch noch am Tag danach.
Also angenommen, wir haben drei Felder
timestamp ts
int userId
int eventId (I.e. 1 = Register, 2 = Login)
Wie ist dies in BigQuery syntax? also ich möchte die folgende Ausgabe:
Date Register Logins day after % Second day retention
2013-08-23 25 563 4 567 17.8
Habe ich nicht mit subselects und joins, aber es muss machbar sein!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie über diese Abfrage mit öffentlichen Daten:
Das gibt mir die gewünschten Ergebnisse:
Hinweis: die Abfrage verwendet
STRFTIME_UTC_USEC(UTC_USEC_TO_DAY(PARSE_UTC_USEC(created_at)), "%Y-%m-%d") day
viele Male, zu konvertieren, die Quelle string-Daten zu einem Datum. Wenn ich im Besitz der Daten, würde ich eine ETL-über den Tisch vorab, überspringen Sie diesen sich wiederholenden Schritt.Der Abfrage joins über 2 Tabellen:
Erste Tabelle zählt, wie viele verschiedene "Akteure", wo in einem bestimmten Datum. Hinweis: der zweite parameter in COUNT DISTINCT, dem Grafen präzise.
Zweiten Tabellen-JOINs einem bestimmten Tag mit dem nächsten Tag, gegeben, dass die gleichen Schauspieler in beiden Tagen. Dann können Sie zählen, wie viele Akteure zugegen, die in einem bestimmten Tag, und in den nächsten Tag.
Verbinden beider Tabellen erhalten Sie beide zählt, und Sie können fortfahren, sich zu teilen.
Gibt es alternative Wege, dies ist nur einer von vielen Ansätzen. Es ist auch möglich, optimieren diese Abfrage noch weiter.