Ch07_data_upload

Page content

공지

  • 구글 빅쿼리 책 Chapter 4장 학습
  • 참고 교재는 아래와 같다.

개요

  • 로컬에서 데이터를 업로드 해본다.

데이터 다운로드

  • 깃허브에서 데이터를 다운로드 받는다.
$ git clone https://github.com/onlybooks/bigquery.git
  • ch04 폴더로 이동한 뒤, 실제 압축된 파일의 내용을 페이지 단위로 확인해본다.
  • 먼저 ch04 폴더로 이동한다.
  • zlees 명령으로 데이터를 확인해본다.
$ cd bigquery/ch04
$ zless college_scorecard.csv.gz
  • 명령을 실행한 후 스페이스 이용하여 페이지 단위로 데이터 확인 후, 종료하려면 q키를 누른다.
  • zless는 .gz과 같은 파일을 풀지 않고 Preview 형식으로 볼 수 있도록 도와준다.

bq 명령줄 도구

  • bq에 대해 자세히 확인하려면 아래 싸이트에서 확인하기를 바란다.
  • bq 명령줄 도구는 빅쿼리 플랫폼상의 빅쿼리 서비스를 사용하기 위한 편리한 명령들 제공
$ bq --location=US mk ch04
Dataset 'biggquerysample:ch04' successfully created.

에러 상황 1.

  • 다음과 같은 에러 메시지가 발견이 되면 프로젝트를 세팅해줘야 한다.
$ bq --location=US mk ch04
BigQuery error in mk operation: Not found: Project biggquerysample2
  • 대개의 경우, project 세팅을 해줘야 한다.
$ gcloud config set project your_project_ID

데이터 로드

  • 이제 데이터를 빅쿼리 내부의 테이블로 로드하는 명령을 수행해보자.
$ bq --location=US load --source_format=CSV --autodetect ch04.college_scorecard ./college_scorecard.csv.gz
Upload complete.
Waiting on bqjob_r1c47395bddea55ee_00000176e0b2548e_1 ... (37s) Current status: DONE 

에러 상황

  • 필자는 에러 상황이 발생하지는 않았다.
  • 교재에서는 에러가 발생할 수도 있다고 하였다.
Could not parse 'NULL' as int for field HBCU (position 26) starting at location 11945910
  • 위 문제는 데이터 상에 NULL값이 발생해서 생긴 값이다.

  • 해결 방안은,

    • 직접 데이터 수정 후, 재 로드
    • NULL값이 있는 행은 Skip 하기
    • 문자열 NULL값으로 재 표현하기.
  • bq load 명령을 활용해 테이블에 데이터를 추가한다.

$ bq --location=US \
>  load --null_marker=NULL --replace \
>  --source_format=CSV --autodetect \
>  ch04.college_scorecard \
>  ./college_scorecard.csv.
  • 만약 기존의 테이블에 행을 추가하려면 –replace=false를 지정한다.

최종 확인

  • 이제 SQL 코드를 입력한다.
  • Web UI에서도 쿼리를 작성할 수 있지만, 터미널에서도 쿼리를 작성할 수 있다.
$ bq query --use_legacy_sql=false \
  'SELECT 
    count(*)
   FROM 
    `biggquerysample`.ch04.college_scorecard'
Waiting on bqjob_r2b7a30293847c4d_00000176e0cb1b23_1 ... (0s) Current status: DONE   
+------+
| f0_  |
+------+
| 7175 |
+------+
  • WEB UI에서도 확인이 가능하다.