통계언어 R & BigQuery 연동
통계언어 R에서 BigQuery에 Connection하여 직접 쿼리를 해보고자 한다.
Google BigQuery도 다른 DBMS처럼 R에 패키지를 설치하여 접속 할 수 있다.
R과 R스튜디오의 설치 버전은 아래와 같다.
통계언어R : R-3.4.2 윈도우 버전
분석 툴 : RStudio-1.1.447
R BigQuery 연동
bigrquery 및 devtools 라이브러리 설치
R스튜디오에서 ‘bigrquery’ 및 ‘devtools’ 라이브러리를 설치하고, devtools를 사용하여 github의 rstats-db/bigrquery를 설치 한다.
Yes를 클릭하면, 설치를 시작한다.
install.packages("bigrquery") #1
install.packages("devtools") #2
devtools::install_github("rstats-db/bigrquery")
Bigrquery 라이브러리를 실행한다.
library(bigrquery)
projectName과 datasetName 지정
projectName 변수에 프로젝트명을 지정하고, datasetName 변수에 데이터셋의 이름을 지정한다. 해당 문서에서는 GA360 연동 데이터셋을 기반으로 설정하였다.
#자신의 프로젝트명과 데이터셋을 지정한다.
projectName <- "ga360-project" # put your projectID here
datasetName <- "ga_sessions_web_view"
BigQuery DataSet 지정
Ds 변수에 BigQuery DataSet을 담는다.
#데이터셋 지정
ds <- bq_dataset(projectName , datasetName)
조회쿼리 변수에 담기
Sql변수에 조회 할 SQL을 담는다.
# startDate, endDate를 조회 parameter로 지정
sql <- "
SELECT fullVisitorId , visitId
FROM `v_visit`
where TABLE_DATE BETWEEN @startDate AND @endDate;"
쿼리 실행
조회 쿼리를 실행하여 실행 결과를 변수에 담는다.
최초 실행시에는 인증코드를 발급받아 R콘솔에 입력해 주서야 한다. 아래 정리해둔 인증 절차를 먼저 수행한다.
#조회쿼리를 실행하여 결과를 tb변수에 담는다.
#parameters 속성에 SQL에 지정한 파라미터의 값을 입력해 준다.
tb <- bq_dataset_query(ds,
query = sql,
parameters = list(startDate = "20180429" , endDate = "20180429"),
billing = NULL,
quiet = NA)
사용자 인증
위의 쿼리 실행이 최초에는 사용자 인증이 되지 않아, R스튜디오 콘솔에서 ‘Enter authorization code : ‘라는 메세지를 보게 될 것이다.
크롬브라우저가 설치되었다면, 크롬브라우저에서 새로운 창으로 Google 계정 로그인 화면이 뜨게된다.
BigQuery 프로젝트와 데이터셋이 존재하는 계정으로 로그인 해보자.
로그인을 완료하면, Bigquery R이 Google 계정에 액세스하려 한다는 메세지를 볼 수 있을 것이다. 허용을 클릭한다.
인증코드를 복사한다.
복사한 인증코드를 R스튜디오 콘솔의 Enter authorization code : 에 입력해 준다.
이후 “쿼리 실행결과 다운로드 및 출력”을 진행한다.
쿼리 실행결과 다운로드 및 출력
쿼리 실행결과를 다운로드하여 변수에 담고, 결과를 출력한다.
#쿼리 실행결과를 다운로드하여 result변수에 담는다.
result <- bq_table_download(tb ,
page_size = 100 ,
start_index = 0 ,
max_connections = 5,
max_results = 10000)
print(result)
위의 bq_table_download function의 옵션을 살펴보면.
page_size = 100 <== 다운로드 시 gRPC 방식으로 100건씩 읽어온다.
start_index <== 시작 인덱스 0
max_connections = 5, <== 최대 커넥션 수는 5로 설정하였다. ( 대용량 데이터를 조회 해야 할 경우 커넥션을 늘려보면 좋을 것이다.)
max_results = 10000 ==> 최대 결과수 10000 건을 지정하였다.
R에서 직접 BigQuery 테이블에 접근하여 분석 할 수 있는 초기 설정 및 연동 코드를 작성해 봤다.
이후 R에서 BigQuery에 직접 접속하여, 분석을 수행한다.
출처
참고자료 :
1. Bigrquery 가이드 문서
https://cran.r-project.org/web/packages/bigrquery/bigrquery.pdf
2. Bigrquery github repository
https://github.com/r-dbi/bigrquery