반응형

 

개요

빅쿼리는 파이썬 기반의 CLI(Command Line Interface)도구인 bq 를 이용해서 명령을 실행할 수 있습니다. 

해당 페이지에는 기본적인 명령어와 사용법을 정리해보았습니다. 

참고 사이트 : https://cloud.google.com/bigquery/docs/reference/bq-cli-reference?hl=ko

 

설치

  • gcloud CLI 는 구글 클라우드 SDK의 일부입니다. 
  • 시스템에서 SDK를 다운받아 설치하고 초기화 한 후 gcloud 명령줄 도구를 사용할 수 있습니다. 
  •  PowerShell 명령어를 통해 SDK를 설치할 수 있습니다.  powershell 로 진행해보겠습니다. 

 

 

  1. Prerequire
    Google Cloud SDK 는 Python 으로 프로그래밍 되어있기 때문에, python 3.5 ~ 3.7 버전까지 지원합니다. 저는 3.8 이였기 때문에 다운그레이드 하여 설치하였습니다. 
  2. Installation
    Powershell 에서 해당 명령어를 실행합니다. 

  3. 설치 완료 후 다음 옵션을 허용 후 기본값으로 설정해주면 Cloud SDK Shell 설치 완료됩니다. 
    1. Cloud SDK 쉘 시작
    2. gcloud init 실행 

명령어

(New-Object Net.WebClient).DownloadFile("https://dl.google.com/dl/cloudsdk/channels/rapid/GoogleCloudSDKInstaller.exe", "$env:Temp\GoogleCloudSDKInstaller.exe")
& $env:Temp\GoogleCloudSDKInstaller.exe

 

bq 명령어 

명령설명사용법

명령 설명 사용법
cancel 작업 취소를 요청  bq cancel job_id
cp 테이블을 다른 테이블로 복사 bq cp dataset.old_table dataset2.new_table
extract destination_uris로 데이터를 추출. -m 옵션으로 모델만 추출 가능 bq extract ds.table gs://mybucket/table.csv
get-iam-policy 리소스에 대한 IAM 정책을 반환 bq get-iam-policy proj:ds
head       테이블에 행을 표시 bq head dataset.table
help 전체 또는 선택된 명령에 대한 도움말 출력 bq ls help
init .bigqueryrc 설정 파일 작성 bq init
insert 테이블에 행을 삽입 bq insert dataset.table /tmp/mydata.json
load destination_table에 데이터를 입력 bq load ds.new_tbl gs://mybucket/info.csv ./info_schema.json
ls 명명 된 컬렉션에 포함 된 개체를 나열 bq ls mydataset
mk 데이터 세트, 테이블, 뷰 또는 전송 구성(transfer configuration)을 작성 bq mk new_dataset
mkdef GCS와 같은 외부 테이블에 대한 정의를 JSON으로 생성 bq mkdef 'gs://bucket/file.csv' field1:integer,field2:string
partition 소스 테이블을 파티션 된 테이블로 복사 bq partition source_table_prefix destination_partitioned_table
query 쿼리를 실행 bq query 'select count(*) from publicdata:samples.shakespeare'
rm 데이터 세트, 테이블, 전송 구성 또는 예약을 삭제 bq rm ds.table
set-iam-policy 리소스에 대한 IAM 정책 설정 bq set-iam-policy ds /tmp/policy.json
shell 대화식 bq 세션을 실행 bq shell
show 객체에 대한 모든 정보를 표시 bq show dataset
update 데이터 세트, 테이블, 뷰 또는 전송 구성을 업데이트 bq update --description "Dataset description" existing_dataset
version bq 버전을 반환 bq version
wait 작업이 완료 될 때까지 대기 bq wait job_id

 

로컬 데이터 소스에서 데이터 로드

아래의 방법 중 하나를 사용하여 읽을 수 있는 데이터 소스를 로드할 수 있습니다.  

  • Cloud Console 또는 기본 BigQuery 웹 UI
  • bq 명령줄 도구의 bq load 명령어
  • API
  • 클라이언트 라이브러리

 

이 중, bq 명령줄 도구의 bq load 명령어를 사용하면 아래와 같이 진행됩니다. 

조건은

  • 구글 쉘 SDK를 실행되는 리눅스에 데이터소스에 대한 파일이 있어야 하며, 윈도우 PATH나 파일은 인식하지 않습니다. 
  1. 해당 데이터를 로드할 테이블을 생성 합니다.  (참고 : https://cloud.google.com/bigquery/docs/tables?hl=ko

  2. bq 명령어를 사용해 테이블에 데이터를 로드합니다. 

bq load \
프로젝트명:데이터셋명.테이블명\
데이터 path (절대 주소) / 데이터.csv

Cloud Storage 에서 데이터 로드 

리눅스에 파일 업로드나 , 용량이 커서 Cloud Console을 통해 테이블에 업로드하지 못했다면 Cloud Storage를 통해 로드할 수 있습니다. 

조건은

  • 테이블을 포함한 데이터세트는 스토리지 버킷과 같은 리전이나 멀티 리전에 위치에 있어야합니다. 
  • 빅쿼리 로드에 대한 모든 권한이 있어야 합니다. 

  1.  스토리지 버킷 생성 → 데이터 업로드 가 선행되어야 합니다. (참고 : https://cloud.google.com/storage/docs/creating-buckets?hl=ko ) 

  2. 해당 데이터를 로드할 테이블을 생성합니다. (참고 : https://cloud.google.com/bigquery/docs/tables?hl=ko
  3. bq 명령어를 사용해 테이블에 데이터를 로드합니다. 

bq load \
프로젝트명:데이터셋명.테이블명\
gs://버킷명/데이터.csv

 

위의 두 가지 방법을 사용하면 아래와 같이 데이터가 해당 테이블에 로드된 것을 확인할 수 있습니다. 

추가적인 옵션(--autodetct) 등등은 구글 문서에서 확인하실 수 있습니다. 

반응형

'Database Study > BigQuery' 카테고리의 다른 글

[BigQuery]빅쿼리 쿼리 성능 향상 - 집합 처리  (2) 2020.09.05
OLTP, OLAP  (0) 2020.08.31
[BigQuery]표준 SQL 쿼리 구문  (0) 2020.06.14
[BigQuery] Datetime UTC 를 KST로  (0) 2020.05.26
[BigQuery]BigQuery Dremel  (0) 2020.05.26

+ Recent posts