現在、shinydashboard、R、および MS Access を使用して KPI ダッシュボードを構築しています。アトミック データにドリルダウンできるようにするというユーザーの要件を満たすために、基礎となるデータ アーキテクチャとして MS Access データベース (まもなく SQL) を使用しています。DB ドライバー接続ライブラリーとして RODBC を使用しています。
リアクティブ入力には {warehouse, date1, date2} が含まれます。日付入力は、ui.R ページの日付範囲形式です。
問題の KPI を反応的に計算するには、ユーザー入力に基づいてデータベース内のメトリックを対話的にクエリし、計算する必要があります。手動で実行するとインタラクティブに生成されたクエリを動作させることができますが、shinydashboard では動作しません。R & Shiny 内で renderDataTable を使用してクエリの出力データ テーブルを生成することもでき、クエリが機能していることを示しています。ただし、以下の単純な「合計」ステートメントを使用して単純な原理証明を実行できない理由がわかりません。
サーバー.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」段階で内訳が表示されることは十分に確信しています。
簡単なことを見逃している可能性があります。この問題を解決するための助けをいただければ幸いです。あなたの時間と考えをありがとう。