Как считывать данные из Bigquery в блестящее приложение, созданное с помощью Golem

#r #shiny #bigrquery #golem

#r #блестящий #bigrquery #голем

Вопрос:

Я пытаюсь считывать данные из таблицы Bigquery в блестящее приложение, следуя структуре Golem.

Это можно легко сделать, добавив следующий код перед функциями ui и server в App.R файл

 bq_auth(path = "xxxxxxxxxxxx.json") # authenticating biqrquery with service account json file

# Establishing connection
con <- dbConnect(
           bigrquery::bigquery(),
           project = "project id",
           dataset = "dataset name",
           billing = "project id"
)
 

Но я немного не понимаю, как это сделать при использовании Golem .

Следуя этой теме, я создал reactiveValue() app_server.R файл.

 #' The application server-side
#' 
#' @param input,output,session Internal parameters for {shiny}. 
#'     DO NOT REMOVE.
#' @import shiny
#' @import bigrquery  
#' @noRd

app_server <- function( input, output, session ) {
# Your application server logic 
bq <- reactiveValues()

observe({

    bq$con <- dbConnect(drv = bigquery(),
                    project = "project_id",
                    dataset = "datset_id",
                    billing = "project_id")

})

}
 

Я также импортировал bigrquery , но, похоже, это что-то сломало, так как теперь при запуске я получаю следующие ошибки run_dev.R :

 > golem::document_and_reload()
Loading Dashboard
Error : object ‘DBI’ is not exported by 'namespace:bigrquery'
-- Error documenting your package ----------------------------------------------------------------
> 
> # Run the application
> run_app()
Error in run_app() : could not find function "run_app"
 

Комментарии:

1. Привет, ошибка «не удалось найти функцию run_app()» обычно означает, что функция document_and_reload() завершилась с ошибкой. Не могли бы вы вставить сюда весь результат запуска скрипта run_dev.R, пожалуйста?

2. Я отредактировал свой вопрос, чтобы включить ошибки, которые я получаю при запуске run_dev.R . Возможно, также интересно отметить, что, даже когда я отменил изменения, которые привели к ошибке, run_dev.R все равно выдает ту же ошибку. Спасибо, что нашли время, чтобы посмотреть на это!

Ответ №1:

Вот проблема, основанная на вашей ошибке:

 > golem::document_and_reload()
Loading Dashboard
Error : object ‘DBI’ is not exported by 'namespace:bigrquery'
-- Error documenting your package --
 

Где-то в вашем коде вы пытаетесь вызвать bigrquery::DBI() , но это не функция из этого пакета. Отсюда ошибка {golem} : вы не можете загрузить все, если у вас ошибка пространства имен 🙂

Вы должны либо найти эту ошибку кода в :

  • в одном из ваших R-скриптов, где вы делаете bigrquery::DBI()
  • в вашем пространстве имен, где у вас может быть importFrom(bigrquery, DBI)
  • в вашем @importFrom в вашем RScript, где вы могли бы делать @importFrom bigrquery DBI

Удаление этого должно решить проблему.

Твое здоровье, Колин

Комментарии:

1. Спасибо за быстрый ответ, я действительно допустил ошибку, написав в какой-то момент @importFrom bigrquery DBI в одном из своих модулей, но затем исправил ее, но у меня все еще была та же ошибка. Мне пришлось вручную отредактировать файл пространства ИМЕН, теперь он снова работает.

2. Рад это слышать! Действительно {roxygen2} , иногда можно забыть удалить элементы из пространства имен, поэтому иногда стоит удалить его и повторно запустить devtools::document() , чтобы быть уверенным 🙂