Ich habe eigentlich keine Ahnung, wie eine solche Abfrage durchführen. Ich habe 2 Tabellen in meinem Google BigQuery:2 Tabellen beitreten: Impressions zählen vor der Konvertierung
erste Tabelle (Impressionen):
+-----------+--------+------------+-------+
| Timestamp | UserID | Event_Type | Count |
+-----------+--------+------------+-------+
| 100 | 111 | impression | 2 |
| 105 | 111 | impression | 1 |
| 110 | 111 | impression | 1 |
| 120 | 111 | impression | 2 |
| 100 | 222 | impression | 1 |
| 105 | 222 | impression | 1 |
| 110 | 222 | impression | 1 |
| 120 | 222 | impression | 1 |
+-----------+--------+------------+-------+
zweite Tabelle (Conversions):
+-----------+--------+------------+-------+
| Timestamp | UserID | Event_Type | Count |
+-----------+--------+------------+-------+
| 115 | 111 | conversion | 1 |
| 117 | 222 | conversion | 1 |
+-----------+--------+------------+-------+
Was ich zu bekommen - Anzahl der Impressions pro Benutzer benötigt für die Konvertierung, also muss ich alle Impressionen zählen, die vor der Konvertierung passiert sind (nach Zeitstempel - es ist tatsächlich im Unix-Format).
+--------+--------------------+
| UserID | Impressions Needed |
+--------+--------------------+
| 111 | 4 |
| 222 | 3 |
+--------+--------------------+
Ich kann diese Tabellen von UserID JOIN und Gesamtzahl der Impression und Conversions erhalten, kann ich ihnen Vereinigung und Art von Benutzer-ID und Zeitstempel, aber ich habe keine Ahnung, wie die endgültige Antwort zu bekommen, so habe ich leider nichts hier zu zeigen. Ich hoffe, es gibt einen Weg dies zu tun und jemand hier kann mir dabei helfen.
Die Antwort ist (Standard-SQL):
SELECT t2.User_ID, COUNT(t1.User_ID) as ImpressionsNeeded FROM ( SELECT MIN(Event_Time) as Event_Time, User_ID, Advertiser_ID, Campaign_ID, count(*) AS Conv_Count FROM ``db.dcm_account111111.activity_111111_*`` WHERE _TABLE_SUFFIX BETWEEN '20170101' AND '20170110' AND Advertiser_ID = '888888' AND Campaign_ID = '888888' AND Event_Sub_Type = 'POSTCLICK' GROUP BY User_ID, Advertiser_ID, Campaign_ID ) as t2 LEFT JOIN ( SELECT Event_Time, User_ID, Advertiser_ID, Campaign_ID, count(*) AS Imps_Count FROM ``db.dcm_account111111.impression_111111_*`` WHERE _TABLE_SUFFIX BETWEEN '20170101' AND '20170110' AND Advertiser_ID = '888888' AND Campaign_ID = '888888' GROUP BY Event_Time, User_ID, Advertiser_ID, Campaign_ID ) as t1 ON t1.User_ID = t2.User_ID AND t1.Advertiser_ID = t2.Advertiser_ID AND t1.Campaign_ID = t2.campaign_ID AND t1.Event_Time < t2.Event_Time GROUP BY t2.User_ID ORDER BY ImpressionsNeeded DESC
ich den obigen Beispielcode hinzugefügt haben (verwendet, um Ihre Antwort, aber es hat nicht funktioniert) –
@EdgardGomezSennovskaya. . . Wechseln Sie zu Standard-SQL. –
Ich habe "Use Legacy SQL" Kontrollkästchen aktiviert –