1

目前,我正在使用 shinydashboard、R 和 MS Access 构建 KPI 仪表板。为了满足用户对原子数据的深入需求,我使用 MS Access 数据库(很快 SQL)作为底层数据架构。我使用 RODBC 作为 DB 驱动程序连接库。

反应性输入包括 {warehouse, date1, date2}。日期输入在 ui.R 页面上采用日期范围格式。

为了反应性地计算有问题的 KPI,我需要根据用户输入以交互方式查询数据库中的指标,然后进行计算。我可以在手动操作时以交互方式生成查询,但不能在 shinydashboard 中工作。我还能够使用 R & shiny 中的 renderDataTable 生成查询的输出数据表,表明查询正在运行。但是我无法弄清楚为什么我不能用下面的简单“sum”语句做一个简单的原理证明。

服务器.R

query_brk = reactive({
      q = ifelse(input$house == 'Saint Louis', 
                 paste0("SELECT * 
                        FROM T_Breakage 
                        WHERE Warehouse = 'STL' AND Date BETWEEN #",
                        as.character(format(input$dates[1], "%m/%d/%Y")), 
                        "# AND #", 
                        as.character(format(input$dates[2], "%m/%d/%Y")), "#"),
                 paste0("SELECT * 
                        FROM T_Breakage 
                        WHERE Warehouse = 'KC' AND Date BETWEEN #",
                        format(input$dates[1], "%m/%d/%Y"), 
                        "# AND #", 
                        format(input$dates[2], "%m/%d/%Y"), "#"))
      q
    })

t_breakage = reactive({
  odbc_connection = odbcConnectAccess2007(reporting_db)
  t = sqlQuery(odbc_connection, "SELECT * FROM T_Breakage WHERE Warehouse = 'STL' AND Date BETWEEN #06/01/2015# AND #03/31/2016#")# query=query_brk())
  t
}) 

output$total_breakage = reactive({
  valueBox(
    scales::comma((round(sum(t_breakage()[, 'Cases'], na.rm=TRUE)))), 
    'Warehouse Breakage', icon=icon('trash-o')
  )
})

我已检查以确保 (1) 查询正确呈现并以正确的 Access 格式呈现,以及 (2) 查询按指定工作。我有理由确定故障出现在代码的“output$total_breakage”阶段。

我可能遗漏了一些简单的东西——非常感谢任何解决此问题的帮助。感谢您的时间和想法。

4

0 回答 0