Ich versuche, ein Abfrageergebnis von BigQuery zurückgeben, die die Anzahl der Ereignisse nach Sitzung zurückgegeben. Ich habe in dem folgenden Artikel bezogen haben:BigQuery Ereignisanalyse Join in Subselect-Anweisung
http://developer.streak.com/2013/11/using-google-bigquery-for-event-tracking.html
Das Datenbankschema ist ziemlich einfach [sessionId, eventtype, createdAt] Das zurückkehrende Ergebnismenge auf ein Ereignis Workflow in Google Analytics ähnlich sein würde. So etwas wie [sessionId, num_event1, num_event2, ...]
Der Ansatz besteht darin, Unterabfragen nach Ereignistyp und Zeitstempel zu generieren und dann zusätzliche Unterabfragen zu erstellen, die die Ergebnisse aus jeder der Ereignisunterabfragen verbinden. Ich bin in der Lage zu tun Schritt 1, Schritt 2, Schritt 3 Subqueries in Isolation:
SELECT COUNT(first_event_timestamp) AS number_first_events,
COUNT(second_event_timestamp) AS number_second_events,
COUNT(third_event_timestamp) AS number_third_events
FROM
(SELECT eventUid AS eventUid1,
createdAt AS timestamp1
FROM [events_table]
WHERE eventType = 'first-event') step1,
(SELECT eventUid AS eventUid2,
createdAt AS timestamp2
FROM [events_table]
WHERE eventType = 'second-event') step2,
(SELECT
eventUid as sessionId3,
createdAt as timestamp3
FROM
[events_table]
WHERE
eventType = "third_event") step3
Hinzufügen steps1_2, steps1_2_3 ist, wo ich eine Wand am schlägt. Ich bekomme einen Fehler, dass der Dateiname in der Tabelle fehlt. Hier ist die vollständige Abfrage: sessionId num_first_event num_second_event num_third_event S1 1 null null S2 2 3 null S3 4 5 6
Mein erster:
SELECT COUNT(first_event_timestamp) AS num_first,
COUNT(second_event_timestamp) AS num_second,
COUNT(third_event_timestamp) AS num_third
FROM (SELECT
sessionId
first_event_timestamp,
second_event_timestamp,
third_event_timestamp
FROM steps1_2_3
GROUP BY sessionId),
(SELECT
sessionId AS sessionId1,
createdAt AS timestamp1
FROM
[events_table]
WHERE
eventType = "first_event") step1, (SELECT
eventUid AS sessionId2,
createdAt AS timestamp2
FROM
[events_table]
WHERE
eventType = "second_event") step2, (SELECT
eventUid AS sessionId3,
createdAt AS timestamp3
FROM
[events_table]
WHERE
eventType = "third_Event") step3, (SELECT sessionId1,
timestamp1,
IF(timestamp1 < timestamp2, timestamp2, NULL) AS timestamp2
FROM
(SELECT sessionId1,
timestamp1,
timestamp2
FROM step1
LEFT JOIN step2
ON sessionId1 = sessionId2)) steps1_2, (SELECT sessionId1 as sessionId,
timestamp1 as first_event_timestamp,
timestamp2 as second_event_timestamp,
IF(timestamp2 < timestamp3, timestamp3, NULL) as third_event_timestamp
FROM
(SELECT sessionId2,
timestamp2,
timestamp3
FROM steps1_2
LEFT JOIN step3
ON sessionId1 = sessionId3)
) steps1_2_3
Das ideale Ergebnismenge in etwa wie folgt aussehen würde Frage ist, ob es möglich ist, in Unterabfragen steps1_2, steps1_2_3 beizutreten?
Alternative Ansätze zum Erreichen eines Ereignisses wie Arbeitsablauf in BigQuery, anstatt die Anzahl der Zeitstempel zu zählen?
Jeder Tipp oder vorgeschlagene Dokumentation wird sehr geschätzt Darüber hinaus, vielen Dank für Ihre Zeit und Rücksicht.
Wichtige auf SO, können Sie Antwort markieren, indem Sie das Häkchen auf der linken Seite der entsandten Antwort akzeptiert, unter der Abstimmung. Siehe http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work#5235, warum dies wichtig ist. Es gibt mehr ... Sie können überprüfen, was zu tun ist, wenn jemand Ihre Frage beantwortet - http://stackoverflow.com/help/someone-answers. –