目前,我正在使用 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”阶段。
我可能遗漏了一些简单的东西——非常感谢任何解决此问题的帮助。感谢您的时间和想法。