Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 북마크
- 이전날짜제거
- Def
- Join
- D2E8DA72
- putty
- 아나콘다
- 태블로
- 맵차트
- 파이썬
- concat
- 오류
- vlookup
- random.uniform
- safe mode 해제
- 에러
- 정제
- 살려줘
- SQL
- TabPy
- 전처리
- split
- trim
- 외부접속허용
- 데이터전처리
- 함수
- 태블로퍼블릭
- Tableau
- Delete
- mysql
Archives
- Today
- Total
무던히 하다보면 느는
[mysql] Validating A/B Test Result 본문
(1) 각 user_id 마다 실험 기간 동안 몇 번의 send_message 로그가 발생했는지 계산
실험기간 : 2014-06 한달간
대조군과 실험군의 각 send message 비교
- 실험배정 이후 유저의 행동확인, select ex.occurred_at
- 각 user 마다 실험에 참여한 시각이 다르기에 occurred_at ~ 2014-06-30 23:59:59 event log 참고
- events.occurred_at : 사용자가 실제로 어떤 행동을 한 시점
experiments.occurred_at : 사용자가 실험(A/B 테스트)에 배정된 시점을 의미
더보기
e.occurred_at between ex.occurred_at and '2014-06-30 23:59:59'
events.occurred_at : 행동분석에 사용. A/B 테스트 이후 이 사용자가 어떤 행동을 했는지 확인
experiments.occurred_at : A/B 테스트 효과 분석 시, 이 시점부터 사용자의 행동을 관찰해야 하므로, 이 이후에 발생한 이벤트만 고려
- user가 실험기간 동안에 한 번도 이벤트를 발생 시키지 않은 유저일 수 있음 -> left join
- count(*) X 이벤트가 없는 user도 카운팅 됨
![]() |
![]() |
![]() |
select u.user_id
, u.activated_at
, ex.experiment
, ex.experiment_group
, ex.occurred_at
, count(e.user_id) as cnt_send_message -- count(*) X 이벤트가 없는 user도 카운팅 됨
from tutorial.yammer_experiments ex
inner join tutorial.yammer_users u on ex.user_id = u.user_id
left join tutorial.yammer_events e
on ex.user_id = e.user_id
and e.occurred_at between ex.occurred_at and '2014-06-30 23:59:59'
and e.event_name = 'send_message'
where experiment = 'publisher_update'
group by u.user_id, u.activated_at, ex.experiment, ex.experiment_group,
ex.occurred_at
(2) 그룹별 계산
select experiment_group
, count(user_id) as users
, avg(cnt_send_message) as average
, sum(cnt_send_message) as total
from (
select u.user_id
, ex.experiment_group
, count(e.user_id) as cnt_send_message -- count(*) X 이벤트가 없는 user도 카운팅 됨
from tutorial.yammer_experiments ex
inner join tutorial.yammer_users u on ex.user_id = u.user_id
left join tutorial.yammer_events e
on ex.user_id = e.user_id
and e.occurred_at between ex.occurred_at and '2014-06-30 23:59:59'
and e.event_name = 'send_message'
where experiment = 'publisher_update'
group by u.user_id, ex.experiment_group
) smbu -- send message by user
group by experiment_group
'코딩테스트' 카테고리의 다른 글
[mysql] Investigating a Drop in User Engagement (2) (0) | 2025.04.25 |
---|---|
[mysql] Investigating a Drop in User Engagement (0) | 2025.04.24 |
[python] leetcode 집계함수 문제 (1) | 2025.04.18 |
[python] 집계 기본 함수 정리 (2) (0) | 2025.04.17 |
[python] 통계 관련 함수 정리 (0) | 2025.04.17 |