跳至主要內容
Telemetry
產品分析 SQL查詢範例

使用 SQL 建置註冊到啟用渠道

透過註冊、入職、整合和第一價值里程碑計算唯一使用者轉化。

中級product_events已審查 2026-07-27測試用 阿帕奇 DataFusion 45.2.0

審閱者 Telemetry產品團隊 . SQL 相容性、事件契約、合成輸出和操作注意事項. 審查標準和所有權

問題已回答

新使用者在達到第一個價值之前會離開哪裡?

僅當每個步驟都有行為定義時,漏斗才有用。此查詢為每個使用者建立一行,強制執行里程碑順序,並計算註冊和上一步的轉化。

活動合約

查詢期望的欄位

欄位型別為什麼存在
timestamp_utcTimestamp當產品事件發生時。
user_idUtf8穩定的使用者識別符號。
event_nameUtf8穩定的 snake_case 里程碑名稱。
sourceUtf8收購或活動來源。
DataFusion SQL

複製查詢

sql
WITH events AS (
  SELECT user_id, event_name, timestamp_utc
  FROM product_events
  WHERE timestamp_utc >= now() - INTERVAL '30 days'
),
signups AS (
  SELECT user_id, MIN(timestamp_utc) AS signed_up_at
  FROM events WHERE event_name = 'signup_completed'
  GROUP BY user_id
),
onboarding AS (
  SELECT s.user_id, s.signed_up_at, MIN(e.timestamp_utc) AS onboarded_at
  FROM signups AS s
  LEFT JOIN events AS e ON e.user_id = s.user_id
    AND e.event_name = 'onboarding_completed'
    AND e.timestamp_utc >= s.signed_up_at
  GROUP BY s.user_id, s.signed_up_at
),
integrations AS (
  SELECT o.user_id, o.signed_up_at, o.onboarded_at,
    MIN(e.timestamp_utc) AS integrated_at
  FROM onboarding AS o
  LEFT JOIN events AS e ON e.user_id = o.user_id
    AND e.event_name = 'integration_connected'
    AND e.timestamp_utc >= o.onboarded_at
  GROUP BY o.user_id, o.signed_up_at, o.onboarded_at
),
user_funnel AS (
  SELECT i.user_id, i.signed_up_at, i.onboarded_at, i.integrated_at,
    MIN(e.timestamp_utc) AS activated_at
  FROM integrations AS i
  LEFT JOIN events AS e ON e.user_id = i.user_id
    AND e.event_name = 'first_value_completed'
    AND e.timestamp_utc >= i.integrated_at
  GROUP BY i.user_id, i.signed_up_at, i.onboarded_at, i.integrated_at
),
stage_counts AS (
  SELECT 1 AS step_order, 'Signed up' AS step, COUNT(signed_up_at) AS users
  FROM user_funnel
  UNION ALL
  SELECT 2, 'Onboarded', COUNT(onboarded_at) FROM user_funnel
  UNION ALL
  SELECT 3, 'Integrated', COUNT(integrated_at) FROM user_funnel
  UNION ALL
  SELECT 4, 'Activated', COUNT(activated_at) FROM user_funnel
)
SELECT
  step_order,
  step,
  users,
  100.0 * users
    / NULLIF(MAX(CASE WHEN step_order = 1 THEN users END) OVER (), 0)
    AS conversion_from_signup_pct,
  100.0 * users
    / NULLIF(LAG(users) OVER (ORDER BY step_order), 0)
    AS conversion_from_previous_pct
FROM stage_counts
ORDER BY step_order;

此只讀查詢是針對空型別資料表計劃和執行的 阿帕奇 DataFusion 45.2.0。確定性樣本輸出是綜合的並單獨審查;根據您自己的資料驗證欄位型別、閾值和業務定義。 閱讀測試方法。

查詢結果

註冊到啟用渠道

最大的絕對損失發生在入職完成之前,而整合仍然是後期最嚴重的瓶頸。

step_orderstepusersconversion_from_signup_pctconversion_from_previous_pct
1Signed up8100
2Onboarded67575
3Integrated45066.67
4Activated337.575

綜合範例輸出。在將其用於操作決策之前,針對您自己的事件架構和閾值執行查詢。

Signup-to-activation funnel:來自 Build a Signup-to-Activation Funnel in SQL 範例結果的合成 users 值的靜態圖表
確定性範例輸出的可索引 SVG。下載它以獲取帶有歸屬的文章、操作手冊或設計評論。

重現範例

下載公共裝置

JSON 包包含型別化事件契約, reproducible 輸入行、確切的 SQL、預期輸出、審閱註釋和引擎版本。 CSV 包含顯示的結果。

SQL 是如何工作的

  1. 1Each CTE selects the first milestone at or after the previous eligible stage, retaining one row per signed-up user.
  2. 2A missing or out-of-order milestone blocks all later steps. A later valid retry can advance the user, and duplicates count once.
  3. 3該查詢報告註冊轉化和上一步轉化,使總效能和最大轉換損失一起可見。
  4. 4事件名稱應代表已完成的里程碑,而不是不能證明使用者已完成該步驟的頁面檢視或按鈕點選。

需要決定的邊緣情況

  • 使用基於註冊時間的佇列視窗,併為最近的註冊留出足夠的時間來啟用。
  • 遲到的事件可能會暫時使使用者在最近計算的漏斗中向後移動。
  • 僅當總漏斗有足夠的容量後才按採集源進行細分。

推薦儀表板

  • 漏斗欄:使用者逐步
  • 折線圖:按註冊周劃分的啟用率
  • 資料表:按來源、計劃或角色劃分的轉換

警示指導

當成熟註冊群體的啟用率大幅低於其最近的基線時,請使用低緊急度警示。

讀取警示設定

讓查詢範例發揮作用

相關埋點和指南

定義源資料

此分析的事件模式

繼續分析

在真實事件中執行它

建立資料表,調整欄位並儲存結果

免費開始,傳送結構化事件,並將查詢結果用作圖表、共享儀表板小工具或警示輸入。

獲取 API 金鑰