My SQL

[데이터 분석을 위한 SQL 레시피] 데이터 분석 목적과 분석 방향 정리

에멜라 2024. 6. 18. 19:27

 

개요?

퍼포먼스 마케팅 인턴을 마치고, 다시 데이터 분석으로 돌아와 "데이터 분석을 위한 SQL 레시피" 도서를 읽게 되었다.

 

기존에 책을 단순히 한 페이지 한 페이지 따라하며 진도를 나가는 방식에서 벗어나, 조금 여유있게 이 책을 끝까지 읽어봤는데, 이 책에서는 단순히 실무에서 쓰이는 SQL 문법을 공식처럼 정리한 것이 아닌 데이터분석/검색엔진 등 지은이가 이제껏 연구한 분석 및 검색엔진 시스템 전반의 분석 및 리포팅 노하우를 SQL문으로 녹여낸 느낌이었다.

 

예를들어, 시계열 매출 분석 / Z차트 분석(월차매출, 매출누계, 이동년계) / RFM / MAU 기반 사용자 분석 / 사용자 액션 집계  분석 / 유입, 방문, 전환, 이탈 분석 / 이상값 검출 / 데이터 중복 검출 / 검색 엔진 제작 / 데이터 마이닝(어소시에이션 분석 등) / 추천 시스템 / 로그분석 등 실제 분석 업무 적용 및 리포팅에 바로 활용 가능한 분석법들이 각 상황과 목적에 맞게 SQL로 구현된 책이었다.

 

따라서, 이전까지는 문법을 중심으로 MySQL문으로 구현해보며 코딩에 친숙해지는 것이 목적이었다면, 이제는, 이제는 실제 분석 상황과 기술을 중심으로 내가 꼭 필요로 하는 분석 방법들을 중심으로 필요에 따라 정리해볼까 한다. 이렇게 한다면 SQL 쿼리 코딩 능력 향상 뿐 아니라 분석 전반에서 활용가능한 나만의 쿡북 레시피로 활용할 수 있을 것이라 기대한다.

 

더 나아가, 현재는 내게 익숙한 MySQL을 쓰고 있긴 하지만, 앞으로는 조금 더 범용적으로 활용되는 PostgreSQL을 활용하고자 노력해 나가고자 한다.

 

오늘은 마지막장인, 데이터 활용 실무 적용을 포괄적으로 다루는 개요 느낌의 책 마지막장, '9장, 지식을 행동으로 옮기기' 만 간단히 정리해보고자 한다.

 

 

 

 

데이터 분석을 통한 이익/서비스 개선

이 책의 마지막 장을 먼저 정리하는 이유는, 데이터의 실무 활용에 있어서의 쓸모, 해야할 명확한 목표가 비단 기업에서 데이터 분석팀 운영을 고민하는 하는 입장 뿐 아니라, 데이터 분석가 본인의 존재 이유와 업무 방향성을 잡는데도 도움이 될 것이라 생각하기 때문이다. 

 

분석을 진행하면서 주로 아래와 같은 의문이 들 수 있다.

 

 

"데이터를 어떻게 활용해야 할지 감을 못잡겠다."

"데이터를 어떻게 수집해야 할찌 모르겠다."

"데이터를 제대로 활용하지 못한다."

 

 

즉 데이터 분석 운영에 앞서서, 어떻게 데이터를 쌓아갈 것인지, 어떤 분석법을 통해, 어떤 결과값을 도출해야 하는지를 고민핼 필요가 있다는 의미이다. 특히 데이터 파이프라인의 전반적인 이미지(흐름)를 잡지 못하면 무엇이, 우리에게 왜, 어떻게 필요한지 알 수 없다. 따라서 지은이는 아래와 같은 빅데이터 활용 3단계를 우선 정리하였다..

 

 

1. 문제 발견

라이브 서비스 추이와 구성 파악하기, 도메인 경험과 특징 파악하기

→ 서비스의 문제가 뭘까? 달성하고싶은 목표는 무엇인가? 이를 위해 어떻게 개선해야 하는가?

→ 수치화, 시각화

 

2. 문제 해결

 개선 제안하기, 자동화, 정밀도 높이기

→ 문제 도출 및 해결책 제시. 데이터를 통한 개인 맞춤화 및 자동화 솔루션 기획

→ 추천 시스템, CRM 마케팅

 

3. 가치 창조

추천, 개인화 타겟팅 등

→ 분석으로 제공할 수 있는 새로운 가치, 이익

  광고 태그에 맞는 최적 광고 출력, 추천 결과 출력 API, 기대 매출이 높은 제품 순서 정렬 

 

 

 

 

데이터 수집을 위한 로그 구성

