提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:黄竹雯|2019-01-11 11:52:52.000|阅读 358 次
概述:本文主要介绍面向SQL开发人员的数据库内存分析之如何调用R函数浏览和可视化数据
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
Microsoft SQL Server是一款强大的关系型数据库管理系统,可以将原始数据转化为可发送到任何设备的有意义报告。SQL Server在TPC-E OLTP工作负载、TPC-H数据仓库工作负载和实际应用程序性能基准方面都有很好的表现。
本文将通过查看示例数据,利用RevoScaleR和R基础Hist函数(这些R函数已经包含在R数据库内)中的rxHistogram生成一些平面图,来介绍如何在Microsoft SQL Server中使用R语言,以及演示如何调用R函数从Transact-SQL的存储过程中保存应用程序文件的结果。
开发数据科学解决方案通常包括深入的数据探索和数据可视化。在原始的公共数据集中,出租车标识符和行程记录在单独的文件中提供。不过为了使示例数据易于使用,两个原始数据集和medallion列、hack_license以及pickup_datetime进行了连接。所形成的低采样率数据集有1703957行和23列。
派生列名称 | 规则 |
---|---|
tipped | 如果tip_amount > 0,则tipped = 1;否则tipped = 0 |
tip_class | class 0:tip_amount = $0 |
class 1:tip_amount > $0 且 tip_amount <= $5 | |
class 2:tip_amount > $5 且 tip_amount <= $10 | |
class 3:tip_amount > $10 且 tip_amount <= $20 | |
class 4:tip_amount > $20 |
使用RevoScaleR提供的增强型R函数中的rxHistogram来创建绘图,这一步绘制的直方图是基于Transact-SQL查询,可以将此函数包装在存储过程中。
在SQL Server Management Studio中,右键单击NYCTaxi_Sample数据库并选择New Query。粘贴以下脚本来创建一个存储的过程,绘制直方图。
CREATE PROCEDURE [dbo].[RxPlotHistogram] AS BEGIN SET NOCOUNT ON; DECLARE @query nvarchar(max) = N'SELECT tipped FROM nyctaxi_sample' EXECUTE sp_execute_external_script @language = N'R', @script = N' image_file = tempfile(); jpeg(filename = image_file); #Plot histogram rxHistogram(~tipped, data=InputDataSet, col=''lightgreen'', title = ''Tip Histogram'', xlab =''Tipped or not'', ylab =''Counts''); dev.off(); OutputDataSet <- data.frame(data=readBin(file(image_file, "rb"), what=raw(), n=1e6)); ', @input_data_1 = @query WITH RESULT SETS ((plot varbinary(max))); END GO
此脚本中的关键点包括:
该存储过程返回的图像是一个varbinary数据流,显然无法直接查看该图像。但是可以使用bcp实用工具获取此varbinary数据,并将其保存为客户端计算机上的图像文件。
EXEC [dbo].[RxPlotHistogram]
bcp "exec RxPlotHistogram" queryout "plot.jpg" -S <SQL Server instance name> -d NYCTaxi_Sample -U <user name> -P <password> -T
Enter the file storage type of field plot [varbinary(max)]: Enter prefix-length of field plot [8]: 0 Enter length of field plot [0]: Enter field terminator [none]: Do you want to save this format information in a file? [Y/n] Host filename [bcp.fmt]:结果
Starting copy... 1 rows copied. Network packet size (bytes): 4096 Clock Time (ms.) Total : 3922 Average : (0.25 rows per sec.)
通常情况下,数据科学家生成多个可视化数据从不同的角度来了解数据。在此示例中,您将创建名为RPlotHist的存储过程用于编写直方图、散点图和其他R图形到JPG和PDF格式。此存储过程使用Hist函数来创建直方图,为例如JPG、PDF和PNG等常用格式导出二进制数据。
在SQL Server Management Studio中,右键单击NYCTaxi_Sample数据库并选择New Query。粘贴以下脚本来创建一个存储的过程,绘制直方图。此示例中名为RPlotHist。
CREATE PROCEDURE [dbo].[RPlotHist] AS BEGIN SET NOCOUNT ON; DECLARE @query nvarchar(max) = N'SELECT cast(tipped as int) as tipped, tip_amount, fare_amount FROM [dbo].[nyctaxi_sample]' EXECUTE sp_execute_external_script @language = N'R', @script = N' # Set output directory for files and check for existing files with same names mainDir <- ''C:\\temp\\plots'' dir.create(mainDir, recursive = TRUE, showWarnings = FALSE) setwd(mainDir); print("Creating output plot files:", quote=FALSE) # Open a jpeg file and output histogram of tipped variable in that file. dest_filename = tempfile(pattern = ''rHistogram_Tipped_'', tmpdir = mainDir) dest_filename = paste(dest_filename, ''.jpg'',sep="") print(dest_filename, quote=FALSE); jpeg(filename=dest_filename); hist(InputDataSet$tipped, col = ''lightgreen'', xlab=''Tipped'', ylab = ''Counts'', main = ''Histogram, Tipped''); dev.off(); # Open a pdf file and output histograms of tip amount and fare amount. # Outputs two plots in one row dest_filename = tempfile(pattern = ''rHistograms_Tip_and_Fare_Amount_'', tmpdir = mainDir) dest_filename = paste(dest_filename, ''.pdf'',sep="") print(dest_filename, quote=FALSE); pdf(file=dest_filename, height=4, width=7); par(mfrow=c(1,2)); hist(InputDataSet$tip_amount, col = ''lightgreen'', xlab=''Tip amount ($)'', ylab = ''Counts'', main = ''Histogram, Tip amount'', xlim = c(0,40), 100); hist(InputDataSet$fare_amount, col = ''lightgreen'', xlab=''Fare amount ($)'', ylab = ''Counts'', main = ''Histogram, Fare amount'', xlim = c(0,100), 100); dev.off(); # Open a pdf file and output an xyplot of tip amount vs. fare amount using lattice; # Only 10,000 sampled observations are plotted here, otherwise file is large. dest_filename = tempfile(pattern = ''rXYPlots_Tip_vs_Fare_Amount_'', tmpdir = mainDir) dest_filename = paste(dest_filename, ''.pdf'',sep="") print(dest_filename, quote=FALSE); pdf(file=dest_filename, height=4, width=4); plot(tip_amount ~ fare_amount, data = InputDataSet[sample(nrow(InputDataSet), 10000), ], ylim = c(0,50), xlim = c(0,150), cex=.5, pch=19, col=''darkgreen'', main = ''Tip amount by Fare amount'', xlab=''Fare Amount ($)'', ylab = ''Tip Amount ($)''); dev.off();', @input_data_1 = @query END
此存储过程内SELECT查询的输出存储在默认的R数据帧InputDataSet中,然后,可以调用各种R绘图函数来生成实际的图形文件。
所有文件将都保存到本地文件夹 C:\temp\Plots。此目标文件夹作为存储过程的一部分提供给R脚本的参数定义。可以通过更改变量mainDir的值更改此目标文件夹。
若要将文件输出到另一个文件夹,请更改存储过程中嵌入的R脚本中mainDir的变量值。并且还可以修改脚本以输出不同格式等等。
运行以下语句将二进制绘图数据导出到JPEG和PDF文件格式。
EXEC RPlotHist
结果
STDOUT message(s) from external script: [1] Creating output plot files:[1] C:\temp\plots\rHistogram_Tipped_18887f6265d4.jpg[1] C:\temp\plots\rHistograms_Tip_and_Fare_Amount_1888441e542c.pdf[1] C:\temp\plots\rXYPlots_Tip_vs_Fare_Amount_18887c9d517b.pdf
文件名称中的数字是随机生成,以确保在尝试写入到现有文件时,不会发生错误。
若要查看该绘图,请打开目标文件夹并查看创建的存储过程中R代码的文件。
更多SQL Server实用教程敬请关注!
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@capbkgr.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