使用 SQL 分析同期群留存
保留詢問指定的參與者在開始里程碑後是否返回。有用的保留查詢會說明參與者、佇列事件、合格返回活動、間隔和觀察視窗。在這五個選擇明確之前,“每週保留”是不明確的。
分別建置佇列和活動資料表
WITH cohorts AS (
SELECT
account_id,
date_trunc('week', MIN(timestamp_utc)) AS cohort_week
FROM product_events
WHERE event_name = 'activation_completed'
GROUP BY account_id
),
activity AS (
SELECT DISTINCT
account_id,
date_trunc('week', timestamp_utc) AS activity_week
FROM product_events
WHERE event_name IN ('query_completed', 'dashboard_viewed')
)
SELECT
cohort_week,
activity_week,
COUNT(DISTINCT cohorts.account_id) AS retained_accounts
FROM cohorts
JOIN activity
ON cohorts.account_id = activity.account_id
AND activity.activity_week >= cohorts.cohort_week
GROUP BY cohort_week, activity_week
ORDER BY cohort_week, activity_week;
這一結果保留了佇列和活動周。在確認所選 SQL 引擎支援的日期演算法後,報告層可以將間隙轉換為第 0 周、第 1 周和後續週期。保持中間日期可見可以使邊界錯誤更容易被發現。
定義一次分母
分母是佇列中符合條件的參與者的數量,而不是產生後來活動事件的數量。單獨計算佇列大小並將其加入保留計數中。使用 NULLIF 保護百分比,並在輸出中保留兩個計數。
最近的佇列沒有時間達到較晚的間隔。將這些單元格標記為不完整,而不是將它們視為零保留。還要決定第零周是意味著啟用本身還是啟用後單獨返回。
使用代表持久價值的事件而不是任何後台心跳。排除測試帳戶和具有受控欄位的自動化活動。使用小型裝置驗證身分合併、重複事件、遲到和時區邊界。
閱讀 漏斗分析 瞭解里程碑進展,閱讀 時間分桶 瞭解間隔規則,並在採用另一種 SQL 方言的日期計算之前閱讀 DataFusion SQL 參考。