R 编程语言最早出现于 1993 年,而在 2000 年,它的第一个符合产品质量的版本 R-1.0 发布了。自那之后,R 就成为了统计分析方面的业界标准,围绕着这门语言出现了大量的图形界面工具,以及可用于各种 IDE 及文本编辑器的包。
Revolution Analytics 是一家成立了 9 年的公司,他们为 R 语言提供商业级的支持服务。但就在最近,微软收购了这家公司,作为他们向大数据及机器学习领域迈出的第一步。这次收购的结果是在即将问世的 SQL Server 2016 中将提供对 R 语言的支持。
SQL Server R Services 的主要优点在于数据的本地化。通过在数据库中直接运行 R,免除了将数据从数据库服务器搬到 R 服务器的过程中通常会产生的性能开销。它的另一个优点在于能够将整个操作封装为一个存储过程,因此无需通过某个外部应用服务器对操作过程进行控制。
调用这一过程的方法是使用 sp_execute_external_script ,这个存储过程允许你通过标准的查询将数据从 SQL Server 传递至 R 服务。而在 R 脚本执行完毕之后,可以返回一个 R 变量,通常来说是一个数据帧。
在 sp_execute_external_script 中有一个令人感兴趣的特性,即 @language 这个参数。虽然它目前仅限于使用 R 语言,但从文档上看,未来似乎可以通过一种插件模型以支持其他脚本语言。
可使用任意一种通过 xxx 注册的受支持语言。language 的类型是 sysname。
在进行复杂的数据处理时,R 语言比起常规的 SQL 语句具有许多优势。Casimir Saternos 在他的文章“超越 SQL:使用 R 语言进行数据处理”中提出了一些示例,例如如何简化表的 PIVOT 和 UNPIVOT 操作。Casimir 在文章的总结中这样说道:
从定义上来说,SQL 是一种查询语言。它的长处在于从数据库中获取数据,在许多场景中,这是唯一一种从数据库中取出数据的方法,因而显得至关重要。
但是,在进行数据转换时,SQL 又有可能变得非常笨重。SQL 本身是一种非常灵活的语言,因此也支持以大量不同的方式进行数据的转换,但这些转换往往需要使用冗长的、晦涩的、难以维护的 SQL 语句。而通过 R 语言所带的大量的包,可以以一种简洁的、清晰的、简单的方法执行相同的操作。付出一定时间去学习这些包是完全值得的,这让我们能够充分利用 SQL 与 R 语言包中最好的方面,通过一系列易于理解与掌握的步骤实现数据的分析。
SQL Server 2016 当前的最新版本是第 3 个社区技术预览版。
查看英文原文: R for SQL Server 2016
评论