서비스별로 필요한 로그 데이터도, 적용하려는 기술에 따라 수집되는 데이터는 달라질 수 있다. 그러나, 서비스가 성장하거나, 또는 새로운 분석 기술 적용을 고려하게 된다면, 체계 없는 로그 로직은 복잡해질 수 밖에 없다.따라서 수집 자체에서 공통 형식을 만들어 둘 필요가 있다. 아래는 일반적으로 사용되는, 기본적인 로그 형식의 구성 예이다.

 

 

<로그형식 예>

dt(날짜만 저장 - 빅데이터 관련 미들웨어 활용) / service_code(서비스 코드 - 서비스 유일 식별자, 서비스별 구분에 활용) / action(액션 - view, search, add_chart, like, comment..) / option(옵션 - action 보완 - 댓글, 이미지, 영상) / time(날짜와 시간) / short_session(방문 횟수 전용 세션) / long_session(방문자 계측 전용 세션) / user_id(사용자 ID - 회원/비회원 구분) / url / referer / user_agent / page_name(같은 url 공유하더라도 다른 page를 출력할 수 있으므로 페이지별 구분이 필요) / view_type(출력 타입 - 사용자 장치 종류 저장(pc, mo)) / via(경유 정보 - 이 페이지까지의 방문 경유 페이지) / segment(유저 세그멘트, A/B 테스트 전용 변수) / detail(상세 정보 - 배열, 컬렉션, json 형식을 활용하여 여러가지 디테일 정보 저장 - 상품ID, 상품 카테고리, 가격, 수량 등) / saerch(검색 관련 정보) / show(출력 관련 정보) / user(사용자 관련 정보) / other(이 외 정보)

 

 

만약 서비스 운영을 통해 분석 폭이 넓어진다면,

분석 내용(성별, 회원, 접속 타입)이 증가하는 경우 SQL의 CUBE(Group by의 조건 컬럼의 모든 조합에 대한 누계 계산)

분석 대상(상품 카테고리)가 증가하는 경우 SQL의 ROLLUP(Group by의 모든 소그룹 및 전록체에 대한 누계 계산)

함수를 활용하면 된다.

 

 

 

데이터 계층과 데이터 흐름

적절한 로깅과 DB 설계를 통해 올바른 데이터 저장 체계를 구축하더라도, 로그데이터에서 바로 분석을 진행할 수는 없다.

 

정확하고 효율적인 분석을 위해, 이상값을 제거한 테이블, 분석을 위한 집계 테이블을 생성하여 분석할 필요가 있는데, 이는, 집계 속도 향상, 쿼리 복잡화 방지, 데이터 가공 방법 통일을 위해서라도 데이터 흐름을 체계화하여 정리해 둘 필요가 있다.

 

지은이는 총 3단계(로그계층 - 집약계층 - 잡계계층)의 데이터 계청을 구분하여 관리할 것을 권고한다.

 

  • 로그계층 : 서비스/고객 행동 데이터, 서비스 구축 및 운용 데이터(DB) - 낮은 데이터 정밀도, 서비스 처리속도 간섭
  • 집약계층 : 가공된 로그데이터 및 업무데이터, BI 도구에 직접적 입력으로 활용 - 크롤러 제외, 중복 제거, DB 결합  
  • 집계 계층 : 높은 빈도로 활용하는 데이터 지표 계산 - 매출 집계데이터, 회원수 집계 데이터

 

 

 

 

KGI / KPI / 리포팅 목적에 따른 분석 내용

분석은 결국 조직의 구체적인 목표 달성을 위해 필요하다. 즉 분석 목적과 대상이 꼭 필요하다. 아래는 구체적인 목표 지표와 각 대상에 따른 리포팅 방식에 대한 정리이다.

 

  • KGI : 중요 목표 달성 지표. 조직의 최종적 목표 정량화 지표.
  • KPI : 중요 업적 평가 지표, KGI 달성 중간 지표

ex ) 

KGI → 월 매출 0억 달성

KPI → MAU, CVR, 구매 단가

➩ MAU × CVR × 구매 단가 = 일 매출 (KGI)

 

 

<분석 대상  - 관심사 - 분석 리포팅 내용> 

  • 임원 및 경영층 - 주력 사업, 사업의 존속성, 경쟁사 매출 비교, 매출 구성 등 - Z차트, 벙문 빈도/방문자 속성별 집계
  • 사업부 - 여러개 서비스 관할, 서비스 매출 및 사용자 수 증대, KPI 의식 - ABC 분석을 통한 상품별 판매 분석, 팬 차트를 통핸 매출 증가율, RFM분석, 사용자 행동 시각화, 어소시에이션 분석
  • 서비스 기획/개발 - 구체적으로 무엇을 해야 하는가 - 이탈률, 직귀율, 이동률 분석, 액션 집계, 정착률 집계, 검색조건에 대한 사용자 행동 가시화, 폴아웃 리포트
  • 마케팅 담당 - 마케팅별 투입 예산 및 매출, 광고 성과 효율 - 일별 매출 집계, 성과 페이지 분석, 페이지 평가 산출