Language(R, Python, SQL)/R

[R] Rstudio에서 GCP 빅쿼리 쓰고 읽기(GCP 빅쿼리 + R)

dtstory 2022. 11. 15. 20:30

R로 빅쿼리를 읽는 레퍼런스는 참 많았지만, 이것을 빅쿼리에 적재하는 소스는 찾기가 힘들었다. 그런데, 방법이 의외로 간단했다. MariaDB에 연결해서, DB에 데이터를 쌓는 느낌으로 하면 되는 것이었다.

 

백문이 불여일견이라고.. 무작정 한번 진행해보자.

 

 

# 1. Authentication 

GCP 서비스계정의 JSON키를 service_key라는 변수에 할당한 후, bq_auth를 통해 빅쿼리 권한 인증을 진행하자.

service_key = dir("../../config/serviceAccountKey/")[1]
bq_auth(path = paste0("../../config/serviceAccountKey/",service_key))

# 2. GCP 콘솔

프로젝트명과 데이터셋명, billing 주소를 각각의 변수에 할당한 후 con 을 통해 연결을 진행한다.

참고로 billing은 서비스 계정키의 주소를 입력하면 된다. 필자 같은 경우, billing.txt라는 파일 내에, 서비스계정키의 주소를 입력해두었다.

project = "my_project_name"
dataset = "my_dataset_name"
billing = read.table("../../config/serviceAccountKey/billing.txt") %>% as.character()

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

 

# 3. 데이터셋 내에 있는 데이터 리스트 출력

아래 스크립트를 실행하면, 현재 데이터셋 내에 있는 리스트를 모두 출력한다. 제대로 연결되어 데이터리스트가 나오는지 확인해보자

dbListTables(con)


# 4. 빅쿼리 내에 있는 데이터 읽기(read)

데이터를 읽는 방법이 두 가지가 있었다. 두 방법은 분명 차이가 있을 것 같은데.. 아직 파악하지는 못했다.

 

## 4-1. 첫번째 방법(dbReadTable)

test_table = dbReadTable(con, "test_table")

 

## 4-2. 두번째 방법(dplyr::tbl)

test_table = dplyr::tbl(con, "test_table")



# 5. 빅쿼리내에 데이터 쓰기(write)

R의 내장 데이터인 iris를 "iris_date"라는 이름으로 빅쿼리 데이터셋에 적재해보자. 아래의 명령으로 간단하게 적재가 되는 것을 확인할 수 있다.

DBI::dbWriteTable(con, "iris_data", iris)

 

728x90