갈루아의 반서재

 

DBMS가 구축되어 있지 않아 구글 시트나 로컬에 엑셀 등으로 데이터가 분산되어 있어 데이터의 현상태라든지 잠재력을 파악할 수 없는 경우가 있다. 이 경우 구글 클라우드의 빅쿼리를 이용하면 이렇게 흩어져있는 데이터들을 모아 활용할 수 있다. 데이터들을 하나로 모아서 SQL 구문을 이용해 복수의 시트에 쿼리를 실행할 것이다. 

 

Create a Project

먼저 Google Cloud Platform 에서 새로운 프로젝트를 생성한다 Google Cloud Platform에 로그인한다. 

“프로젝트 만들기 CREATE PROJECT” 를 클릭하고 아래와 같이 주요 정보를 입력한다. 

프로젝트가 생성되었다.

 

Enable the API

다음으로 방금 생성한 새로운 프로젝트에 사용할  Sheets API 를 활성화할 차례이다. 

API 및 서비스 > 라이브러리 >  google sheet 를 검색하여 활성화시킨다.

 

Create a Dataset

BigQuery 콘솔로 이동하여 새로운 데이터세트를 만들 차례이다. 

데이터셋트 ID, 위치, 만료일, 암호화 등을 선택하고 데이터세트 만들기를 클릭한다.

데이터셋트 생성이 끝났다.

 

Create a table

다음으로 데이터가 포함된 테이블을 생성할 차례이다. 예제로 사용할 테이블은 The Public 2020 Stack Overflow Developer Survey Results 로, 다음 2개의 csv 파일로 구성된다. 

 

survey_results_public.csv - 설문 조사 결과를 담고 있는 파일이다.

survey_results_schema.csv - 설문 스키마를 담고 있는 파일로 컬럼 이름과 질문 내용을 포함하고 있다.

해당 설문조사에 대한 공식적인 내용은 다음 링크에서 찾아볼 수 있다.

insights.stackoverflow.com/survey/2020

 

해당 2개의 파일을 각각의 구글 스프레드 시트로 가져온다. CSV 파일을 구글 스프레드 시트로 가져오는 방법은 다음의 링크를 참고한다. 

2020/07/25 - [구글 Google] - CSV 파일 구글 스프레드시트로 가져오기 How to Import CSV Into a Google Spreadsheet

 

프로젝트 > 데이터셋트> 테이블 만들기 아이콘을 클릭한다.

먼저 survey_results_schema.csv 파일을 가지고 테이블을 생성해보자. 해당 스프레드시트 파일 우측 마우스를 클릭하여 '공유 가능한 링크 가져오기'를 선택한다. 

해당 링크를 복사한다. 

다음 항목으로 테이블 만들기 옵션에서 '드라이브'를 선택하고, 앞서 복사한 링크를 드라이브 URI 에 복사해서 넣는다. 파일형식은 CSV 를 선택한다. 테이블 이름을 입력하고 스키마 자동 감지에 체크하고 테이블 만들기를 클릭한다. 

연결된 구글 드라이브 스프레드시트가 비어있는 경우에는 아래와 같이 테이블를 만들 수 없다는 오류가 발생하므로, 사용할 샘플 데이터를 해당 시트로 가져온 후 작업을 진행한다.

 

앞서 스키마 자동 감지를 선택했지만 실제로 테이블을 생성해보면, 다음과 같이 필드 이름을 제대로 가져오지 못하는 경우가 있다. 원래 연결된 스프레드시트에는 첫 행에 컬럼 헤더가 입력되어 있었다. 

이 경우에는 다음과 같이 컬럼명을 직접입력하고 각각의 유형을 선택한다. 그리고 첫 행은 헤더이므로 건너뛸 헤더 행에 1을 입력하여 2행의 데이터부터 가져오도록 한다.

정상적으로 테이블이 생성되었음을 알 수 있다.

나머지 survey_results_public 시트로도 위와 같은 방식으로 테이블을 생성한다. 이 테이블의 경우 추가해야할 필드가 꽤 많다. 

생성한 테이블에 다음과 같이 테스크 쿼리를 실행시켜보자. 2개의 테이블을 조인해서 쿼리를 실행하는 것도 가능하다. 

다만, 다음과 같은 이슈도 있으니 참고한다.

"Error while reading table: dataset.table_name, error message: Found corrupted data while opening file."