2016-05-12 5 views
0

BigQuery(および大規模なデータ/一般的なBI)を使い始めるだけで、追加によって与えられた注文を時間の経過とともに追跡する方法についてはいくつか質問があります。時間の経過とともに注文を追跡するためのBigQuery構造

私はオンラインストア/ ecommサイトと関連データを持っているとします。ウィジェットを販売しています。

私の注文は、「作成」、「買い物」、「完了」、「確認」(仕入先別)、「履行」/「出荷」、時には「キャンセル」/「拒否」(ベンダー)、どのように私はビジュアル化をビルドすることができますように私はビジュアル化を構築することができます "注文が作成されたが、完了していない"、 "注文は、日付範囲で達成"(何らかの理由で完了したがキャンセル/仕入先が完了した後)

"注文の作成"と "完了した注文"と "キャンセルされた注文"で異なるテーブルを設定するか、これを考慮に入れて、 )。

ありがとうございます。あなたのための

+0

通常、BigQueryには、(あなたがプレミアムアカウントを持っている場合)ga_sessionsテーブルを含むデータセットが付属しています。あなたのアカウントにこのデータセットがありますか? –

答えて

2

は有意義な情報のためのイベントテーブルを解析する方法の一例として、下記考えてみましょう:
この例では、BigQueryの標準を使用していますあなたは

として上記の視覚化の注文履歴の 表示オプション

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 

結果の下にUse Legacy SQLチェックボックスのチェックを外す必要があるので、SQL、​​

WHERE句で最後の行のコメントを外すと、指定したパターンに一致する注文のみが表示されます。この場合は、作成されたがキャンセルされた注文です。適切な正規表現を設定する

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

に必要な分析のためにあなたの希望を任意のフィルタのための柔軟性を与え、これはあなたのアイデアを与え、あなたはあなたの特定のニーズにこれを拡張することができます!

+0

ありがとう –

1

2つのテーブル:

orderorder_events

注文データを作成し、イベントテーブルに、ご注文後に何を保存するために。イベントテーブルには、どのアクションが発生したかを記述できるevent列があります。 。

とクエリについて、あなたは、単に2に参加して興味のあるものを返す

+0

ありがとうございました –

関連する問題