본문 바로가기
SQL

[파이썬 압수] (2) SQL로만 Funnel 구하기

by 다람이도토리 2024. 1. 15.
(1)에 이어서 진행입니다.
(1) https://taksw222.tistory.com/225

 

퍼널 구하기

퍼널을 구하기 위해, 우선은 이벤트명의 종류를 정확히 파악해야 한다.

script = """
SELECT
    distinct(event_type)
FROM events
"""
cur.execute(script)
result = cur.fetchall()
print(result)

결과는 view -> cart -> purchase임을 직관적으로 알 수 있다. 이렇게 3단계의 퍼널이 구성되어 있다.
아쉽게도 접속과 관련된 기록은 없는 것이 문제다. 또한 일부 데이터는 view->purchase일수도 있으나, 이러한 케이스는 일단 무시하고 진행할려고 한다.

그런데..

컬럼명을 확인할 수 없어 어쩔수 없이 파이썬으로 최초 5행을 확인한 결과...

다음과 같은 구조이다. 즉 세션 단위로도 퍼널을 고려할 수 있고, 전체 통합한 퍼널을 고려할 수 있다.

- 단순 퍼널 : 전체 뷰 건수 -> 전체 카트 건수 -> 전체 구매 건수
  O 전체 동향을 파악 가능하다.
  O 세션별로 어떤 상황이 일어났는지 유저의 한 경험 단위의 파악은 불가능
- 세션 퍼널 : 뷰가 발생한 세션 수 -> 카트가 발생한 세션 수 -> 구매가 발생한 세션 스
  O 한 세션내에서 여러 번의 상품 구경 후 카트에 상품을 담고, 최종 결정을 하는 것이 일반적인 행적
  O 이것이 이번 데이터에서는 진짜 조금 더 자연스러운 퍼널일 것이다.

세션 퍼널을 기준으로 쿼리를 작성해보자.

script = """
SELECT
    SUM(is_view) as view_count,
    SUM(is_cart) as cart_count,
    SUM(is_purchase) as purchase_count
FROM(
    SELECT
        user_session,
        MAX(CASE WHEN event_type = 'view' then 1 else 0 END) AS is_view,
        MAX(CASE WHEN event_type = 'cart' then 1 else 0 END) AS is_cart,
        MAX(CASE WHEN event_type = 'purchase' then 1 else 0 END) AS is_purchase
    FROM events
    GROUP BY user_session
)
"""
cur.execute(script)
result = cur.fetchall()
print(result)

쿼리의 원리를 살펴보면, 우선 뷰가 있나 없나로 판단할 수 있을 것이다. 뷰가 한번이라도 있으면 MAX에 의해 뷰가 발생했음을 알 수 있다. 즉 뷰가 한번도 없어야 0으로 나온다. 이런 식으로 각 세션별 뷰, 카트, 구매 여부를 확인할 수 있고 세션별로 그룹화 했으니 모두 더해버리면 그만이다.

퍼널 분석

그럼, 실제 분석 결과를 수치로 보자.

뷰에서 카트로 넘어갈 때, 8.4% 정도의 유저만이 남았다. 즉 상품을 구경하고 카트에 잘 담지도 않고 구매로도 잘 연결이 안됨을 알 수 있다. 이는 여러 가능성을 둘 수 있다.

- 상품이 매력이 없다 : 상품 추천모델링을 개선하여 유저에게 의미있는 상품을 추천할 수 있다.
- 상품의 가격이 비싸다 : 쿠폰 지급 등의 캠페인을 실시하여 일시적인 구매 전환을 이끌어 유저의 경험을 만들 수 있다.
- 장바구니 누르는게 불편하다 : 장바구니 버튼의 시인성을 늘리자. 이는 A/B Test로 정말 늘어났는지 전환율이 상승했는지 검증 가능하다.

사이트를 알 수 없으므로, 셋 중 어느 가능성인지는 둘 수 없고 다른 가능성도 충분하나 이를 고려할 수 있다.

카트에서 구매로 전환된 비율은 59% 정도로 40% 유저가 이탈했다. 역시 여러 가능성이 존재한다.

- 비회원 상태로 카트에 넣어 가입이 불편하다 : 가입 절차 간소화로 퍼널 수 감소, 구매로 이어지게 도움 가능
- 변심 : 장바구니 이용 유저 캠페인 등도 실시 가능할 것이다.

역시 사이트를 알 수 없어 무엇이 좋은지 판단은 불가능하나 여러 경우의 고려는 가능하다.

 

다음번에는, 대망의 "리텐션"으로 돌아오고자 한다. 후...