Google-Bigquery
如何從 bigquery 獲得每週未綁定的保留?
我需要獲得每週留存使用者。如果使用者在第 4 週進行了交易,則該使用者在第 0 週、第 1 週、第 2 週、第 3 週、第 4 週時在那裡。
如果使用者在第 0 周和第 3 週進行了交易,那麼使用者將在第 0 週、第 1 週、第 2 週、第 3 周到達謝謝@bbaird,
我正在用準確的資訊和問題更新問題
這是我的表格數據
我正在尋找的結果
使用者數有點累積但唯一的使用者。
例如,如果使用者 1 在第 0 週執行了 3 次事務,則第 0 週的計數為 1
如果使用者 1 在第 0 週執行了 3 次交易,在第 2 週執行了 2 次交易,在第 3 週執行了 1 次交易,那麼計數將是這樣的
week-0 -> 1(即他已執行交易 >= 第 0 週)
第 1 週 -> 1(即他已執行交易 >= 第 1 週)
第 2 週 -> 1(即他已執行交易 >= 第 2 週)
第 3 週 -> 1(即他已執行交易 >= 第 3 週)
可以有任意週數。它不固定為 4 週或 8 週。
這應該是一個相對簡單的聚合
Week
,但是您需要加入大於或等於目前週的所有記錄,並從那裡獲取您的不同計數。但是,Bigquery 需要處理很多行,因此這可能對平台更有效:
SELECT TransactedWeek AS Week ,SUM(SUM(LastWeekInd)) OVER ( PARTITION BY 1 ORDER BY TransactedWeek ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) AS active_users_count FROM ( SELECT DISTINCT UserId ,TransactedWeek ,CASE WHEN TransactedWeek = MAX(TransactedWeek) OVER (PARTITION BY UserId) THEN 1 ELSE 0 END AS LastWeekInd FROM <Your Table> ) x GROUP BY TransactedWeek
您可以添加邏輯來限制內部查詢中的範圍。
注意:如果您的數據中缺少任何星期,它們將在您的最終結果中失去(儘管計數仍然是準確的)。如果您有幾週沒有交易,您可能需要生成一個週列表並將這些結果加入其中。