R 과 BigQuery 연계 (bigrquery, DBI)

본 포스팅에서는 R 과 BigQuery를 연계하는 방법을 다룬다.

구체적으로, R 에서 함수를 호출해 BigQuery에 쿼리를 날리고
해당 쿼리 결과 값을 로컬에 있는 R 로 가져와
dataframe object로 저장하기까지의 과정을 다룬다.

이를 위해 사용되는 R 패키지는 DBI, bigrquery, dbplyr 총 3가지다.
각 패키지의 역할은 간략하게 다음과 같다.

1. DBI
BigQuery를 비롯한 포괄적인 R/DBMS database 와의 인터페이스를 제공하는 패키지

2. bigrquery
BigQuery에 특정된 인터페이스를 취급하는 패키지

3. dbplyr
dplyr를 SQL 로 번역해주는 역할을 하는 패키지. 데이터 조작을 위해 필요하다.

아래 코드에서는 이해를 목적으로, 함수 별로 앞에 ‘패키지명’:: 을 명시함으로써 구분을 해 놓았다.
예외 적으로, dbplyr 의 경우는 명시하지 않았고 다만 ‘%>%’ 가 포함된 코드는 dbplyr 가 사용된 것이다.

#패키지 설치 및 로드

install.packages("bigrquery")
install.packages("DBI")
install.packages("dbplyr")

library(bigrquery)
library(DBI)
library(dbplyr)

##연결 셋팅

#요금 청구 대상이 되는 프로젝트 ID 입력
billing <- "project id"
#쿼리하고자 하는 프로젝트 ID 입력
projectName <- "project id"
#쿼리하고자 하는 데이터셋 입력
datasetName <- "dataset"

con <- DBI::dbConnect(
  bigrquery::bigquery(),
  project = "project id",
  dataset = "dataset",
  billing = billing
)

ds <- bigrquery::bq_dataset(projectName , datasetName)

#인증
bigrquery::bq_auth()

#사용하고자 하는 sql문 입력, 이때 syntax는 BigQuery
sql_tmp <- paste0("SELECT column
                  FROM `project id.`.dataset.table;")

#sql 호출
tb <- bigrquery::bq_dataset_query(ds,
                       query = sql_tmp,
                       billing = billing,
                       quiet = NA)

#테이블을 dataframe 형태로 다운로드
tb_df <- bigrquery::bq_table_download(tb) %>% as.data.frame()

Reference
https://cloud.google.com/architecture/data-science-with-r-on-gcp-eda

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중