이벤트 스키마
쿼리가 예상하는 필드
| 필드 | 유형 | 그것이 존재하는 이유 |
|---|---|---|
| timestamp_utc | Timestamp | 상품 이벤트가 발생한 시점. |
| user_id | Utf8 | 안정적인 사용자 식별자. |
| event_name | Utf8 | 안정적인 snake_case 마일스톤 이름. |
| source | Utf8 | 획득 또는 캠페인 소스. |
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. 결정론적 샘플 출력은 합성되어 별도로 검토됩니다. 자신의 데이터에 대해 필드 유형, 임계값 및 비즈니스 정의를 검증합니다. 테스트 방법론을 읽어보세요.
쿼리 결과
가입부터 활성화까지의 유입경로
온보딩이 완료되기 전에 가장 큰 절대 손실이 발생하는 반면 통합은 나중에 가장 강력한 병목 현상으로 남아 있습니다.
Signed up8
Onboarded6
Integrated4
Activated3
| step_order | step | users | conversion_from_signup_pct | conversion_from_previous_pct |
|---|---|---|---|---|
| 1 | Signed up | 8 | 100 | — |
| 2 | Onboarded | 6 | 75 | 75 |
| 3 | Integrated | 4 | 50 | 66.67 |
| 4 | Activated | 3 | 37.5 | 75 |
합성 예제 출력. 운영 결정에 사용하기 전에 자체 이벤트 스키마 및 임계값에 대해 쿼리를 실행하세요.
SQL 작동 방식
- 1Each CTE selects the first milestone at or after the previous eligible stage, retaining one row per signed-up user.
- 2A missing or out-of-order milestone blocks all later steps. A later valid retry can advance the user, and duplicates count once.
- 3쿼리는 가입 전환과 이전 단계 전환을 모두 보고하여 전체 성능과 최대 전환 손실을 함께 표시합니다.
- 4이벤트 이름은 사용자가 단계를 달성했음을 증명하지 않는 페이지 조회나 버튼 클릭이 아닌 완료된 이정표를 나타내야 합니다.
확인할 경계 사례
- 가입 시간을 기준으로 코호트 기간을 사용하고 최근 가입이 활성화될 때까지 충분한 시간을 허용하십시오.
- 늦게 도착하는 이벤트는 일시적으로 사용자를 최근 계산된 퍼널에서 뒤로 이동시킬 수 있습니다.
- 전체 퍼널의 규모가 충분해진 후에만 획득 소스별로 분류하세요.
추천 대시보드
- 유입경로 막대: 단계별 사용자
- 꺾은선형 차트: 가입 주별 활성화율
- 표: 소스, 계획 또는 페르소나별 변환
이 쿼리에 필요한 이벤트 설정하기
관련 계측 및 가이드
소스 데이터 정의
이 분석을 위한 이벤트 스키마
분석 계속하기
내 이벤트로 실행하기
테이블을 만들고, 필드를 조정하고, 결과를 저장하세요.
무료로 시작하고, 구조화된 이벤트를 보내고, 쿼리 결과를 차트, 공유 대시보드 위젯 또는 알림 입력으로 사용하세요.