카테고리 없음

통계언어 R & BigQuery 연동

비바버튼 2018. 7. 30. 21:59
728x90

통계언어 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