2016-05-12 72 views
0

剛剛開始使用BigQuery(以及大數據/商務智能一般),並且有幾個關於如何隨着時間的推移追蹤訂單的問題。BigQuery結構跟蹤訂單隨着時間的推移

比方說,我有一個在線商店/ ecomm網站和相關數據。我們銷售小部件。由於我的訂單是通過「創建」,「購物」,「完成」到「確認」(由供應商)進行「履行」/「發貨」,有時是「取消」/「拒絕」供應商),我如何解釋BigQuery中的問題,以便我可以爲「已創建但未完成的訂單」,「在日期範圍內完成的訂單」構建可視化(以某種方式能夠說明那些已完成但被取消/拒絕供應商完成後)

我會用「已創建訂單」和「已完成訂單」和「已取消訂單」來填充不同的表格嗎?還是有一些其他機制來解決這個問題,因爲我無法更新行(從已完成更改爲已取消)。

預先感謝您。

+0

通常,BigQuery附帶包含ga_sessions表的數據集(如果您有高級帳戶)。你的賬戶裏有這個數據集嗎? –

回答

2

考慮下面爲如何分析事件表進行有意義的信息的例子:
這個例子使用的BigQuery標準SQL,所以你需要取消Use Legacy SQL顯示選項複選框

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 

結果上面形象化歷史訂單作爲

​​

現在,如果您將取消與WHERE子句的最後一行的註釋 - 您將只獲得與給定模式匹配的訂單 - 在此情況下:創建但取消的訂單。

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

設置適當的正則表達式爲您提供了靈活性,對任何過濾器需要分析

希望這給你出個主意,你可以擴展您的具體需求!

+0

非常感謝 –

1

兩個表爲您提供:

orderorder_events

在您創建訂單數據的順序,並在事件表,您存儲命令後什麼。事件表將有一個event列,可以描述遇到的操作。

和關於查詢,您只需加入這兩個並返回一個你感興趣的

+0

非常感謝你 –

相關問題