[Big Query] 빅쿼리 SELECT 결과 데이터로 새 테이블 만들기.
빅쿼리에서 대부분 대용량 데이터를 다룬다. 특히 기본적으로 빅쿼리는 NEST방식으로 데이터를 저장하기 때문에 배열 형식의 데이터는 UNNEST 함수를 써야만 하기 때문에 여간 번거로운게 아니다.
참고 포스팅)
https://cheershennah.tistory.com/244
전체 데이터가 아닌 일부 데이터 결과만을 데이터 풀로 보고자 할 때 SELECT 한 결과를 별도의 하나의 테이블로 만들어 사용할 수 있다.
여기서는 CSV로 로컬에 테이블만들기, 빅쿼리에서 새테이블 만들기 2가지 알아보자.
빅쿼리 SELECT 결과로 로컬 데이터베이스에 새 테이블 만들기.
1. 원하는 데이터를 빅쿼리에서 조회 > 조회결과를 CSV로 저장.
2. 로컬데이터베이스에 저장명과 똑같은 이름으로 테이블 생성
-- DB 생성
CREATE DATABASE [db명] default CHARACTER SET UTF8;
USE [db명];
생성해준후 편한 DBMS를 사용해서 테이블 확인. (필자는 DBeaver 사용)
3. 테이블 > 데이터 가져오기 > CVS 선택 > 진행
완료 후 컬럼명, 데이터 타입 등 알맞게 변경
4. 테이블을 조회해보면 빅쿼리에서 뽑아낸 데이터가 들어간 테이블 완성.
-- DB 데이터 전체 조회
SELECT * FROM [db명];
-- DB 스키마 조회
DESC [db명];
TIP1) 엑셀 한글이 깨질 때 간단 해결법
1. 엑셀에서 데이터> 텍스트/CSV > 파일원본에서 유니코드 UTF-8 변환 적용 후 가져오기
TIP2) 만약 데이터가 꼬여서 밀어넣는 중 오류가 난다면 전체 삭제 후 재진행 해주는게 가장 깔끔.
DELETE 문 보다는 TRANCATE를 추천.
-- DB 삭제
TRUNCATE TABLE [db명];
* SQL TRANCATE 이란?
- 최초 생성되었을 당시의 Storage만 남기고, 데이터가 남겨있던 Storage는 Release 된다.
- TRUNCATE TABLE을 하면 CREATE TABLE을 한 직후의 상태와 같다.
- 자동 COMMIT이 되는 명령어이기 때문에, 이미 지운 데이터는 되돌릴 수 없다.
다음은 로컬에 굳이 디비설치가 필요없이 빅쿼리 내에서 새 테이블을 만드는 방법을 알아보자.
실제로 데이터가 너무 큰 경우에는 다음과 같은 메세지가 뜨며 엑셀 내보내기가 불가하다. 그리고 훨씬 간단하다.
빅쿼리 SELECT 결과로 빅쿼리 내에서 새 테이블 만들기.
1. 원하는 데이터를 빅쿼리에서 조회 > 조회결과 빅쿼리 테이블로 저장 선택
2. 원하는 프로젝트/ 데이터셋 선택 후, 테이블 명 입력하여 테이블 생성.
3. 새 테이블 생성 완료!