주제

1. OLAP 큐브
2. AB Test 분석 시각화
3. 최종 대시보드 생성

 

1. OLAP 큐브

  • 미리 모든 조합에 대해 지표 데이터를 수집한 것을 뜻한다(그림 출처)
  • 이를 바탕으로 시각화를 진행함
  • 장점 : 속도가 빠름
  • 단점 : 필터가 변경될 때마다 데이터 수집 방법을 바꿔야함

OLAP cube 예시

1.1 가상 데이터로 OLAP 큐브 만들기

  • session 기반으로 계산
  • Variant/Date/Age/Gender별로 Measure를 계산
    • session 수, impression, click, purchase, revenue
  • 최종 two-sample t-test를 수행하려면 measure 별로 다음 세가지를 계산
    • 크기(n)
    • 값의 합산
    • 값의 제곱의 합산

1.2 OLAP 큐브 계산 SQL

  • Tableau에서는 이 계산을 모든 조합에 적용한 후 사용
  • 다른 대시보드 툴에서는 필터가 바뀔 때마다 쿼리를 보내는 방식
-- session_hypercube.csv
SELECT datestamp, variant_id, age, gender,
 'impression' category,
 count(1) n, -- number of sessions
 sum(num_of_items) sum,
sum(num_of_items*num_of_items) sum2
FROM jyunghyechoi.analytics_variant_user_daily vds
GROUP BY 1, 2, 3, 4, 5
UNION
SELECT datestamp, variant_id, age, gender,
 'click' category,
 count(1) n, -- number of sessions
 sum(num_of_clicks) sum,
sum(num_of_clicks*num_of_clicks) sum2
FROM jyunghyechoi.analytics_variant_user_daily vds
GROUP BY 1, 2, 3, 4, 5
UNION
SELECT datestamp, variant_id, age, gender,
 'purchase' category,
 count(1) n, -- number of sessions
 sum(num_of_purchases) sum,
sum(num_of_purchases*num_of_purchases) sum2
FROM jyunghyechoi.analytics_variant_user_daily vds
GROUP BY 1, 2, 3, 4
UNION
SELECT datestamp, variant_id, age, gender,
 'revenue' category,
 count(1) n, -- number of sessions
 sum(revenue) sum, sum(revenue*revenue) sum2
FROM jyunghyechoi.analytics_variant_user_daily vds
GROUP BY 1, 2, 3, 4;
  • sum : 세션에서 발생한 행동의 총합
  • sum2 : 세션에서 발생한 행동의 제곱의 총합

 

2. Tableau를 이용한 AB Test 분석 시각화

2.1 Z-score 계산 방법

  • A와 B가 50:50이 되어야 함
  • 귀무가설 : PB가 0.5일 것이다.
  • Z-score의 값이 1.96보다 크면 녹색, -1.96보다 작게 나오면 빨간색, 그 외는 회색으로 표시
  • 큐브에 있는 세션수와 지표별 값의 합과 값의 제곱의 합을 사용
Bucket B Bucket A
n_b : n(세션의 수) n_a : n(세션의 수)
mean_b : r_sum / n (매출액 평균) mean_a : r_sum / n (매출액 평균)
square_b : r2_sum / n (매출액 제곱 평균) square_a: r2_sum / n (매출액 제곱 평균)
var_b : sqaure_b - mean_b * mean_b (매출액 분산) var_a : sqaure_a - mean_a * mean_a (매출액 분산)
  • t-score = (mean_b - mean_a) / math.sqrt(var_a / n_a + var_b / n_b)

2.2 Traffic Trend Chart 만들기

  • 우선 sessions_hypercube.csv를 로컬에 다운받아 Tableau에서 불러오기
  • 새로운 Sheet에 Traffic Trend로 이름을 변경
  • Measures에 우클릭하고 Create Calculated Field 메뉴를 선택하여 새로운 필드 추가
  • n_test : test(B)에 속한 세션의 수

n_test의 계산식

  • f_test : test(B)에 속한 세션의 전체에서의 비율. 이 값이 통계적으로 50%임을 Proportional Z-test로 검증해야함

f_test의 계산식

  • 새로 만들어진 두 개의 필드를 Rows로 드래그 앤 드롭
  • f_test 우클릭 후 Dual axis로 변경
  • Columns에는 Datestamp를 드롭한 후 포맷을 Month/Day/Year를 선택
  • n_test는 bar 타입으로 변경 후 색을 회색으로 변경

