#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()
, чтобы быть уверенным 🙂