Skip to Content

正如你可能已经知道的那样,我爱R —— 一个好玩的开源统计编程语言。所以,今天我决定去学点新的R语言用法。

R语言的web支持不是太多,但是有个名叫Rook的包是我大爱。在我的博客RSAP, Rook and ERP里我也提到过它。

今天我试了一下最近在R社区很热门的Shiny。我不得不说——我立刻就爱上了它。

所以,你可能会问是什么让Shiny这么酷呀?嗯……除了它允许你用R创建Web应用程序这个事实,它是完全动态的。这意味着,一旦你改变一个参数,自动刷新的不是整个网页,而是只有图形…真棒,对吧?

我以前写过一篇关于 SAP和Ruby的博客 Ruby joins the SAP HANA party,文中我模拟了SE16,让用户浏览SFLIGHT包里的表。 这次我会做类似的事,但略微不同的是,你不但可以选择表,还可以选择显示的记录数。

那么,我们该怎么做呢?很简单,安装shiny和RODBC这两个包——如果你还没有装过。
Shiny_SAPHANA_00.png

然后,我们得创建Shiny文件夹和SAP_HANA_R文件夹(这只是为了把文件组织得更有条理)。

接下来创建两个文件ui.R和server.R。
ui.R
library(“shiny”)
library(“RODBC”)
ch<-odbcConnect(“HANA_TK”,uid=”SYSTEM”,pwd=”manager”)
odbcQuery(ch,”SELECT table_name from SYS.CS_TABLES_ where schema_name = ‘SFLIGHT'”)
tables<-sqlGetResults(ch)
odbcClose(ch)
shinyUI(pageWithSidebar(
  headerPanel(“SAP HANA and R using Shiny”),
  sidebarPanel(
    selectInput(“Table”, “Choose a table:”,
                choices = tables$TABLE_NAME),
    numericInput(“Records”, “Number of Records to view:”, 10)
  ),
  mainPanel(
    tableOutput(“view”)
  )
))
server.R
library(“shiny”)
library(“RODBC”)
shinyServer(function(input, output) {
  output$view <- reactiveTable(function() {
    ch<-odbcConnect(“HANA_TK”,uid=”SYSTEM”,pwd=”manager”)
    schema_table<-paste(“SFLIGHT.”,input$Table,sep=””)
    query<-paste(“SELECT TOP”,input$Records,”* FROM”,schema_table)
    odbcQuery(ch,query)
    result<-sqlGetResults(ch)
    odbcClose(ch)
    head(result, n = input$Records)
  })
})
这两个文件建好了后,我们可以再建一个文件来调用我们的应用。
Shiny_HANA.R
library(shiny)
setwd(“C:/Blag/R_Scripts”)
runApp(“Shiny/SAP_HANA_R”)
注意setwd(“C:/Blag/R_Scripts”) 指向我的R脚本文件夹。setwd是 “Set Working Directory”(设置工作目录)的缩写。

默认设置下,当我们运行Shiny_HANA.R的时候,浏览器会自动打开,并让你选择参数。 
Shiny_SAPHANA_01.png

你看,我们可以选一个新的表来显示
Shiny_SAPHANA_02.png
也可以选择显示的记录条数。
Shiny_SAPHANA_03.png
Shiny_SAPHANA_04.png

爽么?希望你能喜欢 🙂
To report this post you need to login first.

Be the first to leave a comment

You must be Logged on to comment or reply to a post.

Leave a Reply