原作者:alvaro.tejadagalindo3
几天前,我开始思考亚马逊网页服务中的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.
然后我们创建一些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发送给自己
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
38 | |
25 | |
17 | |
13 | |
7 | |
7 | |
7 | |
7 | |
6 | |
6 |