教程:面向 R 数据科学家的 SQL 开发

适用于:SQL Server 2016 (13.x) 及更高版本

本教程主要面向数据科学家,介绍如何基于 SQL Server 2016 或 SQL Server 2017 中的 R 功能支持,生成用于预测建模的端到端解决方案。 本教程使用 SQL Server 上的 NYCTaxi_sample 数据库。

你将结合使用 R 代码、SQL Server 数据和自定义 SQL 函数生成一个分类模型,该模型指示司机在特定出租车行程中可能获得小费的概率。 你还会将 R 模型部署到 SQL Server,并使用服务器数据基于该模型生成分数。

此示例可以扩展到各类现实问题,例如预测客户对销售活动的反应,或预测各个活动的消费或出席率。 因为该模型可以从存储过程进行调用,所以可以轻松地将它嵌入到应用程序中。

本演练旨在向 R 开发人员介绍 R Services(数据库内),因此会尽可能使用 R。 但这并不意味着 R 一定是每个任务的最佳工具。 在许多情况下, SQL Server 可能会提供更好的性能,特别是对于诸如数据聚合和特征工程这类任务。 这类任务可以特别受益于 SQL Server中的新功能,如内存优化的列存储索引。 我们会尽量在此过程中指出可能的优化。

先决条件

建议在客户端工作站上执行此演练。 你必须能够在同一网络上连接到启用了 SQL Server 和 R 语言的 SQL Server 计算机。 有关工作站配置的说明,请参阅设置用于 R 开发的数据科学客户端

或者,可以在同时具有 SQL Server 和 R 开发环境的计算机上运行此演练,但我们不建议在生产环境中使用此配置。 如果需要将客户端和服务器放在同一台计算机上,请确保安装另一组 Microsoft R 库,以便从“远程”客户端发送 R 脚本。 请勿使用安装在 SQL Server 实例的程序文件中的 R 库。 具体而言,如果使用一台计算机,则需要在这两个位置都使用 RevoScaleR 库,以支持客户端和服务器操作。

  • C:\Program Files\Microsoft\R Client\R_SERVER\library\RevoScaleR
  • C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\library\RevoScaleR

其他 R 包

本演练需要一些未默认作为 R Services(数据库内)的一部分安装的 R 库。 必须将这些包安装到用于开发解决方案的客户端上以及用于部署解决方案的 SQL Server 计算机上。

在客户端工作站上

在 R 环境中,复制以下行并在控制台窗口(Rgui 或 IDE)中执行代码。 某些包还会安装所需的包。 总共安装大约 32 个包。 必须连接 Internet 才能完成此步骤。

# Install required R libraries, if they are not already installed.
if (!('ggmap' %in% rownames(installed.packages()))){install.packages('ggmap')}
if (!('mapproj' %in% rownames(installed.packages()))){install.packages('mapproj')}
if (!('ROCR' %in% rownames(installed.packages()))){install.packages('ROCR')}
if (!('RODBC' %in% rownames(installed.packages()))){install.packages('RODBC')}

在服务器上

在 SQL Server 上安装包时有多个选项可选。 例如,SQL Server 提供 R 包管理功能,让数据库管理员可以创建包存储库,并为用户分配相应权限来安装自己的包。 但是,如果你是计算机上的管理员,则可以使用 R 安装新包,只要安装到正确的库中即可。

注意

在服务器上,即使出现提示,也不要安装到用户库。 如果安装到用户库,SQL Server 实例将找不到或无法运行包。 有关详细信息,请参阅 在 SQL Server 上安装新的 R 包

  1. 在 SQL Server 计算机上,以管理员身份打开 RGui.exe。 如果已使用默认设置安装 SQL Server R Services,则可以在 C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\bin\x64 中找到 Rgui.exe。

  2. 在 R 提示符处,运行下面的 R 命令:

install.packages("ggmap", lib=grep("Program Files", .libPaths(), value=TRUE)[1])
install.packages("mapproj", lib=grep("Program Files", .libPaths(), value=TRUE)[1])
install.packages("ROCR", lib=grep("Program Files", .libPaths(), value=TRUE)[1])
install.packages("RODBC", lib=grep("Program Files", .libPaths(), value=TRUE)[1])

此示例使用 R grep 函数搜索可用路径的矢量,并查找包含“Program Files”的路径。 有关详细信息,请参阅基本包的 RDocumentation

如果认为包已安装,请通过运行 installed.packages() 来查看已安装包的列表。

后续步骤