2016-05-12 7 views
0

Erste Schritte mit BigQuery (und Big Data/BI im Allgemeinen) und ein paar Fragen zum Nachverfolgen von Aufträgen im Laufe der Zeit, nur append.BigQuery-Struktur zum Verfolgen von Aufträgen im Laufe der Zeit

Angenommen, ich habe einen Online-Shop/eine ecomm-Site und zugehörige Daten. Wir verkaufen Widgets.

Da meine Bestellungen durch "erstellt", zu "einkaufen", "abgeschlossen", "bestätigt" (von Anbieter) zu "erfüllt"/"ausgeliefert" und manchmal zu "storniert"/"abgelehnt" (durch Wie kann ich das in BigQuery berücksichtigen, so dass ich Visualisierungen für "Erstellte Aufträge, aber nicht abgeschlossene Aufträge", "Aufträge im Datumsbereich" erstellen kann (irgendwie in der Lage, diejenigen zu berücksichtigen, die abgeschlossen wurden, aber storniert/abgelehnt wurden) Anbieter nach Abschluss)

Würde ich verschiedene Tabellen mit "Erstellte Bestellungen" und "Erfüllte Bestellungen" und "Stornierte Bestellungen" füllen oder gibt es einen anderen Mechanismus, um dies zu berücksichtigen, da ich Zeilen nicht aktualisieren kann (von abgeschlossen zu storniert)).

Vielen Dank im Voraus.

+0

Normalerweise enthält BigQuery den Datensatz mit den Tabellen ga_sessions (wenn Sie den Premium-Account haben). Haben Sie diesen Datensatz in Ihrem Konto? –

Antwort

2

unter Betrachten wir als Beispiel dafür, wie Ereignistabelle für sinnvolle Informationen zu analysieren.
Dieses Beispiel wird unter Verwendung von BigQuery Norm SQL, so müssen Sie deaktivieren Use Legacy SQL Checkbox unter Optionen anzeigen

WITH order_events AS (
    SELECT 1 AS orderID, '2015-01-01' AS ts, 'created' AS event UNION ALL 
    SELECT 1 AS orderID, '2015-01-01' AS ts, 'shopping' AS event UNION ALL 
    SELECT 1 AS orderID, '2015-01-02' AS ts, 'completed' AS event UNION ALL 
    SELECT 1 AS orderID, '2015-01-03' AS ts, 'confirmed' AS event UNION ALL 
    SELECT 1 AS orderID, '2015-01-04' AS ts, 'shipped' AS event UNION ALL 
    SELECT 2 AS orderID, '2015-01-01' AS ts, 'created' AS event UNION ALL 
    SELECT 2 AS orderID, '2015-01-01' AS ts, 'shopping' AS event UNION ALL 
    SELECT 2 AS orderID, '2015-01-02' AS ts, 'completed' AS event UNION ALL 
    SELECT 2 AS orderID, '2015-01-03' AS ts, 'declined' AS event UNION ALL 
    SELECT 3 AS orderID, '2015-01-01' AS ts, 'created' AS event UNION ALL 
    SELECT 3 AS orderID, '2015-01-01' AS ts, 'shopping' AS event UNION ALL 
    SELECT 3 AS orderID, '2015-01-02' AS ts, 'completed' AS event UNION ALL 
    SELECT 3 AS orderID, '2015-01-03' AS ts, 'confirmed' AS event UNION ALL 
    SELECT 3 AS orderID, '2015-01-04' AS ts, 'shipped' AS event UNION ALL 
    SELECT 4 AS orderID, '2015-01-01' AS ts, 'created' AS event UNION ALL 
    SELECT 4 AS orderID, '2015-01-01' AS ts, 'shopping' AS event UNION ALL 
    SELECT 4 AS orderID, '2015-01-02' AS ts, 'completed' AS event UNION ALL 
    SELECT 4 AS orderID, '2015-01-03' AS ts, 'confirmed' AS event UNION ALL 
    SELECT 4 AS orderID, '2015-01-05' AS ts, 'canceled' AS event UNION ALL 
    SELECT 5 AS orderID, '2015-01-01' AS ts, 'created' AS event UNION ALL 
    SELECT 5 AS orderID, '2015-01-01' AS ts, 'shopping' AS event 
), 
order_history AS (
    SELECT 
    orderID, 
    (SELECT STRING_AGG(events, ' > ') FROM t.events) AS history 
    FROM (
    SELECT 
     orderID, 
     ARRAY(SELECT event FROM t.events ORDER BY ts ASC) events 
    FROM (
     SELECT 
     orderID, 
     ARRAY_AGG(STRUCT(event, ts)) events 
     FROM order_events 
     GROUP BY orderID 
    ) t 
) t 
) 
SELECT * 
FROM order_history 
#WHERE REGEXP_EXTRACT(history, r'((?:created).*(?:canceled))') IS NOT NULL 

Ergebnis oben visualisieren, um die Geschichte als

Wenn Sie die letzte Zeile mit der WHERE-Klausel auskommentieren, erhalten Sie nur Befehle, die dem angegebenen Muster entsprechen. In diesem Fall: Aufträge, die erstellt, aber abgebrochen wurden.

orderID  history 
4   created > shopping > completed > confirmed > canceled 

Einstellung richtige Regexp gibt Ihnen Flexibilität für jeden Filter für erforderlich Analyse

Hoffnung, das gibt Ihnen eine Idee, und Sie können dies auf Ihre speziellen Bedürfnisse erweitern!

+0

Vielen Dank –

1

Zwei Tische für Sie:

order und order_events

In der Reihenfolge der Auftragsdaten, und in der Ereignistabelle erstellen, speichern Sie alles nach der Bestellung. Die Ereignistabelle enthält eine Spalte event, die beschreiben kann, welche Aktion aufgetreten ist.

Und in Bezug auf Anfragen, verbinden Sie einfach die beiden und schicken Sie das eine, die Sie interessiert sind

+0

Vielen Dank –

Verwandte Themen