Как я могу создать запланированные данные SQL в блестящем приложении? - PullRequest
0 голосов
/ 23 октября 2018

Я создал на своем сервере Linux замечательное приложение, которое подключается к SQLSERVER и получает от него тысячи данных, а затем делает несколько шагов, чтобы получить окончательный результат.Но у меня есть проблема с этим приложением ... Когда я пытаюсь получить доступ к этому отчету через блестящий сервер, открытие страницы занимает много времени, и иногда я получаю сообщение об ошибке с подключением Страница нене отправлять данные , поэтому я хочу создать расписание для получения данных из SQL только каждый день или даже создать кнопку обновления для получения новых данных.

Я пробовал что-то вроде invalidateLater Но я получаю пустые данные после попытки таким образом, так что может кто-нибудь дать мне решение этой проблемы Пожалуйста?

Это мой код приложения:

Получение данных из SQL> DF <- dbGetQuery(con,Query1)

Пользовательский интерфейс

ui <- fluidPage(
  theme = shinytheme("cerulean"),
  titlePanel("Audit Logs"),
  sidebarLayout(
    sidebarPanel(
      pickerInput("Action", "Select Action Type", choices = DF %>% distinct(Action), selected = "Update", options = list(`actions-box` = TRUE,
                                                                                                                         `live-search` = TRUE,
                                                                                                                         `deselect-all-text` = "None...",
                                                                                                                         `select-all-text` = "Yeah, all !",
                                                                                                                         `none-selected-text` = "None"),multiple = T),br(),br(),

      pickerInput("SourceTable", "Select Table", choices= DF %>% distinct(SourceTable) , selected = "Sales.DocumentDetails", options = list(`actions-box` = TRUE,
                                                                                                                                            `live-search` = TRUE,
                                                                                                                                            `deselect-all-text` = "None...",
                                                                                                                                            `select-all-text` = "Yeah, all !",
                                                                                                                                            `none-selected-text` = "None"),multiple = T),br(),br(),

      pickerInput("ActionUserID", "Select ActionUserID", choices= DF %>% distinct(ActionUserID), options = list(`actions-box` = TRUE,
                                                                                                                                 `live-search` = TRUE,
                                                                                                                                 `deselect-all-text` = "None...",
                                                                                                                                 `select-all-text` = "Yeah, all !",
                                                                                                                                 `none-selected-text` = "None"),multiple = T),br(),br(),

      pickerInput("`Attribute Name`", "Select Attribute Name", choices= AttributeName, options = list(`actions-box` = TRUE,
                                                                                                      `live-search` = TRUE,
                                                                                                      `deselect-all-text` = "None...",
                                                                                                      `select-all-text` = "Yeah, all !",
                                                                                                      `none-selected-text` = "None"),multiple = T),br(),br(),


      downloadButton('downloadData', 'Download Data as CSV'), br(),
      width = 3

    ),

    mainPanel(
      tabsetPanel(
        tabPanel("Logs",DT::dataTableOutput("Log"))
      )
    )
  )
)

Серверная сторона

server <- function(input, output) {
  Data <- reactive({
    DF %>% filter(SourceTable %in% input$SourceTable, ActionUserID %in% input$ActionUserID)
  })
  Data2 <-reactive({
    result <- lapply(Data()$RowVersion , function(x) {
      xml  <- read_xml(x)
      xml_attrs(xml)
    })
    allNames <- unique(unlist(lapply(result, names)))

    placeholder <- rep(NA, length(allNames))
    names(placeholder) <- allNames
    matrixRes <- t(sapply(result, function(x) {
      # fill values with existing attributes
      tmp <- placeholder
      tmp[names(x)] <- x
      tmp
    }))
    dataFrameRes <-as.data.frame(matrixRes) %>% mutate_all(parse_guess)
    Final <-bind_cols(Data(), dataFrameRes)[,-which(names(Data()) %in% "RowVersion")]

    gathered_data <- gather(Final, "Attribute Name", "Value",-c(1,2,3,4,5,"ID","DocumentID"))  %>% 
      arrange(as.numeric(VersionID)) # %>% na.omit
    # FF <- data.table(Final)
    # s <- melt.data.table(FF,id.vars = c(1,2,3,4,5,"ID","DocumentID"),variable.name = "Attribute Name", value.names = "Value",variable.factor= TRUE,value.factor = TRUE)
    #Handeling Data
    gathered_data <- plyr::rename(gathered_data,c("ID" = "Common Entity Id","DocumentID" = "Header Entity Id"))
    #Get Lag Values 

    gathered_data.table <- data.table(gathered_data)
    StartTime <- Sys.time()
    Row1 <- gathered_data.table[,Was:=shift(Value, 1) , by=c("`Attribute Name`")]
    Row1 <- Row1[!is.na(Row1$Value), ] %>% 
      filter(Value != Was)
    Row1 %>% filter(Action %in% input$Action) 
  })
  output$Log = DT::renderDataTable({Data2()
  })

  output$Test <- reactive({
    Data2$`Attribute Name`
  })



  output$downloadData <- downloadHandler(
    filename = 'AuditLog.csv',
    content = function(file) {
      write.csv(Data2(), file)
    }
  )
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...