brunch

You can make anything
by writing

C.S.Lewis

by 김민우 Nov 09. 2017

데이터 분석, SQL만 잘 다뤄도 먹고 들어갑니다.

데이터를 분석하려면 데이터 추출부터

MySQL Workbench의 숨막히는 자태. 이 자태와 친해져야 합니다.


(개인 웹사이트(링크)에 재발행했습니다.)


이전 글(마케터의 데이터 분석 공부, 어디부터 시작해야 하나요?)에서 데이터 분석을 깊게 공부하고 싶은 분이라면 R이나 파이썬(Python) 등 프로그래밍 언어를 공부하기 전에 SQL부터 익혀야 한다고 이야기했습니다. 저는 한 발짝 더 나아가 이렇게 주장하고 싶습니다.

"SQL만 잘 다뤄도 데이터 분석가로서 중간 이상은 갑니다.

바야흐로 빅데이터의 시대를 맞이하여 Hadoop, Spark, ELK, NoSQL, Deep Learning, TensorFlow 등 온갖 멋진 단어들이 데이터 분석 입문자를 현혹시킬 수도 있습니다. 물론 이런 도구들에는 각각 멋진 쓰임새가 있지만, 입문자에게는 해당사항이 없습니다. 여러분이 데이터 분석 공부를 시작한다면, 이렇게 생각하시는 것이 마음 편합니다. "SQL만 잘 해도 먹고 들어간다."


아니, 요즘 데이터 사이언스 분야에서 급성장하고 있는 파이썬, 혹은 전통의 강호 R, 둘 중 하나라도 빨리 배워서 데이터 분석을 쓱싹쓱싹 해내고 싶은데 SQL부터 공부하라니. 이게 무슨 소리인가 싶으실 겁니다. 저의 주장에 설득력을 더하기 위해, 데이터 사이언스 계의 존잘(...)로 알려진 하용호 님(전 넘버웍스 대표, 현 카카오 Machine Intelligence 파트장)의 말씀을 인용해 보겠습니다. (출처: PUBLY, 가장 중요한 데이터는 이미 내부에 있다) 

미국의 존 워너메이커(John Wanamaker)라는 사람이 있다. 미국 최초의 현대식 백화점을 만든 사람으로 '광고의 아버지, 마케팅의 아버지'로 불린다. 그가 이런 말을 했다. "내가 마케팅에 쏟아부은 돈의 50%가 낭비였다. 그런데 어디가 50% 인지 모르겠다."

'어디'가 낭비인지 모른다는 소리다. 요즘 마케터에게 필요한 것은 그 '어디'를 스스로 찾기 위한 노력과 찾아낼 수 있는 능력이라고 생각한다. 그러려면 데이터를 읽어내야 하고, 데이터에 접근하는 가장 기본적인 기술이 SQL이다.


"데이터에 접근하는 가장 기본적인 기술."

SQL을 알아야 하는 이유는 이 한 마디로 충분히 정리할 수 있습니다. 감사합니다. 그럼 빠잉.









아직 석연치 않은 기분이 드시나요? 그렇다면 SQL부터 알아야 하는 이유를 조목조목 설명해 보겠습니다.


1. 대부분의 데이터는 SQL 방식의 DB(데이터베이스)에 저장되어 있다.

여러분 조직에 엔지니어가 있다면 한 번 붙잡고 '우리 회사는 데이터를 어디에 저장하고 있나요?' 하고 물어보세요. 아마 백 명에게 물어보면 백 명 모두 SQL 방식의 관계형 데이터베이스(MySQL, MariaDB, Oracle DB, PostgreSQL, Redshift 등)를 이야기할 것입니다.


여러분이 온라인 서비스를 제공하고 있다면, 회원 정보(아이디, 이메일, 이름, 가입일시, 회원 상태 등)와 상품 목록(상품명, 상품 카테고리, 가격, 제조 일시 등), 판매 이력(판매 일시, 판매 상품, 수량, 금액 등) 등 기본적이면서도 중요한 데이터가 모두 SQL 방식으로 저장되어 있을 겁니다. 사용자가 서비스에서 무슨 컨텐츠를 읽고 어떤 행동을 했는지 기록(로그)도 SQL 방식으로 저장되어 있을 겁니다. 창조주가 세상을 만들 때도 SQL로 만들었다고 합니다. 그만큼 SQL은 데이터를 저장하는 보편적인 방식입니다.


