Skip to Content

原作者:Alvaro Tejada Galindo

几天前,我开始思考亚马逊网页服务中的SAP HANA和R…据我所知,使用此类的结合可以在服务器上生成图形,而不用在HANA studio中进行…所以我对自己说,是否可以使用一条Linux的命令在email中发送在服务器上生成的图形?… 我要尝试一下…

我花了一些天想在我的SUSE中装X11…直到我发现这个服务器并不支持X11…这很令人沮丧但是没有人能阻止我实现这想法…我想过使用PDF构造器,因为它不需要X11…但是…进过一些研究…我发现Cairo library可以支持不使用用X11去创建图形…

如果你没有在亚马逊网页服务中安装过SAP HANA和R,看这篇文章When SAP HANA met R – First kiss.

接下来让我们来看一看我们需要做什么

安装 Cairo

zypper install cairo-devel

在R上安装Cairo library

>R

>install.packages(“Cairo”)

运行Rserver 服务器

R CMD Rserve –RS-port 6311 –no-save –RS-encoding “utf8”

使用那个启动Rserver的用户区创建一个文件夹并修改它的权限…

>chmod 777 Blag

现在我们去HANA studio

我们首先创建一个表TICKETS_BY_YEAR_MONTH.

HANA_R_Graphics_001.png

然后我们创建一些SQL和R命令…

Create_and_Send_Graphics

drop procedure GetTicketsByYearMonth;

drop procedure Generate_Graphic;

drop procedure Get_Tickets;

 

CREATE PROCEDURE GetTicketsByYearMonth(IN var_year NVARCHAR(4),IN var_month NVARCHAR(2))

LANGUAGE SQLSCRIPT AS BEGIN

select count(bookid), carrid from sflight.snvoice

where year(fldate) = VAR_YEAR

  and month(fldate) = VAR_MONTH

group by carrid

into TICKETS_BY_YEAR_MONTH;

END;

 

CREATE PROCEDURE Generate_Graphic(IN tickets_year TICKETS_BY_YEAR_MONTH, OUT result TICKETS_BY_YEAR_MONTH)

LANGUAGE RLANG AS

BEGIN

setwd(“/Blag”)

library(“Cairo”)

tickets=as.integer(tickets_year$TICKETS)

carriers=as.character(tickets_year$CARRIERS)

Cairo(600,600,file=”Tickets.png”,type=”png”,bg=”white”)

barplot(tickets,names.arg=carriers,main=”Tickets for December 2011″)

dev.off()

command<-“uuencode Tickets.png Tickets.png | mail -s ‘Tickets December Report’ atejada@gmail.com

system(command,intern=TRUE)

result<-data.frame(TICKETS=tickets,CARRIERS=carriers)

END;

CREATE PROCEDURE Get_Tickets()

LANGUAGE SQLSCRIPT AS

BEGIN

CALL GetTicketsByYearMonth(‘2011′,’12’);

Tickets = SELECT * FROM TICKETS_BY_YEAR_MONTH;

CALL Generate_Graphic(:Tickets,TICKETS_BY_YEAR_MONTH);

END;

 

CALL Get_Tickets();

然后我们执行上面那段脚本,脚本所做的事是:

我们获得每年每月每架飞机票数的总和,我们把这个数据存到表中

我们读取这个数据创建出一个图表然后把它保存为an.png

我们把这个图表通过Email发送给自己

HANA_R_Graphics_003.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