Google-Bigquery

如何從 bigquery 獲得每週未綁定的保留?

  • January 7, 2021

我需要獲得每週留存使用者。如果使用者在第 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

您可以添加邏輯來限制內部查詢中的範圍。

注意:如果您的數據中缺少任何星期,它們將在您的最終結果中失去(儘管計數仍然是準確的)。如果您有幾週沒有交易,您可能需要生成一個週列表並將這些結果加入其中。

引用自:https://dba.stackexchange.com/questions/282722