AU의 다양한 해석
Facebook은 로그인 사용자를,
Twitter은 광고를 본 사용자를,
Zoom은 일일 회의 참가자를
비지니스에 따라 AU는 다양하게 정의되고 있다.
AU를 활용한 지표
Stickiness : 서비스 애정도
DAU = 2
MAU = 10 이면,
Stickiness = DAU / MAU = 20%이다.
Stickiness 높다면 충성도 높은 사용자층을 확보한 것이고,
Stickiness 낮다면 리텐션에 적신호 들어왔다고 볼 수 있다.
ARPDAU : 비지니스 지속가능성
ARPU = 매출 / 가입자
(Average Revenue Per User, 가입자당 평균 매출)
ARPPU = 매출 / 유료 사용자
(Average Revenue Per Paying User)
ARPDAU = 매출 / DAU
(Average Revenue Per Daily Active User)
회사 A : 매출 100만원, DAU 10명, ARPDAU = 10만원 >>> 높은 객단가와 수익화 가능성
회사 B : 매출 100만원, DAU 100명, ARPDAU = 1만원 >>> 비효율적 but 많은 사용자로 새로운 BM 기회
N포털에 접속한 K군은 몇 명의 사용자일까??
K군의 접속기록을 분류해보자면,
device : 3가지 (PC, 태블릿, 모바일)
cookies(웹 브라우저) : 5가지 (씨크릿, 파이어폭스, 크롬, ip, 사파리)
app Instance(앱 설치) : 2가지 (태블릿, 모바일)
signed-in account : 2가지 (로그인, 비로그인)
하지만 K군의 접속을 1명의 사용자로 잡아낼 수 있을까?
GA4와 + 쿼리로 MAU 확인하기
Web : Client ID <<< 웹 식별자
App : App Instance ID <<< 앱 식별자
BigQuery : user_pseudo_id <<< 미식별자
Step 1. Device 기준
GA4는 디바이스를 cookies(웹 브라우저)와 app Instance(앱 설치)로 구분한다.
브라우저 쿠키 5개
앱 인스턴스 2개로
총 7로 집계된다.
SELECT COUNT(DISTINCT user_pseudo_id) au
FROM `your-project.your_dataset.events_*`
WHERE _TABLE_SUFFIX
BETWEEN FORMAT_DATE('%y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 31 DAY))
AND FORMAT_DATE('%y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
* FORMAT_DATE 함수 *
FORMAT_DATE( date, inputFormat [, outputFormat] )
FORMAT_DATE( "05102004", "ddMMyyyy" )
-- "2004-10-05"
FORMAT_DATE( "05/10/04 13:25", "dd/MM/yy HH:mm", "dd MMM, yyyy hh:mm:ss a" )
-- "05 Oct, 2004 01:25:00 PM"
Step 2. Device + User-ID 기준
사용자 정보를 GA4로 전송해서 User-ID로 통합하고,
수집되지 않은 미식별자(user_pseudo_id)만을 더한다.
고유한 User-ID가 2개
지정된 적이 없는 User-ID(user_pseudo_id)가 2개로
총 4개로 집계된다.
WITH temp_table AS
(
SELECT COUNT(DISTINCT user_id) au
FROM `your-project.your_dataset.events_*`
WHERE _TABLE_SUFFIX
BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 31 DAY))
AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
-- WITH 절을 서브쿼리로 사용하여 디바이스별 AU 쿼리를 반복사용
UNION ALL
SELECT COUNT(DISTINCT user_pseudo_id) au
FROM `your-project.your_dataset.events_*`
WHERE _TABLE_SUFFIX
BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 31 DAY))
AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
AND user_pseudo_id NOT IN
-- 미식별자를 구분하기 위한 IN 조건문
(
SELECT DISTINCT user_pseudo_id
FROM `your-project.your_dataset.events_*`
WHERE _TABLE_SUFFIX
BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 31 DAY))
AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
AND user_id IS NOT NULL
)
)
SELECT sum(au) au_sum FROM temp_table
Step 3. Device + User-ID + Google Signals
사용자의 구글 로그인 계정 정보를 활용하는 방법이다.
(GA4의 Data Collection - Signals - '광고 개인 최적화' 활성화)
1~4로 집계 될 것으로 예상된다.
그래서 K군의 진짜 'AU = 1명' 은?
집계 할 수 없다.
(출처: POSTYPE Business, IBM, 젠트의 프로그래밍 세상)