DAU(Daily Active Users) 하루동안 방문한 순수 사용자를 의미한다. 이는 기본적이면서 중요한 메트릭이다. 예를들어, 신규게임을 출시했을때 얼마나 많은 사용자가 하루에 들어왔는지는 중요하다. 게임을 출시하고나서 DAU의 증감률에 따라서 전략을 분석하고, 어떤 마케팅 액션을 취할것인지 의사결정하곤 한다.
sql에서도 ga session 데이터를 활용해서 DAU를 구해볼수 있다. 쿼리는 아래와 같이 간단하며 주의할점은 한가지다. session 테이블에서 user id를 헤아리면 중복되는 경우가 존재하기때문에, 고유 user id 값을 카운트해줘야한다. 하나의 유저가 여러개의 세션을 남길수 있기 때문이다.
select to_char(date_trunc('day', visit_stime), 'yyyy-mm-dd'), count(distinct user_id) as dau
from ga_sess
group by 1
order by 1
;
WAU(Weekly Active Users)와 MAU(Monthly Active Users)도 쿼리의 형태는 동일하며, 날짜(visit_stime)를 어떤 단위로 절삭할건지만 수정해주면된다. 그리고 그 절삭된 일자 단위를 통해 고유 user_id 수를 구해주면 WAU와 MAU를 각각 구하는것이 가능하다.
-- dau
select to_char(date_trunc('day', visit_stime), 'yyyy-mm-dd'), count(distinct user_id) as dau
from ga_sess
group by 1
order by 1
;
-- wau
select to_char(date_trunc('week', visit_stime), 'yyyy-mm-dd'), count(distinct user_id) as wau
from ga_sess
group by 1
order by 1
;
-- mau
select to_char(date_trunc('month', visit_stime), 'yyyy-mm-dd'), count(distinct user_id) as mau
from ga_sess
group by 1
order by 1
;
그러나, 위 쿼리는 정적이다. 때로는 매일 '현재'를 기준으로 DAU, WAU, MAU를 집계하고자하는 요구가 발생한다. 예를들어 오늘을 기준으로해서 "어제", "7일전~어제", "30일전~어제" 의 순수 사용자 수가 궁금할 수 있다. 이를 위해서는 쿼리에 ①반복문과 변수를 활용하는 방법이 있고, ② cross join을 활용하는 방법도 있다. 이 두가지 방법은 다음 포스팅에서 알아보겠다.
'sql' 카테고리의 다른 글
[sql] recursive CTE2 (0) | 2024.03.16 |
---|---|
[sql] DAU2 (0) | 2024.03.16 |
[sql] recursive CTE (0) | 2024.02.17 |
[sql] cross selling (0) | 2024.01.18 |
[sql] 작대비 매출 비교 (1) | 2024.01.10 |