해결된 질문
작성
·
259
0
카일님 안녕하세요! 구글 스프레드시트에 데이터 로그 설계 연습 문제를 풀이해봤습니다 😀
풀이하는 과정에서 몇 가지 질문사항이 생겨 함께 남깁니다.
#1.
이전에 '이런 음식 어때요' 지표를 정의와 멘탈 시뮬레이션 과정에서 크게 2가지 지표를 정의했습니다.
이런 음식 어때요 상품 클릭률(CTR) = 이런 음식 어때요 상품 클릭수 / 홈 화면 조회수
상품 주문 전환율(CVR) = 이런 음식 어때요로 진입한 사용자의 상품 주문수 / 이런 음식 어때요 상품 클릭수
이때 2번 지표처럼 '~로 진입한 사용자의 상품 주문수'가 필요한 경우에 데이터 로그 설계를 어떻게 해야 적절할까요? 클라이언트에서 '상품 주문 완료'까지의 경로를 가지고 있다해도 어떤 이벤트에 어디까지 기록해야 할지 궁금합니다.
#2.
검색 결과 페이지에서 검색방식별 사용도를 파악하고 싶을 때 source 관련 데이터는 어떻게 수집하면 좋을까요? '검색하다'라는 사용자 액션이 검색버튼을 통해, 키보드의 검색키를 통해, 최근검색어 태그 등 다양한 경로를 통해 이루어질 수 있는 것 같아 궁금합니다.
처음에는 전체 검색 API 호출수, 검색 버튼 클릭수, 최근 검색어 태그 클릭수, 키보드 검색 이벤트수를 수집하고자 생각했는데 이벤트수가 너무 많아지는 것을 방지하고자 Tracking Plan에는 검색 버튼 클릭수만 포함했습니다.
API 호출이 이벤트를 트리거하는 경우에는 어떤 네이밍 컨벤션이 있는지 궁금합니다!
클릭률 및 전환율을 구할 용도로 검색 결과 페이지 조회수를 수집하고 싶을 때 전체 검색 발생 건수(API 호출 횟수)와 검색 결과 페이지 조회수, 이 두 데이터를 유사하다고 봐도 될까요?
검색 퍼널을 만들 때 설계한 이벤트들이 동일한 흐름에 있다는 것을 알고 하나의 퍼널로 해석하기 위해서는 session_id와 search_keyword를 활용하면 될까요? 그런 용도로 각 이벤트마다 해당 event parameter를 넣어야 하는지 궁금합니다.
좋은 강의 항상 감사합니다!
답변 1
0
안녕하세요 🙂
문제 잘 풀어보고 계시는군요! 궁금하신 점에 대해 제 생각을 공유드릴게요
#1.
이전에 '이런 음식 어때요' 지표를 정의와 멘탈 시뮬레이션 과정에서 크게 2가지 지표를 정의했습니다.
이런 음식 어때요 상품 클릭률(CTR) = 이런 음식 어때요 상품 클릭수 / 홈 화면 조회수
상품 주문 전환율(CVR) = 이런 음식 어때요로 진입한 사용자의 상품 주문수 / 이런 음식 어때요 상품 클릭수
이때 2번 지표처럼 '~로 진입한 사용자의 상품 주문수'가 필요한 경우에 데이터 로그 설계를 어떻게 해야 적절할까요? 클라이언트에서 '상품 주문 완료'까지의 경로를 가지고 있다해도 어떤 이벤트에 어디까지 기록해야 할지 궁금합니다.
여러가지 관점으로 말씀드려볼게요
1) ~로 진입한 사용자의 상품 주문수 같은 CVR 지표들은 로그 설계할 때 경로에 대한 데이터를 가지고 있으면 좋습니다. 상품 주문할 때 어떤 경로에서 왔는지 클라이언트에서 로그 설계를 해줄 수도 있어요(다만 이 데이터를 화면마다 가지고 있는 것을 선호하지 않는 클라이언트 개발자분들도 계실거에요)
이럴 때는 명확하게 이 지표를 통해 Action Item이 떠오르는 것부터 기록하곤 합니다. 로그 설계할 때 유의점이 모든 것을 다 기록하고 싶어지는 심리가 발생하는 것을 조심해야 합니다. 중요한 부분부터 하는 것도 좋은 접근입니다.
2) 혹은 위처럼 클라이언트에서 로깅이 어렵다고 하면, session_id만 잘 기록해달라고 합니다. session_id로 연결할 수 있다면, SQL로 데이터를 처리하곤 합니다.
동일한 session_id에서 주문이 발생하면 전환이라고 정의하고, 해당 session_id에서 어떤 경로로 왔는지 파악합니다. 이건 SQL 쿼리를 다룰 수 있어야 조금 더 잘 이해가 될 것 같네요.
user_id | event_name | event_datetime | session_id | page
위와 같은 컬럼이 존재한다고 할 때, 쿼리문으로 처리할 수 있습니다
3) session_id가 없이 기록된 경우
과거 데이터의 경우 session_id가 없을 수 있는데, 데이터가 저장되어 있다면 SQL 쿼리에서 커스텀하게 session_id를 생성할 수 있습니다. (쿼리를 잘 작성해야 하긴 해요)
user_id | event_name | event_datetime | session_id | page
위와 같은 데이터가 저장될 때, 시간의 흐름에 따라 이벤트가 발생할거에요. 그런 경우 첫 행동과 두번째 행동 사이의 diff(event_datetime의 차이)를 구하고, 이 diff가 30초(이건 회사에서 정의하기 나름) 안에 새로운 이벤트가 발생하면 session이 유지된다, 30초 이후엔 새로운 session이라 가정한다. 이런 정의를 가지고 커스텀하게 session을 만들 수도 있습니다.
저는 주로 2)와 3)을 동시에 사용하는 편이에요. session을 어떻게 정의하는지가 중요할 수도 있어서, session_id만 명시적으로 기록해두고 보조적으로 커스텀 session을 만들고 있어요
session을 계산하는 것은 추후에 나올 제 빅쿼리 강의(활용편)에 해당 예시를 추가할 예정이에요. 직접 쿼리를 짜보지 않으면 덜 와닿더라구요
#2.
검색 결과 페이지에서 검색방식별 사용도를 파악하고 싶을 때 source 관련 데이터는 어떻게 수집하면 좋을까요? '검색하다'라는 사용자 액션이 검색버튼을 통해, 키보드의 검색키를 통해, 최근검색어 태그 등 다양한 경로를 통해 이루어질 수 있는 것 같아 궁금합니다.
처음에는 전체 검색 API 호출수, 검색 버튼 클릭수, 최근 검색어 태그 클릭수, 키보드 검색 이벤트수를 수집하고자 생각했는데 이벤트수가 너무 많아지는 것을 방지하고자 Tracking Plan에는 검색 버튼 클릭수만 포함했습니다.
API 호출이 이벤트를 트리거하는 경우에는 어떤 네이밍 컨벤션이 있는지 궁금합니다!
클릭률 및 전환율을 구할 용도로 검색 결과 페이지 조회수를 수집하고 싶을 때 전체 검색 발생 건수(API 호출 횟수)와 검색 결과 페이지 조회수, 이 두 데이터를 유사하다고 봐도 될까요?
검색 퍼널을 만들 때 설계한 이벤트들이 동일한 흐름에 있다는 것을 알고 하나의 퍼널로 해석하기 위해서는 session_id와 search_keyword를 활용하면 될까요? 그런 용도로 각 이벤트마다 해당 event parameter를 넣어야 하는지 궁금합니다.
API 호출이 검색 버튼, 검색키 등 다양하게 실행할 수 있다면 일단 이렇게 다른 과정이 유저에게 다른 관점일지 생각해볼 것 같습니다. 다른 관점이라고 하면 구분해서 저장할 수도 있는데, 제 경험상 검색에서 버튼이냐 키보드 검색키냐 등은 중요하지 않았습니다. 검색 자체에 집중했습니다(검색 후에 어떤 행동을 하는지) 최근 검색어 태그를 클릭하는 것은 아예 다른 행동이라 click_recent_keyword 라는 이름으로 로깅할 것 같네요
클라이언트 로깅이 돈과 관련되는 경우가 존재하는데(Amplitude 등을 사용하면 트래픽 기반 과금이기에) 이런 경우라면 서버 로그로 기록해서 사용하곤 했습니다. API 호출이 제일 명확하고 신뢰할 수 있는 데이터고 클라이언트 로그는 특정 경우(네트워크가 잘 터지지 않는 경우)엔 기록이 잘 안될수도 있거든요. API Request가 왔을 때 기준으로 지표를 구한다 등으로 원칙을 정하곤 합니다.
클라 / 서버 중 선택할 수 있다면 => 그것의 임팩트가 중요하다면(돈과 관련된다. 고객에게 연결된다. 재무와 관련된다 등) 서버 로그로 기록하고, 그게 아니라면 클라쪽에 기록해보곤 했습니다. 두 데이터가 유사하긴 하지만, 미묘하게 계산이 다를 수 있어요(큰 폭은 아닐 것. 큰 폭이면 로깅이 이슈일 가능성이 높아요) GA나 Amplitude 등 다른 솔루션 디펜던시 없이 자체 로깅이 더 좋은 경우도 있다 정도로 알고 계시면 될 것 같네요
API 호출, 이벤트 트리거도 회사마다 컨벤션이 다르고 만들면 되는거라 이벤트 로그 설계 파트 참고해서 만들어보시면 될 것 같아요. 이미 회사에서 API 로그를 남기고 있는지 보고 이야기를 시작하시면 될 것 같네요
검색 퍼널의 경우 session_id를 추가하면 되는데, 저는 검색 퍼널 쪽은 디테일하게 중요할까를 먼저 고민해볼 것 같네요. session을 연결해서 거기서 얻을 수 있는 것이 무엇일까?에 대해 질문할 것 같네요. 특정 세션 내에서 검색하는지를 알고 싶은 것인지 등 목적에 따라 다를 것 같습니다. 일단 하나의 퍼널로 해석하기 위해선 session에 대해 파라미터를 넣으시면 됩니다
상세한 답변 정말 감사합니다!