DataAnalyst_5. 게임 제작 · 배급사의 데이터 수집 방법과 JOIN을 통한 인사이트

drrobot409·2020년 11월 20일
1
post-thumbnail

오늘은 이전 게시물에서 다루었던 게임 제작·배급사가 다루는 데이터, 데이터 수집, 분석 방법, 도출 가능한 인사이트 중에서 데이터의 수집에 대해 조금 더 자세히 알아보고 수집한 데이터의 테이블들을 JOIN하여 얻을 수 있는 인사이트로는 무엇이 있을지 알아보도록 하자.


게임 제작·배급사의 데이터 수집 방법

저번 게시글에서 다룬 게임 제작·배급사(이하 게임사)의 유저 데이터 수집 방법은 아래와 같다.

  • 유저 데이터 수집의 방법
    • 로그 기록
    • 유저 설문
    • 커뮤니티 동향 파악
    • 그 외 등등

로그 기록은 로그의 설계나 관리에 조금만 신경쓴다면 손쉽게 데이터를 수집할 수 있는 수단이며 그 외에 추가적으로 필요한 데이터는 유저 설문을 통해 얻을 수 있다.

또한 커뮤니티 모니터링을 통해 데이터를 수집하기도 하는데, 커뮤니티 모니터링에 사용되는 방법은 **'크롤링(Crawling)'**을 대표적인 예시로 들 수 있다.

크롤링(Crawling)

크롤링(Crawling)은 웹 페이지를 그대로 가져와서 데이터를 추출해 내는 행위이다.

크롤링은 원하는 웹페이지에서 원하는 데이터를 추출하는 방법이라고 볼 수 있는데, 오늘 중점적으로 다룰 데이터 수집의 방법이 바로 크롤링이다.

크롤링으로는 커뮤니티, 게시판, 블로그 및 그 외 여러 웹사이트에서 데이터를 긁어 모을 수 있는 만큼 다양한 분야의 데이터 중에서 원하는 데이터를 수집할 수 있다.
원하는 데이터는 분야에 따라 각자 다르겠지만 게임사 입장에서는 당연히 게임, 그리고 게임의 유저에 대한 데이터를 모으고 싶을 것이다.

게임사의 크롤링

게임과 유저에 대한 데이터 수집을 위해 관련 웹사이트를 떠올려보면 'IGN', '인벤' 등의 유저 커뮤니티가 떠오를 수도 있지만 대표적인 전자 소프트웨어 유통망(ESD)인 'Steam(이하 스팀)'도 빼놓을 수는 없을 것이다.
ESD의 종류로는 스팀을 비롯해 'Origin', Epic Games Store', 'GOG'는 물론 우리가 자주 접할 수 있는 구글의 'Play Store', 애플의 'App Store' 또한 게임 ESD의 한 종류이다.

그 중에서도 스팀은 세계 최대 규모의 ESD이며, 게임 웹진 THEGAMER에서 공개한 내용에 의하면 2019년 기준 가입 계정이 10억 개를 돌파하고 월 평균 사용자는 9,000만 명을 기록하였다고 한다.

크롤러의 입장에서 스팀은 게임에 관한 데이터가 쌓여있는 보물섬이라고 생각해도 무방할 것이다.
물론 그 섬에서 필요한 보물을 찾아내는 것은 크롤러의 몫이다.

스팀에서 크롤링 가능한 데이터


스팀에서 수집 가능한 데이터는 크게 두가지가 있다.

  • 게임에 관한 데이터
  • 유저에 관한 데이터

두가지 데이터를 조금 더 세분화하여 살펴보도록 하자

우선 게임에 관한 데이터이다.

1. 게임에 관한 데이터

  • 타이틀
  • 개발사
  • 장르
  • 태그
  • 그 외 등등

스팀에는 2019년 기준 30,000개의 게임이 존재한다. 2018년 한 해에 약 9,800개의 게임 타이틀이 출시했기 때문에 2020년 11월 현재는 약 40,000개에 육박할 것으로 예상된다.
그만큼 스팀에서의 크롤링은 게임에 대해 많은 양의 데이터를 확보하기에 좋은 방법이 될 것이다.

두 번째는 유저에 관한 데이터이다.

2. 유저에 관한 데이터

  • 유저 ID
  • 구매한 게임
  • 플레한 게임
  • 플레이 시간
  • 평점
  • 그 외 등등

