본문 바로가기
SQL/SQL test

[BigQuery] 현업 문제 해결 쿼리 작성(2) : 인사이트 적용 전, 지표 분석

by ISLA! 2024. 1. 8.

배경

 

현업 문제 해결 쿼리 작성(1)에서의 분석을 바탕으로 전환율이 떨어지는 부분을 개선하고자 한다.

근래 타 페이지에서 유저에게 스킬셋을 적극 노출해을 때 유저 반응이 좋았다라는 분석이 있었다고 하자.

따라서 PO가 해당 인사이트를 바탕으로 공고리스트 페이지에서 스킬셋을 좀 더 적극적으로 노출하고 하는데,

분석가 입장에서 🎖️공고리스트 페이지에서 동일한 인사이트를 적용해도 좋을지에 대해 판단해보자.

 

분석 단계

로그 데이터를 바탕으로 적절한 가설을 세워 검토를 진행한다.

1. 현재 공고리스트 페이지에서 스킬을 활용할 수 있는 기능은 무엇인가요?
👉 필터에서 스킬을 고를 수 있음

2. 유저 코호트를 정의해주세요.
👉  팀에서는 ‘스킬셋 활용’이 공고리스트 페이지에 어떠한 영향을 주는지 확인하고자 한다. 
       따라서, 필터를 사용한 유저와 그 외 나머지(필터를 사용하지 않은 유저)를 코호트로 정의할 수 있다.

3. 확인하고자하는 지표를 정의해주세요.
👉 팀의 목적은 지원 수를 늘리는 것이다. 공고리스트 페이지에서 공고페이지로 전환이 잘 된다면 좋을 것 같다.
      따라서, 지표는 ‘공고리스트 페이지에서 공고페이지로의 전환율(공고페이지 세션 수/공고리스트페이지 세션 수)

4. 가설은 무엇인가요?
👉 공고리스트 페이지에서 필터를 사용한 유저가 필터를 사용하지 않은 유저 대비 공고페이지로의 전환율(공고페이지 세션 수/공고리스트페이지 세션 수)이 높을 것이다.

5. 결론을 공유해주세요. (다음 문제들을 해결 후, 마지막에 제시)

 

문제1. 필터를 사용한 유저와 사용하지 않은 유저 구분

▶︎ event_name=‘jdlist_view’이면서 event_property.use_skill_filter=’used’인 session_id를 구하시오.

- event_property는 값이 json 형식인 컬럼 : 이번 문제에서는 string을 추출해야하므로, json_extract_scalar를 활용

- json_extract_scalar(컬럼명, ‘$.추출하고싶은값’)

WITH
  jdlist_usefilter AS (
  SELECT
    session_id,
    JSON_EXTRACT_SCALAR(event_property,'$.use_skill_filter') AS use_skill_filter
  FROM
    wanted_sample_data.log_data
  WHERE
    event_name='jdlist_view' )
SELECT
  *
FROM
  jdlist_usefilter

 

 

 

문제2. 필터 사용자와 미사용자의 전환율 비교

▶︎ use_skill_filter로 GROUP BY 하여 필터를 사용한 유저와 사용하지않은 유저의 전환율을 비교

 

WITH
  jdlist_usefilter AS (
  SELECT
    session_id,
    JSON_EXTRACT_SCALAR(event_property,'$.use_skill_filter') AS use_skill_filter
  FROM
    wanted_sample_data.log_data
  WHERE
    event_name='jdlist_view' ),

jdview as (
  select session_id
  from wanted_sample_data.log_data
  where event_name='jd_view'
)

SELECT use_skill_filter,
        count(jdlist_usefilter.session_id) as jdlist_session_cnt,
        countif(jdview.session_id is not null) as jdview_session_cnt,
        round(countif(jdview.session_id is not null)/count(jdlist_usefilter.session_id),3) as jdview_rate
FROM
  jdlist_usefilter
LEFT JOIN jdview on jdlist_usefilter.session_id = jdview.session_id
GROUP BY 1

 

 

 

결론 공유

👉 스킬필터를 사용한 유저의 공고의 전환율은 약 80%, 사용하지않은 유저의 전환율은 약 30%

      따라서, 스킬필터를 사용했을 때 공고 전환율이 더 높다는 것을 알 수 있음

👉 스킬 필터를 사용하지않은 유저가 스킬 필터를 사용한 유저보다 약 4배 더 많으므로, 유저에게 스킬필터 사용을 독려 혹은 스킬을 적극적으로 노출할 때 전체 공고리스트 페이지의 전환율이 오를 것으로 기대할 수 있음

 

(유의) 단, 공고페이지에서 확인할 수 있는 지역, 연차 필터 사용여부의 데이터가 확인되지 않음.
해당 데이터가 있다면 ‘필터’를 사용해서 유저의 전환율이 높은건지, ‘스킬필터’를 사용하여 유저의 전환율이 높은건지 더 명확하게 가설을 확인할 수 있을 것으로 기대함.


참고

▶︎ (문제 1의 조건을 만족하면서 event_name=‘jd_view’인 session_id) / (문제 1 조건을 만족하는 session_id)를 구하시오.

- event_property는 값이 json 형식인 컬럼 : 이번 문제에서는 s

with 
jdlist_usefilter as (
  select session_id
  from wanted_sample_data.log_data
  where event_name = 'jdlist_view'
        and json_extract_scalar(event_property, '$.use_skill_filter') = 'used' 
),

jdview as(
  select session_id
  from wanted_sample_data.log_data
  where event_name = 'jdlist_view'
)

select count(jdlist_usefilter.session_id) as jdlist_session_cnt,
        countif(jdview.session_id is not null) as jdview_session_cnt,
        round(countif(jdview.session_id is not null)/count(jdlist_usefilter.session_id),3) as jdview_rate
from jdlist_usefilter
left join jdview on jdlist_usefilter.session_id = jdview.session_id
where jdview.session_id is not null

728x90