세상이 작동하는 원리에 호기심이 있는 분이라면 관계형 데이터베이스(RDBMS)란 무엇인지, SQL이란 무엇인지 공부해 보시길 권합니다. 분석에 직접적 관계가 없을 것 같은 이런 배경 지식 하나하나가 언젠가는 도움이 될 때가 있습니다. (생활코딩 관계형데이터베이스 강의: https://opentutorials.org/course/1688/9427)


여하간 중요한 것은, 대부분의 데이터는 SQL 방식의 DB에 저장되어 있다는 사실입니다.


2. 그 데이터를 뽑으려면 SQL 문법에 맞게 컴퓨터에 명령을 내려야 한다. (SQL 쿼리)

이렇게 SQL 방식으로 저장된 데이터를 뽑기 위해서는, (놀랍게도!) SQL을 이용해야 합니다. "알렉사, 데이터 뽑아줘"라고 명령하면 인공지능이 알아서 데이터를 챡챡 뽑아주면 좋겠지만, 그런 시대가 오기를 기다리기보다는 SQL을 배우는 편이 더 현명한 선택입니다.


SQL 문법에 맞게 컴퓨터에 내리는 명령이 바로 "SQL 쿼리(query)"입니다. 컴퓨터가 알아들을 수 있게 SELECT, FROM, WHERE, GROUP BY, HAVING, INNER JOIN, LEFT JOIN 등을 이용해서 데이터 추출 명령을 내리면, 컴퓨터는 명령 받은 대로 데이터를 뽑아 줍니다.


엔지니어들에게 데이터 추출을 부탁한 경험이 있는 분들도 있을 겁니다. 그 엔지니어들이 데이터를 뽑을 때도 저런 문법에 기반한 쿼리를 사용합니다. 그런데 엔지니어가 너무 바빠서 데이터를 뽑는 데 시간이 오래 걸린다면 어떻게 해야 할까요? 혹은 엔지니어가 내가 원하는 만큼 상세한 데이터, 혹은 잘 구분된 데이터를 뽑아주지 않는다면 어떻게 해야 할까요?


별 수 있나요. 답답하면 내 손으로 해야죠.

만능짤


엔지니어에게 의존하지 말아야겠다는 점 이외에도, 현업 부서(특히 마케팅)가 SQL을 다루고 데이터를 추출할 줄 알면 굉장히 좋습니다. 왜때문에 좋냐면,


1) 내가 어떤 데이터를 원하는지 엔지니어에게 설명하고 이해시키는 과정을 생략할 수 있습니다. 시간이 단축됩니다. 미스커뮤니케이션에서 오는 시행착오를 줄일 수 있습니다.

2) 데이터를 추출하는 경험이 쌓일수록 어떤 DB에 어떤 테이블(table)이 있는지, 어떤 데이터 항목이 저장되어 있는지 지식이 쌓입니다. 즉, 우리 조직의 데이터에 대한 이해도가 높아집니다.

3) 우리 조직에 어떤 데이터가 부족한지도 눈에 들어옵니다. 개선할 점을 찾을 수 있습니다.

4) 가장 중요한 것. 필요할 때 빠르게 데이터를 확인할 수 있습니다. 그만큼 의사결정의 속도가 빨라집니다.


그렇기 때문에 저의 전 직장인 쏘카에서는 SQL을 배워서 활용하는 마케터도 몇 분 있었습니다. 이 분들은 R이나 파이썬 같은 프로그래밍 언어를 사용하지는 않았지만, SQL 능력을 바탕으로 데이터 기반 의사결정에서 중요한 역할을 맡을 수 있었습니다.


