Hace unos dias...este blog Let R Embrace Data Visualization in HANA Studio me dio el poder que necesitaba para poder seguir trabajando en esto...pero por supuesto...la vida no es tan bonita asi que aun tuve que hacer muchas cosas para que esto funcionara...
Primer...cygwin no me funciono -:( asi que utilice Xming -;)
Ahora...una de las cosas que es realmente importante tener es todos los paquetes X11 cargados en el servidor de R...asi que simplemente hagan esto...
Conectense a su Servidr de R usando Putty y luego escriban "yast" para entrar al "Yet another setup tool". (Asegurense se hacer click en X11 Forwarding)...
Busquen e instalen todo lo relacionado con X11-Devel. Tambien instalen/actualizen su navegador Firefox browser (tambien en yast).
Cuando eso este listo...podemos continuar -;)
Si ya tienen R instalado...por favor borrenlo...tan facil como esto...
Deleting_R |
---|
rm -r R-2.15.0 |
Luego, descarguen el codigo fuente otra vez...tengan en cuenta que vamos a usar el R-2.15.1
Get_R_Again |
---|
wget http://cran.r-project.org/src/base/R-2/R-2.15.1.tar.gz |
Ahora...necesitamos soporte para imagenes jpeg...asi que descarguemos un par de archivos...
Getting_support_for_images |
---|
wget http://prdownloads.sourceforge.net/libpng/libpng-1.6.3.tar.gz?download wget http://www.ijg.org/files/jpegsrc.v9.tar.gz tar zxf libpng-1.6.3.tar.gz tar zxf jpegsrc.v9.tar.gz mv libpng-1.6.3 R-2.15.1/src/gnuwin32/bitmap/libpng mv jpeg-9 R-2.15.1/src/gnuwin32/bitmap/jpeg-9 cd R-2.15.1/src/gnuwin32/ cp MkRules.dist MkRules.local vi MkRules.local |
Cuando ejecuten vi en el archivo deberian descomentar las lineas de la fuente de directorios bitmap.dll tal como en la imagen (tomen en cuenta que no estoy tomando en cuenta las images TIFF, porque no me funcionaron)...
Ahora, debemos ir a cada carpeta y compilar las librerias...
Compiling_libraries |
---|
cd R-2.15.1/src/gnuwin32/bitmap/libpng ./confire make make install cd .. cd jpeg-9 ./configure make make install |
Cuando ambas librerias han terminado de compilar...podemos compilar R -;)
Compiling_R |
---|
cd cd R-2.15.1 ./configure --enable-R-shlib --with-readline=no --with-x=yes make clean make make install |
Como pueden ver...estamos usando el parametro --with-x=yes para indicar que queremos el X11 en nuestra instalacion de R. Como ya compilamos las librerias JPEG y PNG antes...tendran soporte para R por defecto -;)
Desde luego...esto tomara algun tiempo...la compilacion de R es una tarea muy dura -:P Pero finalmente seran capaces de confirmar la instalacion asi...
Checking_installation |
---|
R capabilities() |
Ahora...es hora de instalar Shiny -8)
Installing_Shiny |
---|
install.packages("shiny", dependencies=TRUE) |
Mas facil no se puede -:)
Pero aqui viene otra parte con trampa...necesitamos crear un nuevo usuario...por que? Porque lo mas seguro es que ya teniamos un usuario para ejecutar Rserve...que fue creado antes de que instalaramos X11...asi que vamos a crear uno nuevo -:)
Creating_new_user |
---|
useradd -m login_name passwd login_name |
Para que el X11 funcione perfectamente...necesitamos hacer algo mas...
Get_Magic_Cookie |
---|
xauth list echo $DISPLAY |
Esto nos devolvera una linea que debemos copiar en el notepad...luego...debemos salir y logearnos nuevamente via Putty (con el X11 Forwarding) pero esta vez utilizando nuestro nuevo usario...la segunda linea no dira acerca del display, asi que tambien la copiamos...
Una vez logeados con el nuevo usuario...hagamos esto...
Assign_Magic_Cookie_and_Display |
---|
xauth add //Magic_Cookie_from_Notepad// export DISPLAY=localhost:**.* //number get from the $DISPLAY...like 10.0 or 11.0 |
Ahora...estamos completamente listo para continuar...
Inicien el Rserve asi...
Start_Rserve |
---|
R CMD Rserve --RS-port 6311 --no-save --RS-encoding "utf8" |
Cuando nuestro Rserve esta listo y funcionando...es hora de que SAP HANA haga su aparicion -;) Lo que me gusta realmente de Shiny...es que...en el pasado tenias que crear dos archivos para que funcionara UI.R y Server.R...ahora...Shiny utiliza el framework Bootstrap para que podamos crear aplicaciones Shiny utilizando un solo archivo...o llamarla directamente desde SAP HANA Studio -;)
Calling_Shiny_from_SAP_HANA_Studio.sql |
---|
CREATE TYPE SNVOICE AS TABLE( CARRID CHAR(3), FLDATE CHAR(8), AMOUNT DECIMAL(15,2) ); CREATE TYPE DUMMY AS TABLE( ID INT ); CREATE PROCEDURE GetShiny(IN t_snvoice SNVOICE, OUT t_dummy DUMMY) LANGUAGE RLANG AS BEGIN library("shiny") runApp(list( ui = bootstrapPage( pageWithSidebar( headerPanel("SAP HANA and R using Shiny"), sidebarPanel(selectInput("n","Select Year:",list("2010"="2010","2011"="2011","2012"="2012"))), mainPanel(plotOutput('plot', width="100%", height="800px")) )), server = function(input, output) { output$plot <- renderPlot({ year<-paste("",input$n,sep='') t_snvoice$FLDATE<-format(as.Date(as.character(t_snvoice$FLDATE),"%Y%m%d")) snvoice<-subset(t_snvoice,format(as.Date(t_snvoice$FLDATE),"%Y") == year) snvoice_frame<-data.frame(CARRID=snvoice$CARRID,FLDATE=snvoice$FLDATE,AMOUNT=snvoice$AMOUNT) snvoice_agg<-aggregate(AMOUNT~CARRID,data=snvoice_frame,FUN=sum) pct<-round(snvoice_agg$AMOUNT/sum(snvoice_agg$AMOUNT)*100) labels<-paste(snvoice_agg$CARRID," ",pct,"%",sep="") pie(snvoice_agg$AMOUNT,labels=labels) }) } )) END; CREATE PROCEDURE Call_Shiny() LANGUAGE SQLSCRIPT AS BEGIN snvoice = SELECT CARRID, FLDATE, AMOUNT FROM SFLIGHT.SNVOICE WHERE CURRENCY = 'USD'; CALL GetShiny(:snvoice,DUMMY) WITH OVERVIEW; END; CALL Call_Shiny |
No voy a explicar el codigo, porque deberian de aprender algo de R y Shiny -:P Pero si se preguntan porque tengo una tabla "dummy"...es simplemente porque no puedes crear un Stored Procedure en R Lang que no tenga un parametro OUT...asi que...no hace nada pero ayuda a correr el codigo -:)
Cuando llamamos al script o procedimiento Call_Shiny, el X11 de nuestro servidor va a llamar a Firefox que va a aparecer en nuestro escritorio de la siguiente manera...
Podemos elegir entre 2010, 2011 y 2012...cada vez que escogemos un nuevo valor, el grafico se va a actualizar automaticamente...
Espero que les guste este blog -:) nos vemos en el proximo -;)
Saludos,
Blag.
No comments:
Post a Comment