【问题标题】:How to read data from Bigquery into Shiny App made with Golem如何将 Bigquery 中的数据读取到使用 Golem 制作的 Shiny App 中
【发布时间】:2021-03-08 18:48:51
【问题描述】:

我正在尝试按照 Golem 的框架将 Bigquery 表中的数据读入 Shiny App。

这可以通过在 App.R 文件中的 uiserver 函数之前添加以下代码轻松完成

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 时,我对如何做到这一点有点迷茫。

按照这个thread,我在app_server.R 文件上创建了一个reactiveValue()

#' 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"

【问题讨论】:

  • 你好,“could not find function run_app()”的错误通常表示document_and_reload()函数失败。你能把运行 run_dev.R 脚本的全部输出粘贴到这里吗?
  • 我编辑了我的问题以包含我在运行run_dev.R 时遇到的错误。可能还值得一提的是,即使我撤消了最终导致错误的更改,run_dev.R 仍然给出相同的错误。感谢您抽出宝贵时间查看 thsi!

标签: r shiny bigrquery golem


【解决方案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()
  • 在您的 NAMESPACE 中,您可能有 importFrom(bigrquery, DBI)
  • 在您的 RScript 中的 @importFrom 中,您可能正在执行 @importFrom bigrquery DBI

删除它应该可以解决问题。

干杯, 科林

【讨论】:

  • 感谢您的快速回复,我确实在某个模块中犯了@importFrom bigrquery DBI 的错误,但后来更正了它,但我仍然遇到同样的错误。我不得不手动编辑 NAMESPACE 文件,现在它又可以工作了。
  • 很高兴听到这个消息!事实上,{roxygen2} 有时会忘记从 NAMESPACE 中删除元素,所以有时值得删除它并重新运行 devtools::document() 以确保 :)
猜你喜欢
  • 2020-02-04
  • 2022-07-14
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多