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
'Language(R, Python, SQL) > R' 카테고리의 다른 글
[R] Error: package or namespace load failed for ‘ggplot2’ in loadNamespace 해결 (0) | 2023.02.20 |
---|---|
[R] Windows 환경 R 크롤러(Selenium) 만들기 + RPA (1) | 2022.12.15 |
[R] R 로 Mircrosort Teams 봇 생성 및 메시지 보내기 (0) | 2022.12.12 |
[R] 리눅스환경에서 R 패키지 설치시, linux ssl 관련 에러 해결 (0) | 2022.11.25 |
[R] string 으로 변수 할당 및 출력 (0) | 2022.11.16 |