인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

민경님의 프로필 이미지

작성한 질문수

BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)

리텐션 과제

해결된 질문

작성

·

65

0

리텐션 과제 제출합니다 !

쿼리를 짜는 것보다 유저를 어떤 기준으로 나눌 것인지, 리텐션을 어떻게 해석할 것인지 등의 부분이 항상 어려운 것 같습니다 . . ㅠㅠ

최대한 배운 내용을 활용해서 인사이트를 도출해보고자 했습니다. 한번 봐주시면 감사하겠습니다 ㅎㅎ!

https://bubble-supernova-783.notion.site/19defe88476380ef91abc06719a01ba9#1a4efe88476380e6bd84d4ac9602522d

답변 2

1

카일스쿨님의 프로필 이미지
카일스쿨
지식공유자

민경님 안녕하세요! 리텐션 문제 푸시느라 고생하셨어요

실무에서 생각하는 업무 내용과 유사한데, 많은 분들이 어려워하십니다. 어려운 문제지만 이렇게 푸시고 공유해주시는 것 자체가 민경님의 사고력 증진에 도움이 되었을 것 같아요.

 

피드백을 드려볼게요.

 

  • 인당 1달에 6.22번 사용한다고 해주셨는데, 보조적으로 그렇다면 1주일엔 몇 번 이용할까?를 구해보셔도 좋을 것 같아요. 이 두개를 안다면 사람들이 몰려서 접속하는지 혹은 꾸준히 접속하는지도 알 수 있고, 그거에 따라 데이터를 다르게 볼 수 있지요

  • Active의 기준도 잘 잡으셨네요!

  • DAU, WAU에서 DAU의 합과 WAU 차이가 없다는 점을 발견하신 점 👍

  • user_type을 구하시는 경우에 event_date를 가지고 와서 일자별 차이를 구해주셨는데, 이렇게 해도 괜찮지만 저는 그 주차로 다 바꾼 후에 차이를 봅니다. 유저마다 들어오는 일자가 다 달라서 기준점을 만들었어요. 제 샘플 쿼리도 공유드려요

WITH weekly_user_activity AS (
  SELECT
    user_pseudo_id,
    DATE_TRUNC(event_date, WEEK) AS event_week,
    MIN(DATE_TRUNC(event_date, WEEK)) OVER (PARTITION BY user_pseudo_id) AS first_activity_week, 
    LAG(DATE_TRUNC(event_date, WEEK)) OVER (PARTITION BY user_pseudo_id ORDER BY DATE_TRUNC(event_date, WEEK)) AS prev_activity_week
  FROM
    advanced.app_logs
  GROUP BY
    user_pseudo_id,
    event_date
), weekly_user_type AS (
  # 첫 사용이 첫 주차일 경우 new
  # 1주 전에도 사용한 경우 current
  # 첫 사용한지 2주가 지났고, 이전 사용과 지금 사용이 2주가 지났으면 resurrected
  # 그 외엔 이탈로 간주해서 dormant
  SELECT
    *,
    CASE
      WHEN event_week = first_activity_week THEN 'new_user'
      WHEN DATE_DIFF(event_week, prev_activity_week, WEEK) = 1 THEN 'current_user'
      WHEN DATE_DIFF(event_week, first_activity_week, WEEK) > 2 AND DATE_DIFF(event_week, prev_activity_week, WEEK) > 2 THEN 'resurrected_user'
      ELSE 'dormant_user'
  END AS user_type
  FROM weekly_user_activity
)

SELECT
  event_week,
  user_type,
  COUNT(DISTINCT user_pseudo_id) AS user_count
FROM
  weekly_user_type
GROUP BY
  event_week,
  user_type
ORDER BY
  event_week
  • user_type별로 시각화하신 점 잘하셨어요! 이걸 더 잘 보려면 bar 형태보단 plot으로 그려보셔요. 지금은 stack 된 bar라서 전체 추이는 보이긴 하는데, 세부적인 색상(예를 들어 파란색)의 추이를 보는게 약간 어렵죠(일자마다 파란색의 시작점이 다 달라서)

    • 복귀 유저가 증가하는 것으로 추측한 것도 잘 해주셨고, 회사였다면 실제로 어떤 일이 발생했나 확인하는 것이 좋지요

    • 이럴 때 신규 유저에게 필요한 전략을 찾아야 하고, 신규 유저들은 그럼 앱에 들어와서 무엇을 하는지 데이터를 보는 것도 추천합니다(한번만 들어오고 이탈한 사람들은 어떤 행동까지 했을까?)

  • 주어진 데이터에서 어떤 사람들이 리텐션이 높을까 관점은 처음엔 일자별로 뿌려볼 수 있고, 다음에는 특정 이벤트의 조합으로 리텐션을 구해볼 수 있어요. 예를 들어서 카트 페이지에 3회 이상 간 집단과 아닌 집단의 리텐션 차이가 있는가?(물론 모수가 어느정도 있긴 해야겠죠) 이렇게 여러 리텐션을 뽑고 비교하는 것이 필요합니다

 

문제 푸시느라 너무 고생하셨어요!!! 궁금한 내용 있으면 또 말씀해주셔요.

 

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 민경님!

리텐션 과제를 제출해 주셔서 감사합니다. 유저를 어떤 기준으로 나눌 것인지와 데이터를 해석하는 부분은 리텐션 분석에서 매우 중요한 요소입니다. 이를 잘 이해하기 위해 다양한 리텐션 관련 질문과 답변을 참고해보시면 도움이 될 것입니다.

아래는 리텐션 분석에 관한 유사한 해결책과 예제가 포함된 링크들입니다:

  1. 리텐션 과제 작성: 이 게시물에서는 리텐션 쿼리에 대한 일반적인 피드백과 효율성을 높이는 방법에 대한 조언이 포함되어 있습니다.

  2. 리텐션 분석 과제: 리텐션 분석을 진행하면서 발생할 수 있는 문제와 이 과제를 해결하는 방법에 대한 자세한 논의가 있습니다. 쿼리 작성의 논리와 데이터를 어떻게 분석해야 하는지에 대한 실용적인 조언을 제공합니다.

  3. 리텐션 과제_연습문제 2번: 리텐션 분석이 처음이신 분께 도움이 될 수 있는, 단계별 접근 방법과 이를 구현하는 SQL 예제가 포함되어 있습니다.

위 링크들을 참고하셔서 리텐션 분석 과제 및 데이터 개선에 도움이 되길 바랍니다. 만약 추가적으로 궁금한 점이 있으시다면, 질문을 이어서 해주시면 지식공유자께서 답변해 주실 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

민경님의 프로필 이미지

작성한 질문수

질문하기