이번 포스팅은 데이터의 종류편!


이론적으로 어떠한 데이터가 어떻게 쓰이는지를 알아둬야 추후에 어떤식으로 다룰지 생각할 수 있는게 빠를 것 같아서 개념부터 정리하고자 한다.

데이터 분석을 위한 SQL 레시피 책을 참고하여 작성


데이터

데이터는 큰 틀에서 아래와 같이 구성되어있다고 할 수 있다.

size_main


데이터의 종류

  • 업무데이터 – 업무에 필요한 데이터
  • 로그데이터 – 업무에 직접적으로 필요하지는 않지만 분석을 위해 추출해야하는 데이터
업무데이터 (트랜잭션 데이터, 마스터 데이터)
  • ‘서비스와 시스템을 운용하기 위한 목적으로 구축된 데이터베이스에 존재하는 데이터’
  • 대부분이 ’갱신형‘ 데이터(새로운 데이터를 삽입하는 대신 기존의 데이터를 갱신)


1) 트랜잭션 데이터 : 서비스와 시스템을 통해 사용자의 행동을 기록한 데이터

  • 구매데이터, 리뷰데이터, 게임 플레이 데이터
  • 사용자 또는 운용상의 이유로 변경되거나 제거될 수도 있다.

2) 마스터 데이터 : 서비스와 시스템이 정의하고 있는 데이터

  • 카테고리 마스터, 상품 마스터
  • 회원과 관련된 정보도 사용자 마스터 테이블에 저장하기 때문에 마스터 데이터로 분류한다.

트랜잭션 데이터와 마스터 데이터를 결합해서 정확하게 만들어야 리포트의 업무의 폭을 넓힐 수 있다.


로그 데이터

  • 통계 또는 분석을 주 용도로 설계된 데이터
  • 특정 태그를 포함해서 전송된 데이터
  • 특정 행동을 서버 측에 출력한 데이터

: 중요한 것 ’누적형‘데이터(츌력 시점의 정보를 축적해두는 것)
로그 출력 이후에 가격이 변경되거나 사용자 정보가 변경되더라도 기존의 데이터를 수정하지 않는다.

업무 데이터

일반적으로 업무데이터를 통해 데이터 분석을 진행(빅데이터 기반 또는 데이터 분석 기반이라고 부르는 종류의 시스템을 가지지 않은 경우)

업무데이터 특징

1) 데이터의 정밀도가 높다.

  • 정확한 값이 요구되는 매출관련 리포트 등을 만들 때는 업무 데이터를 사용
  • 여러 데이터를 처리하는 중에 문제가 발생하면, 트랜잭션과 롤백기능을 사용해서 문제 해결

2) 갱신형 데이터

  • 업무 데이터는 매일 다양한 데이터 추가, 갱신, 제거가 실행
  • 데이터를 추출하는 시점에 따라 추출되는 데이터가 바뀔수 있다는 점을 의식해야함

3) 다뤄야하는 테이블의 수가 많다.

  • 대부분의 서비스는 데이터베이스로 RDB(Relational Database)사용
  • ER다이어그램으로 데이터를 파악하고 여러 테이블을 결합해야 전체 내용 파악 가능


업무데이터 축적방법

1) 모든데이터 변경
2) 모든 레코드의 스냅샷을 날짜별로 저장
3) 어제와의 데이터 차이(변경사항)만 누적


업무데이터 다루기

1) 정확한 값을 요구할 때는 업무데이터를 사용(로그 데이터는 전송방법에 따라 중간손실이 발생할 수도 있음)
2) 사이트 방문횟수, 사용자 유도 상태 등을 분석은 업무데이터 사용할 수 없음(로그데이터 사용)
3) 데이터 변경될 수 있으므로 추출 시점에 따라 결과가 변할 수 있음(데이터가 어떻게 축적되는지를 이해해야 제대로 분석 가능)


로그 데이터

많은 접근 해석 도구는 로그데이터를 집계하고, 열람하기 위한 도구를 제공한다.

로그데이터 특징

1) 서비스의 처리에 영향이 거의 없는 사용자 엔드포인트, IP주소, URL, Cookie 등의 정보를 저장한 것(업무 데이터는 서비스와 시스템 구축할 때 필요)
2) 로그 데이터는 추출 방법에 따라 데이터 정밀도가 달라짐(로그를 어떻게 추출하는지, 집계대상 데이터가 어떠한 상태로 있는지 제대로 파악해야함)
3) 출력 시점의 정보를 기록하는 것이므로, 과거의 로그데이터가 변경되지는 않음


로그데이터 축적방법

로그 데이터를 활용할 때 해당 데이터가 어떤 로그데이터인지 파악, 어떤한 방법을 사용할것인지, 리포트로 설명할 범위를 명확하게 결정해야한다.


1.태그, SDK를 통해 사용자 장치에서 데이터를 전송하고 출력(웹사이트 개발할 때 활용하는 일반적인 방법)
  • HTML에 특정 태그를 집어넣고 데이터를 전송하는 형식(구글 애널리틱스)
2.서버에서 데이터를 추출하고 출력
  • 클라이언트쪽에서 별도의 처리를 하지않고 서버에서 로그를 출력하는 방법
  • 서버에 요청이 있을 때 출력하므로, 크롤러의 접근도 출력되기 때문에 의도하지 않은 로그를 제거하는 과정을 거쳐야한다.


로그 데이터 다루기

1) 접근 분석도구를 함께 활용해 방문횟수, 페이지 뷰, 액션 수, 장치별 방문 수 등의 지표를 구할 때 사용
2) 최신상태를 고려한 분석에는 적합하지 않음(로그 출력 이후 데이터 변경내용 고려해서 분석할 경우 별도의 가공과정 필요)
3) 변경/제거되지 않으므로, 기간을 정해서 집계했을 때 쿼리 결과가 바뀌지 않는다.
4) 데이터의 정확도는 업무데이터에 비해 낮음(사용자가 누락되거나, 크롤러의 로그가 포함되어 집계될 수도 있음)


로그데이터는 주로 웹사이트에서 행동을 기록할 때 활용하고 업무데이터는 웹사이트 뿐만아니라 오프라인에서의 데이터도 사용할 수 있다. 이 두 가지를 함께 활용하게 되면 웹사이트에서의 행동이 오프라인의 행동에 어떠한 영향을 미치는지 등을 조사할 수 있기 때문에 분석가능성이 훨씬 넓어질 것이다.


데이터 활용사례

  • 목표를 관리하고 설계하고 서비스/조직의 성장에 기여하기
  • 사용자 행동을 기반으로 경향을 발견하고 매출과 서비스 개선에 기여하기
  • 과거의 경향을 기반으로 미래의 행동 예측하기
  • 사용자의 성향에 따른 추천 서비스(맞춤형 서비스)


데이터 가공을 위한 SQL

데이터의 일부는 분석에 활용하기 어려운 경우가 있다.

  1. 데이터 분석에 적합한 형태로 미리 가공해서 저장해두어야 한다.
  2. 로그 데이터와 업무데이터를 함께 다루는 경우, 데이터의 형식이 일치하지 않을수도 있다.
  3. NULL값이 발생하지 않게 처리해준다.(어떤 값과 NULL값을 연산하면 NULL값이 나올 수 있기 때문)