Как загрузить большие наборы данных в R из BigQuery? - PullRequest
0 голосов
/ 02 сентября 2018

Я пробовал два способа с пакетом Bigrquery , таким что

library(bigrquery)
library(DBI)

con <- dbConnect(
  bigrquery::bigquery(),
  project = "YOUR PROJECT ID HERE",
  dataset = "YOUR DATASET"
)
test<- dbGetQuery(con, sql, n = 10000, max_pages = Inf)

и

sql <- `YOUR LARGE QUERY HERE` #long query saved to View and its select here
tb <- bigrquery::bq_project_query(project, sql)
bq_table_download(tb, max_results = 1000)

но с ошибкой "Error: Requested Resource Too Large to Return [responseTooLarge]", потенциально связанная проблема здесь , но меня интересует любой инструмент для выполнения работы: я уже попробовал решения, изложенные здесь , но они потерпели неудачу.

Как я могу загрузить большие наборы данных в R из BigQuery?

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Я тоже начал использовать BigQuery. Я думаю, что это должно быть что-то вроде этого.

Текущий выпуск bigrquery можно установить из CRAN:

install.packages("bigrquery")

Новейший выпуск для разработки можно установить с GitHub:

install.packages('devtools')
devtools::install_github("r-dbi/bigrquery")

Использование Низкоуровневый API

library(bigrquery)
billing <- bq_test_project() # replace this with your project ID 
sql <- "SELECT year, month, day, weight_pounds FROM `publicdata.samples.natality`"

tb <- bq_project_query(billing, sql)
#> Auto-refreshing stale OAuth token.
bq_table_download(tb, max_results = 10)

DBI

library(DBI)

con <- dbConnect(
  bigrquery::bigquery(),
  project = "publicdata",
  dataset = "samples",
  billing = billing
)
con 
#> <BigQueryConnection>
#>   Dataset: publicdata.samples
#>   Billing: bigrquery-examples

dbListTables(con)
#> [1] "github_nested"   "github_timeline" "gsod"            "natality"       
#> [5] "shakespeare"     "trigrams"        "wikipedia"

dbGetQuery(con, sql, n = 10)



library(dplyr)

natality <- tbl(con, "natality")

natality %>%
  select(year, month, day, weight_pounds) %>% 
  head(10) %>%
  collect()
0 голосов
/ 03 сентября 2018

Как подсказал вам @hrbrmstr, документация специально упоминает:

> #' @param page_size The number of rows returned per page. Make this smaller
> #'   if you have many fields or large records and you are seeing a
> #'   'responseTooLarge' error.

В этой документации от r-project.org вы прочтете другой совет в объяснении этой функции (стр. 13) :

Это извлекает строки в кусках page_size. Это наиболее подходит для результаты небольших запросов (скажем, <100 МБ). Для больших запросов это лучше экспортировать результаты в файл CSV, хранящийся в облаке Google и используйте инструмент командной строки bq для локальной загрузки. </p>

...