2.2.1 Traffic Trend Chart z-score 계산

  • 총 4개의 새로운 필드를 추가 : f_test_diff, f_test_err, f_test_stat, f_test_95CL
# f_test_diff
[f_test] - 0.5

# f_test_err
sqrt(([f_test] - [f_test]^2) / sum([N]))

# f_test_stat
[f_test_diff] / [f_test_err]

# f_test_95CL
IF abs([f_test_stat]) > 1.96 THEN 1 else -1 END
  • f_test_95CL을 f_test의 color로 이동하고 컬러 팔레트를 변경

컬러 옵션

  • Traffic Trend Chart 완성 모습

Traffic Trend Chart

 

2.3 Impression 차트 만들기

  • 새로운 시트를 만들고 Impression으로 이름 변경
  • 새로운 필드 생성
필드 계산식
n_ctrl SUM(if [Variant Id]='control' then [N] end)
ctrl SUM(if [Variant Id]='control' THEN [sum] END)/[n_ctrl]
ctrl_var SUM(if [Variant Id]='control' THEN [sum2] END)/[n_ctrl]-[ctrl]^2
test SUM(if [Variant Id]='test' THEN [sum] END)/[n_test]
test_var SUM(if [Variant Id]='test' THEN [sum2] END)/[n_test]-[test]^2
diff [test]-[ctrl]
diff_frac [diff]/[ctrl]
diff_err sqrt([test_var]/[n_test]+[ctrl_var]/[n_ctrl])
diff_95CL IF [zscore] > 1.96 THEN 1 ELSEIF [zscore] < -1.96 THEN -1 ELSE 0 END
zscore [diff]/[diff_err]
  • Category를 filters에 추가하고 impression을 선택

filters 선택

  • Measure Names를 Rows로 드롭한 후, 필터 수정메뉴에서 ctrl, diff, diff_frac, zscore를 선택
  • Impression 차트도 마찬가지로 diff_95CL을 이용하여 컬러 코딩 진행
  • diff와 diff_95CL을 Marks에 추가. diff_95CL은 또 다시 Color에 추가하여 위와 같은 팔레트 옵션을 지정한다
  • 이렇게 하면 zscore가 1.96보다 크면 초록색, -1.96보다 작으면 빨간색, 그 이외에는 회색으로 표시가 되어 보기가 편해진다

Impression 차트의 모습

 

2.4 Parameter 추가하기

  • 파라미터 : 어떤 변수를 대체할 수 있는 워크북 변수로, 숫자나 날짜, 문자열이 될 수 있다
  • 이 경우에는 Age, Gender, Datestamp를 기준으로 볼 수 있게 옵션을 추가
  • 좌측 하단에 Parameter 메뉴 우클릭 후, Create Parameter.. 선택
  • 파라미터명은 selected_dimension으로 지정, 타입은 문자열
  • Allowable values에 직접 변수를 추가하면 된다

  • 이후에 dimension이라는 새로운 필드 생성

  • dimension 필드를 Columns로 드롭
  • Age와 Gender는 Filters 부분에 드롭하면 필터 박스가 생성된다
  • Datestamp는 필터 박스에서 Range of Dates를 선택
  • Age와 Gender를 우클릭하여 Show Filter 메뉴를 선택하면 차트 오른쪽에 필터가 생성된다
  • 미리 만들어둔 selected_dimension 파라미터 우클릭 후 Show Parameter를 클릭하면 dimension을 고를 수 있는 박스가 생성된다

완성된 모습

 

2.5 Click, Purchase, Revenue 차트 만들기

  • Impression 시트를 Duplicate하여 동일하게 복제한 후, category 필터의 값만 적절하게 변경하면 된다

 

3. 최종 대시보드 생성

  • 새로운 대시보드를 생성하여 Traffic Trend chart부터 Impression/click/purchase/revenue 차트까지 모두 추가한다
  • 필요한 필터를 빼고는 다 제거
  • Impression/click/purchase/revenue 차트는 Fit Width로 변경하여 폭을 조정
  • Impression 차트에서 datestamp 필터를 선택하면 날짜를 조정하며 볼 수 있는 박스가 생성된다
  • 각 필터를 우클릭하여 Apply to Worksheets → All Using This Data Source를 선택해야 모든 차트에 대해 워크시트가 적용이 된다
  • 마지막으로 Tableau Public에 공유

필터 옵션
최종 대시보드 모습

 

+ Recent posts