스팀은 게임의 디지털 판매와 구매 외에도 유저들의 리뷰 작성은 물론 커뮤니티, 그리고 유저간의 아이템 거래가 가능한 장터 등 여러가지 기능을 제공한다. 따라서 게임 뿐만 아니라 유저들이 어떠한 게임을 선호하고 많이 구매하는지 등에 대한 데이터를 확보하기에 좋을 것이다.


수집한 데이터로 도출 가능한 인사이트

크롤링 등 다양한 방법으로 데이터를 수집하여 테이블을 이루었는데, 그 테이블을 그냥 모아두기만 한다면 이도저도 아니게 된다. 그렇기에 그 테이블들을 적극 활용하여 도움이 될만한 인사이트를 도출하여야 한다. 따라서 이번에는 수집한 데이터로 도출 가능한 인사이트, 그 중에서도 JOIN을 활용한 인사이트에 대해 간단하게 알아보도록 하자.

테이블 간의 JOIN


우선 SQL에서의 JOIN은 하나 이상의 테이블을 결합하여 나타내는데 사용하는 구문이다.
그 종류에는 INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN, CROSS JOIN, SELF JOIN이 있고 각자가 맡은 역할은 비슷해보여도 다 다르다.

사용법의 간단한 예제는 다음과 같다.


SELECT
 *
FROM table1
INNER JOIN table2
 ON table1.id = table2.id
;

FROM 으로 첫 번째 테이블을 불러오고 INNER JOIN 을 통해 두 번째 테이블을 불러온 후, ON 으로 두 테이블이 공통으로 가지고 있는 동일한 값의 Column들끼리 매칭시켜 주어야 한다.

이러한 JOIN을 통해 도출 가능한 인사이트는 무엇이 있을까?

JOIN으로 도출 가능한 인사이트

JOIN을 활용할 수 있는 아주 간단한 예시를 생각해보자.

앞서 JOIN에 대해 설명할 때 하나 이상의 테이블을 결합하여 나타내는데 사용한다고 설명하였다. 그 말은 하나의 테이블만으로 결합하는 방법도 가능하다는 뜻이다. 하나의 테이블만으로 JOIN하는 것을 SELF JOIN이라고 부른다.

|user_id|timestamp|title|score|
|:---:|:---:|:---:|:---:|
|1|2015-05-29|A|5|
|3|2020-11-14|C|6|
|2|2018-04-24|B|6|
|2|2020-11-05|C|9|
|4|2020-11-11|D|3|
|.|.|.|.|
|.|.|.|.|

예를 들어 위와 같은 유저의 리뷰에 관한 데이터 테이블이 있다고 가정하고 아래와 같이 SELF JOIN 해보자.

SELECT
 R1.user_id,
 R1.timestamp AS most_recent,
 R1.title,
 R1.score
FROM user_review AS R1
INNER JOIN
 (
  SELECT 
    user_id,
    MAX(timestamp) AS mts
  FROM user_review
  GROUP BY user_id
 ) 
  AS R2
   ON R1.user_id = R2.user_id
    AND R1.timestamp = R2.mts
ORDER BY R1.score
;

위와 같은 SELF JOIN을 통해 id별로 가장 최근의 리뷰를 불러올 수 있게 된다.
이러한 결과를 통해 각 유저들이 가장 최근에 평가한 게임에는 무엇이 있고 그 중에서 평점이 높은 게임은 무엇이 있는지를 확인하여 정확하지는 않더라도 현재 게임시장의 트렌드, 그리고 향후 트렌드에 대해서 어느정도 예측해낼 수 있을 것이다.

이 외에도 유저들의 게임 플레이시간 혹은 평점 테이블과 게임 장르 테이블을 JOIN하여 유저들이 평균적으로 어느 장르를 가장 많이 플레이 하고 좋게 평가하는지 등을 분석하여 새로운 게임을 기획하는데 참고할 수 있을 것이다.


오늘은 이렇게 게임사에서 데이터를 수집하는 방법 중 하나인 크롤링(Crawling)과 JOIN을 이용한 인사이트 도출에 대해서 아주 간단하게 알아보았다. 아직은 데이터나 SQL에 대한 나의 지식이 얕아서 자세히 파고들지는 못했지만 나중에 역량을 조금 더 쌓고 기회가 된다면 다시 한 번 다뤄보고 싶은 주제이다.

profile
Data Analyst 지망생

0개의 댓글