SQL Server 2016 引入了 R Services,这是一个重要的功能增强,允许用户在数据库内直接执行 R 代码,从而实现数据科学与数据库管理的紧密集成。在本系列的第二部分,我们将深入探讨如何在 SQL Server 中执行 R 脚本以及相关的关键概念。 确保你已经安装了 SQL Server 2016 并完成了 R 相关组件的配置。安装完成后,你需要执行特定的命令来启用外部脚本执行功能。在 SQL Server Management Studio (SSMS) 中,通过运行 `EXEC sp_configure 'external scripts enabled', 1` 和 `RECONFIGURE WITH OVERRIDE` 命令,可以开启 R 脚本的支持。 `sp_execute_external_script` 是 SQL Server 2016 新引入的一个核心系统存储过程,它使得在 SQL Server 内部运行 R 脚本成为可能。这个存储过程接受多个参数: 1. `@language`:指定使用的外部脚本语言,如 R。 2. `@script`:要执行的外部脚本内容,可以是字符串常量或变量,数据类型为 `nvarchar(max)`。 3. `@input_data_1`:作为输入传递给 R 脚本的 T-SQL 查询,返回一个结果集,数据类型同样为 `nvarchar(max)`。 4. `@input_data_1_name`:可选参数,输入数据在 R 脚本中的变量名,默认为 `inputDataSet`。 5. `@output_data_1_name`:可选参数,指定 R 脚本中包含输出数据的变量名,默认为 `outputDataSet`。 需要注意的是,不是所有 SQL Server 数据类型都与 R 兼容。例如,游标、时间戳、datetime2、datetimeoffset、time、sqlvariant、text、image、xml、hierarchyid、geometry、geography、CLR 类型和所有 Unicode 类型都不能直接用于 R 输入查询。你需要将这些不兼容的类型转换为 R 支持的数据类型。同样,R 的某些浮点值(+Inf、-Inf 和 NaN)在 SQL Server 中也可能导致错误,应转换为 NULL。 让我们看一个实际的例子,假设我们有一个名为 AdventureWorksDW 的 SQL Server 示例数据库,其中包含一个名为 `customers` 的表,我们可以计算客户年龄的分位数。下面是一个简单的 R 脚本应用实例: ```sql DECLARE @sql NVARCHAR(MAX) = N' SELECT * INTO #temp FROM AdventureWorksDW.dbo.DimCustomer WHERE CustomerKey > 0; WITH ROutput AS ( EXEC sp_execute_external_script @language = N''R'' , @script = N''library(dplyr); data <- InputDataSet; quantiles <- quantile(data$BirthDate, c(0.25, 0.5, 0.75)); OutputDataSet <- data.frame(Quantile25 = quantiles[1], Quantile50 = quantiles[2], Quantile75 = quantiles[3])'' , @input_data_1 = N''SELECT BirthDate FROM #temp'' , @input_data_1_name = N''InputDataSet'' , @output_data_1_name = N''OutputDataSet'' ) SELECT * FROM ROutput'; EXEC (@sql); ``` 这个例子首先创建了一个临时表 `#temp` 来存储 `customers` 表的一部分数据,然后使用 `sp_execute_external_script` 执行 R 脚本,计算出生日期的分位数。存储过程返回 R 脚本计算的结果。 在开发过程中,理解 R 与 SQL Server 之间的数据类型转换规则、使用 `sp_execute_external_script` 存储过程以及编写合适的 R 脚本,对于高效地在数据库环境中进行数据分析至关重要。此外,还要注意性能优化,避免频繁地在数据库和 R 之间传输大量数据,以及充分利用 SQL Server 的并行处理能力。
- 粉丝: 40
- 资源: 1万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 技术资料分享Z-Stack-API-Chinese非常好的技术资料.zip
- 技术资料分享Z-Stack 开发指南非常好的技术资料.zip
- 技术资料分享Zigbee协议栈中文说明免费非常好的技术资料.zip
- 技术资料分享Zigbee协议栈及应用实现非常好的技术资料.zip
- 技术资料分享ZigBee协议栈的研究与实现非常好的技术资料.zip
- 技术资料分享ZigBee协议栈的分析与设计非常好的技术资料.zip
- 技术资料分享Zigbee协议栈OSAL层API函数(译)非常好的技术资料.zip
- 技术资料分享zigbee无信标网络设备的加入非常好的技术资料.zip
- 技术资料分享ZigBee问答之“KVP”、“MSG”非常好的技术资料.zip
- 技术资料分享ZigBee网络管理实验例程手册非常好的技术资料.zip