【问题标题】:How to set a RpostgreSQL query as a dataframe object for RpivotTable?如何将 RpostgreSQL 查询设置为 RpivotTable 的数据框对象?
【发布时间】:2018-12-26 07:14:55
【问题描述】:

我正在尝试使用 RpostgreSQL 来获取要输入 rpivotTable 包并使用闪亮显示给用户的数据。

错误:数据应该是 data.frame、data.table 或 table

不幸的是,我是 R 新手,无法弄清楚如何将我的 postgreSQL 查询设置为数据框、表或 data.table,以便可以创建 rpivotTable。

library(shiny)
library(DBI)
library(RPostgreSQL)
library(DT)
library(plotly)
library(rjson)
library(pool)
library(dplyr)
library(dbplyr)
library(rpivotTable)


ui <- fluidPage(


##DEBUGGING##

tableOutput("tbl"),

rpivotTable(Titanic),

### sql & rpivottable attempts ###

rpivotTable("OverallPivot"),

rpivotTableOutput("tbl2"),


output$pivtbl2 <- renderRpivotTable(rpivotTable(data = DataSet,
                                                aggregatorName = "Sum",
                                                vals = "Count",
                                                cols = "order_date",
                                                rows = "product_id",
                                                menuLimit = 1200,
                                                rendererName = "Line Chart"))

)


server <- function(input, output, session) {


  ###DEBUGGING SERVER

  output$tbl <- renderTable({
    conn <- dbConnect(
      drv = dbDriver("PostgreSQL"),
      dbname = "store",
      host = "localhost",
      user = "postgres",
      password = "123456")
    on.exit(dbDisconnect(conn), add = TRUE)
    dbGetQuery(conn, paste0(
      "SELECT * FROM orders;"))
  })

  ###Attempted sql & rpivotTable attempts SERVER

  OverallPivot <- renderRpivotTable({    conn <- dbConnect(
    drv = dbDriver("PostgreSQL"),
    dbname = "store",
    host = "localhost",
    user = "postgres",
    password = "123456")
  on.exit(dbDisconnect(conn), add = TRUE)
  dbGetQuery(conn, paste0(
    "SELECT * FROM orders;"))
  })

  DataSet <- renderRpivotTable({    conn <- dbConnect(
    drv = dbDriver("PostgreSQL"),
    dbname = "store",
    host = "localhost",
    user = "postgres",
    password = "123456")
  on.exit(dbDisconnect(conn), add = TRUE)
  dbGetQuery(conn, paste0(
    "SELECT * FROM orders;"))
  })


tbl2 <- renderRpivotTable({
  conn <- dbConnect(
    drv = dbDriver("PostgreSQL"),
    dbname = "store",
    host = "localhost",
    user = "postgres",
    password = "123456")
  on.exit(dbDisconnect(conn), add = TRUE)
  dbGetQuery(conn, paste0(
    "SELECT * FROM orders;"))
})

  }


shinyApp(ui, server)

我能够以闪亮的“tbl”格式显示来自 postgres sql 的表,并使用闪亮的 R 中的泰坦尼克号数据框显示数据透视表。

我只是不知道如何将两者结合在一起并使用 postgres sql 查询以闪亮的方式显示 rpivottable。

我已经将我在调试部分中的成功示例和我失败的失败尝试分开

感谢您的帮助!

【问题讨论】:

    标签: r shiny rpostgresql rpivottable


    【解决方案1】:

    您需要在 renderRpivotTable 函数之外创建 R 对象。

    server.R

    library(shiny)
    library(rpivotTable)
    library(RPostgreSQL)
    
    function(input, output, session) {
    
      conn <- dbConnect(
        drv = dbDriver("PostgreSQL"),
        dbname = "store",
        host = "localhost",
        user = "postgres",
        password = "123456")
    
      on.exit(dbDisconnect(conn), add = TRUE)
    
      db_data <- dbGetQuery(conn, paste0("SELECT * FROM orders;"))
    
      output$pivot <- renderRpivotTable({
        rpivotTable(data = db_data)
    
      })
    
    }
    

    ui.R

    library(shiny)
    library(rpivotTable)
    
    test_page <- fluidPage(
      rpivotTableOutput('pivot')
    )
    
    test_page
    

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 2016-02-18
      • 2012-12-28
      • 1970-01-01
      • 2019-10-12
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2023-03-30
      相关资源
      最近更新 更多