조직에 따라서는 BI(Business Intelligence) 솔루션을 도입해서 GUI 환경에서 드래그 앤 드롭으로 비교적 쉽게 데이터를 뽑아 볼 수 있는 곳도 있습니다. 만약 그런 조직에서 일하신다면, 축하합니다. 굉장히 데이터에 많은 투자를 하는 곳에 다니시는군요. 복 받으셨습니다.

대부분의 조직에서는 자주 보는 데이터를 확인할 수 있는 대시보드(Dashboard)가 있는 정도입니다. 잘 하면 '엑셀파일로 다운로드하기' 기능도 있을 겁니다. 하지만 이런 식으로는 데이터베이스에 저장된 수많은 데이터 중, 미리 정의해 놓은 데이터 항목만 볼 수 있습니다. 다양한 데이터 항목에서 새로운 발견을 할 수는 없습니다.


3. 데이터 분석의 시작은 데이터 추출이다. R이든 파이썬이든, 데이터를 추출해야 분석을 할 수 있다.

R을 쓰든, 파이썬을 쓰든, 데이터를 분석하려면 먼저 추출해야 합니다. 데이터를 추출하고 분석하는 방법은 크게 두 가지가 있습니다.


첫 번째 방법: 대시보드에서 데이터를 엑셀 파일로 다운로드하고(수작업), 엑셀 파일을 R/파이썬에 불러내기 위해 CSV 파일로 변환하고 (수작업), 정해진 규칙에 따라서 파일명을 변경(수작업)한 뒤, 그제서야 R/파이썬에 데이터를 불러내서 분석하기.
두 번째 방법: R/파이썬에서 직접 DB에 접속해서 데이터를 불러 와서, 분석하기. (코드만 한 번 짜 두면 그 뒤에는 수작업 없음)

두 방법을 쓰는 분석가 사이의 생산성 차이는 어마어마합니다. 특히나 주간/월간 지표를 반복적으로 분석할 때는 더욱 그렇습니다. 만약 다양한 소스에서 데이터를 불러와서 이리저리 조합하며 분석해야 하는 경우, 그 차이는 기하급수적으로 커집니다. 수작업으로 몇 시간 땀을 뻘뻘 흘려야 하는 일도, 자동화하면 엔터 한 번에 몇 초에 끝낼 수도 있습니다. (이건 저의 경험담이기도 합니다.)


R이나 파이썬이 엑셀에 비해 가지는 매력 중 가장 큰 것은 '반복 작업을 자동화할 수 있다'라는 점입니다. 그런데 데이터 추출에서 수작업을 반복한다면 그 매력이 반감되겠죠. 그렇기 때문에 R이나 파이썬을 배우려거든 먼저 SQL을 배워야 합니다.


R을 이용하는 분이라면 이런 코드를 이용해서 MySQL DB에 접속하고, 데이터를 추출할 수 있습니다.


4. SQL 방식이 아닌 데이터를 추출할 때도, SQL과 비슷한 문법으로 컴퓨터에 명령을 내려야 한다.

SQL이 워낙 보편적인 데이터 저장/추출 방식이다 보니, SQL이 아닌 다른 방식의 데이터 저장 체계에서도 SQL과 비슷한 문법으로 데이터를 추출하게 만들어 놓았습니다. 저도 최근에 알게 된 사실인데, 유명한 데이터 시각화 툴인 제플린(Zeppelin)에서도 시각화를 위해 SQL 쿼리를 사용한다고 합니다. 그야말로 SQL 모르면 (데이터 분석에서는) 아무 것도 할 수 없는 세상입니다.



데이터 분석을 하기 위해서는 프로그래밍 언어보다 먼저 SQL을 공부해야 하는 이유, 아시겠나요?


다음 글에서는 SQL을 어떻게 배우면 좋을지(...라기보다는 저와 제 동료들은 SQL을 어떻게 배웠는지)에 대해서 다뤄 보겠습니다. SQL 문법 강좌보다는 SQL 학습법에 대한 글이 될 겁니다.


그건 그렇고, 실무에서 데이터 분석을 웬만큼 했던 분들 중에서도 SQL을 잘 못 다루는 분이 많습니다. SQL만 잘 다뤄도 먹고 들어간다는 것은 그런 뜻에서 나온 이야기입니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari