-
[data.world] 쿼리실행창 해부 - 쿼리를 잘하기 위한 지원도구들데이터 분석/DB & SQL 2020. 4. 19. 09:44
생각해보았다. 비개발직군에게 hue 와 같이 쿼리할 수 있는 환경을 제공했을 때, 가장 힘들어하는 부분이 무엇일지. 나한테 많은 사람들이 계속해서 물어볼 질문은 무엇인지? PM 은 이런 지속된 문제를 해결함으로써 업무 효율성을 증대시킬 수 있다. 사실 이건 너무 깔끔한 표현이고, 비슷한 질문을 수없이 많은 사람들한테 받으면 조금 지친다. 그래서 이 고민에 대해 좀 더 공을 들여 문서화해보자고 결심했다.
다시 원래의 질문으로 돌아오자. 그리고 내 대답은 이렇다.
Q. 비개발직군에게 hue 와 같이 쿼리할 수 있는 환경을 제공했을 때, 가장 힘들어하는 부분이 무엇일까?
A. 바로 쿼리실행 환경 그 자체!특히 데이터에 관심이 많은 비개발직군은 일반적으로 쿼리 자체는 여러 루트를 통해서 공부했다. 하지만 충분히 쿼리 실행을 해본 경험이 없다. 그리고 데이터와 쿼리 실행 환경 개념에 대한 이해도가 낮다. 때문에 설사 쿼리를 많이 접했어도 쿼리 실행에 자신 없어하는 경우를 많이 보았다. 사실 데이터를 업으로 하는 사람들도 쿼리실행창의 다양한 사용성의 지원을 받아 쿼리를 작성한다. 그런데 오히려 초심자들은 이런 지원 툴을 익히지 못해 그 도움을 받지 못하는 경우가 많다.
그래서 쿼리 실행창을 해부해서, 쿼리를 직접 추출하는 데에 도움을 받을 수 있는 여러 기능에 대해 공유하고 싶었다. 사실 data.world 뿐 아니라 대부분의 쿼리실행환경은 구성 및 기능성이 유사하다. 친절한 GUI 를 통해 쿼리실행환경에 익숙해져보자.
1. Project Directory
프로젝트는 유사한 목적을 가지는 데이터셋 및 쿼리셋을 모아놓는 단위이다. data.world 의 Project Directory 는 다음 5개로 구성되어 있다. 내가 가진 데이터와 데이터에 대한 분석쿼리, 그리고 결론을 알 수 있다.
- Home, Project Summary, Data Dictionary: 내 프로젝트에 대한 설명과 내가 가진 데이터셋의 스키마에 대한 설명
- Project File: 내가 이 프로젝트를 위해 직접 연결한 데이터셋
- Connected Dataset: 외부서비스에서 공유된 데이터를 연결한 데이터셋
- Queries: 내 저장된 쿼리 소스코드
- Insights: 이 프로젝트에서 알아낸 결론에 대한 설명글이후 Project 단위로 외부나 제한된 사람들에게 공유할 수 있다. 이 때 Project Summary 와 Data Dictionary 는 외부의 데이터셋 사용자들이 이 도메인 데이터에 대한 이해도를 높이는 데에 도움을 준다.
다른 언어 프로젝트들도 데이터 파일과 소스코드 파일을 분리한다. 마찬가지로 여기도 Project File, Connected Dataset 데이터셋과 코드Queries 를 분리해 놓았다. 일반적인 쿼리실행환경에는 LNB 에 DB 와 테이블이 위치한다. 내가 어떤 데이터셋을 활용할 수 있는지, 각 도메인 데이터는 어떤 관계를 이루면서 어떻게 쌓여있는 지를 확인한다.
2. Queries Management
쿼리를 담은 소스코드 이름과 공유범위가 보여진다. basic_select [shared]
우측에 [Save], [Run Query] 등 쿼리 저장 및 실행 요청하는 버튼이 있다. Default 는 Query 코드에 대한 정보를, Versions 는 save 에 따른 버전정보를 알 수 있다. 각 Version 은 해당 버전에 저장된 쿼리 스냅샷으로 복제하여 재활용할 수 있다.3. Query 실행창
프로젝트에서 조회가능한 데이터셋을 기준으로 내가 실행시키고 싶은 쿼리를 입력하는 창이다. data.world 의 쿼리실행창에는 하나의 쿼리만 저장가능하다.
쿼리 작성하는 데 필요한 기능을 모두 지원한다. 키를 입력하면 키워드와 테이블/스키마명등 적당한 추천도 잘해주고, (나중에 보면 알겠지만) keyword 는 자주색, 변수는 청록색, 값은 파랑색 등, 가독성을 높이는 색깔 서식이 들어가있다. keyboard Shortcut 을 잘 활용하면 손도 덜가고 숙련된 것처럼 보일 수 있다. [Cmd]+[Enter] : 쿼리실행 / [Cmd]+[S]: 쿼리 저장
4. Query 결과창
Query 결과에 대해 미리보기할 수 있고, 파일 다운로드를 포함하여 외부에 export 할 수 있다. export 방식은 크게 3가지이다. 각 export 방식에 따라 데이터 제공 플랫폼의 각 기능들을 구축하는데에 용이할 것으로 보인다.
- Download as csv/xlsx : 1회용 추출
- save to dataset or project : 다른 쿼리실행에 활용
- copy URL or embed code : 외부 제공, 특히 어드민 제공URL 로 쿼리결과를 직접 다운로드 호출할 수 있거나, 웹에 embed 할 수도 있습니다. 어드민에 유용한 쿼리입니다! 해당 쿼리 조회결과가 변경되면 외부 임베디드된 결과조회에서도 변경사항이 동기화된다. (동기화하지 않을 수도 있다.)
만약 query syntax 가 틀리거나 컴퓨터가 해석할 수 없을 경우, 아래와 같이 표시된다. 일단 봐도 빨간줄인게 무언가 잘못되었다는 것을 알 수 있다. 틀린 라인과 사유를 잘 표기해주니, 꼭 에러를 잘 읽는도록 하자. 익숙하지 않은 에러라면 구글링을 해보자. 에러도 읽다보면 익숙해진다. 에러에 나오는 DB 개념들에 대해서 익숙해지고 나면, 마치 수학 오답노트처럼 활용할 수 있으니, 겁먹지 말고 읽어보자.
5. Project Schema
프로젝트 내에서 내가 조회할 수 있는 데이터 칼럼들에 대해서 나열해준다. 각 컬럼의 데이터타입과 컬럼명이 보인다.
쿼리에 활용하는 데이터 컬럼을 선별할 때 데이터타입과 Nullable 정책은 꼭 확인해야한다.
엑셀과 DB 모두 텍스트 데이터타입을 가진 숫자에 대해서는 수 연산 함수를 적용할 수 없다. 우리눈에는 숫자로 보이지만, 컴퓨터는 텍스트라고 정의하고 있기 때문이다.
또한 엑살과 DB 모두 #N/A 에 대해서는 수 연산 함수를 적용할 수 없다. 정말 빈 값은 0 으로 치환하여 수 연산함수를 적용할 수 있지만, 말 그대로 #N/A Null 인 경우에는 수 연산함수를 적용할 수 없다.
각 컬럼명의 [i] 를 클릭하면 데이터타입과 유니크한 값의 갯수(Distinct), Empty (Null), 그리고 숫자형이라면 Mean, Min, Max STDV, Skewness, Kurtosis 와 같은 기본적인 통계자료가 제공된다. 숫자형의 통계자료를 통해 데이터가 내가 의도한대로 쌓였는지, 또는 내가 원하는 데이터가 맞는지를 가늠해볼 수 있다.
쿼리실행창 해부와 더불어 쿼리를 실행할 때 지원받을 수 있는 기능들에 대해서 정리해보았다.
쿼리실행창을 뜯어보면서, 나도 이런 많은 지원기능들을 제대로 활용하고 있었는지 반성했다. 무작정 쿼리를 실행시키지 말자. 쿼리 실행 전에 데이터 구성, 데이터 스키마 정책을 확인하고 타이핑하자. 이 글이 좋은 쿼리습관을 만드는 데에 도움이 되기를.
'데이터 분석 > DB & SQL' 카테고리의 다른 글
[data.world] query template 과 형변환 처리 (0) 2020.04.20 [data.world] 여러 데이터소스에서 데이터 가져오기 (0) 2020.04.19 [data.world] 비개발 직군을 위한 데이터 솔루션 (0) 2020.04.18 HackerRank Mysql 문제풀이 - Binary Tree Nodes (0) 2019.12.15 hackerrank mysql Occupations 문제풀이 (0) 2019.12.15