본 포스팅에서는 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