简介
您知道可以在 T-SQL 语句中编写 R 和 Python 代码吗?SQL Server 中的机器学习服务 省去了数据搬移的需要。无需通过网络传输大量敏感数据,或因使用示例 csv 文件而牺牲精度,您即可在数据库内执行 R/Python 代码。利用 SQL 存储过程轻松部署 R/Python 代码,使其可用于您的 ETL 流程或任何应用程序。在数据库中训练并存储机器学习模型,把智能带到数据所在之处。
您可以安装并运行最新的开源 R/Python 包,在 SQL Server 中基于海量数据构建深度学习和 AI 应用。微软的 前沿 高性能算法也可通过 RevoScaleR 和 RevoScalePy API 获得。结合开源领域的最新创新,您可以为应用带来无与伦比的选择、性能与可扩展性。
如果您迫不及待想体验 SQL Server 机器学习服务,请查看下方的动手教程。若您的 SQL Server 尚未安装机器学习服务,请先按照此处发布的入门教程进行操作:https://blogs.msdn.microsoft.com/mlserver/2018/05/18/getting-started-with-machine-learning-services-in-sql-server/
操作教程
您将学到什么
本教程将介绍如何在 T-SQL 语句中执行 R 和 Python 的基础知识。完成后,您将了解:
如何在 T-SQL 语句中嵌入 R 和 Python 脚本。
如何使用基本参数为 R/Python 脚本指定输入与输出数据。
在 SQL 与 Python/R 之间传递数据所使用的数据类型。
安装前提
如果您的 SQL Server 尚未安装机器学习服务,请先阅读此入门教程或观看这些视频完成设置:https://aka.ms/InstallMLServices https://aka.ms/EnableMLServices
视频配套
如果您喜欢通过视频学习,本教程也可在 YouTube 上观看:@https://aka.ms/ExecuteMLServices
基础
打开 SQL Server Management Studio 并连接到您的服务器。新建查询并粘贴以下基础示例:(示例使用 Python,但您也可以用 R 完成同样的操作)
EXEC sp_execute_external_script @language = N 'Python' ,
@script = N 'print(3+4)'
技术支持
Sp_execute_external_script 是启用 SQL Server 中 R 和 Python 执行的特殊系统存储过程。language 参数允许在 Python 与 R 之间选择。script 参数用于粘贴 R 或 Python 代码。若未看到输出为 7,请返回并查看本文 中的设置步骤。
参数介绍
在讨论完基础示例后,让我们开始加入更多要素:
EXEC sp_execute_external_script @language = N 'Python' ,
@script = N '
OutputDataSet = InputDataSet;
',
@input_data_1 = N 'SELECT 1 AS Col1' ;
技术支持
机器学习服务通过接受任意 SQL 查询的输入数据参数,实现了 SQL 与 R/Python 之间更自然的通信。该输入参数名称为 input_data_1。
您可以在 Python 代码中看到,预定义了在 Python 与 SQL 之间传递数据的默认变量。默认变量名为 OutputDataSet 和 InputDataSet。您也可以像下面的示例一样更改这些默认名称:
EXEC sp_execute_external_script @language = N 'Python' ,
@script = N '
MyOutput = MyInput;
',
@input_data_1_name = N 'MyInput' ,
@input_data_1 = N 'SELECT 1 AS foo' ,
@output_data_1_name = N 'MyOutput' ;
技术支持
在执行这些示例时,您可能注意到每个示例都会返回带有 (No column name) 的结果?您可以在语句末尾添加 WITH RESULT SETS 子句来为返回的列指定名称,它是一个以逗号分隔的列及其数据类型列表。
EXEC sp_execute_external_script @language = N 'Python' ,
@script= N '
MyOutput = MyInput;
',
@input_data_1_name = N 'MyInput' ,
@input_data_1 = N 'SELECT 1 AS foo,2 AS bar' ,
@output_data_1_name = N 'MyOutput'
WITH RESULT SETS ( ( MyColName int, MyColName2 int) ) ;
技术支持
好,接下来多谈一点 SQL 与 Python 之间使用的输入/输出数据类型。您的输入 SQL SELECT 语句会依赖 Python Pandas 包 将“DataFrame”传递给 Python。从 Python 返回 SQL 的输出也需要是一个 Pandas DataFrame 对象。如果您需要将标量值转换为 DataFrame,下面是一个示例:
EXEC sp_execute_external_script @language = N 'Python' ,
@script= N '
import pandas as pd
c = 1 / 2
d = 1 * 2
s = pd. Series ( [ c, d] )
df = pd. DataFrame ( s)
OutputDataSet = df
'
技术支持
变量 c 和 d 都是标量值,您可以将它们加入到 pandas 的 Series,然后再将其转换为 pandas DataFrame。下面这个示例稍微复杂一些,更多细节与示例请参阅 Python pandas 包文档 :
EXEC sp_execute_external_script @language = N 'Python' ,
@script= N '
import pandas as pd
s = { "col1" : [ 1 , 2 ] , "col2" : [ 3 , 4 ] }
df = pd. DataFrame ( s)
OutputDataSet = df
'
技术支持
现在,您已经掌握了在 T-SQL 中执行 R 和 Python 的基础!调用 EXEC sp_execute_external_script、复制/粘贴您的 R 或 Python 代码,以及复制/粘贴您的 SQL 输入查询都非常简单。也许您需要进行某些在 R/Python 中很容易、但用 SQL 编写却过于复杂的数据转换或提取;也许您要在无法通过网络传输的海量数据上训练深度神经网络;也许您想在进入 OLTP 系统的新数据上自动进行评分/预测。用例非常广泛,而您现在已经准备好借助 SQL Server 的机器学习服务来提升安全性、性能与可扩展性。
延伸阅读
您知道吗?您也可以在自己喜欢的 IDE(如 RStudio 和 Jupyter Notebooks)中编写 R 与 Python 代码,然后将该代码的执行远程发送到 SQL Server。请查看以下文档链接了解更多:文档:https://aka.ms/R-RemoteSQLExecution 文档:https://aka.ms/R-RemoteSQLExecution Github Jupyter Notebook 示例:https://aka.ms/RemoteExecJupyter
如果您想进一步学习 SQL,欢迎查看我们的数据科学 SQL 入门 课程以及SQL 学习指南 。
简介
您知道可以在 T-SQL 语句中编写 R 和 Python 代码吗?SQL Server 中的机器学习服务省去了数据搬移的需要。无需通过网络传输大量敏感数据,或因使用示例 csv 文件而牺牲精度,您即可在数据库内执行 R/Python 代码。利用 SQL 存储过程轻松部署 R/Python 代码,使其可用于您的 ETL 流程或任何应用程序。在数据库中训练并存储机器学习模型,把智能带到数据所在之处。
您可以安装并运行最新的开源 R/Python 包,在 SQL Server 中基于海量数据构建深度学习和 AI 应用。微软的 前沿高性能算法也可通过 RevoScaleR 和 RevoScalePy API 获得。结合开源领域的最新创新,您可以为应用带来无与伦比的选择、性能与可扩展性。
如果您迫不及待想体验 SQL Server 机器学习服务,请查看下方的动手教程。若您的 SQL Server 尚未安装机器学习服务,请先按照此处发布的入门教程进行操作:https://blogs.msdn.microsoft.com/mlserver/2018/05/18/getting-started-with-machine-learning-services-in-sql-server/
操作教程
您将学到什么
本教程将介绍如何在 T-SQL 语句中执行 R 和 Python 的基础知识。完成后,您将了解:
安装前提
如果您的 SQL Server 尚未安装机器学习服务,请先阅读此入门教程或观看这些视频完成设置:https://aka.ms/InstallMLServices https://aka.ms/EnableMLServices
视频配套
如果您喜欢通过视频学习,本教程也可在 YouTube 上观看:@https://aka.ms/ExecuteMLServices
基础
打开 SQL Server Management Studio 并连接到您的服务器。新建查询并粘贴以下基础示例:(示例使用 Python,但您也可以用 R 完成同样的操作)
Sp_execute_external_script是启用 SQL Server 中 R 和 Python 执行的特殊系统存储过程。language参数允许在 Python 与 R 之间选择。script参数用于粘贴 R 或 Python 代码。若未看到输出为 7,请返回并查看本文中的设置步骤。参数介绍
在讨论完基础示例后,让我们开始加入更多要素:
机器学习服务通过接受任意 SQL 查询的输入数据参数,实现了 SQL 与 R/Python 之间更自然的通信。该输入参数名称为
input_data_1。您可以在 Python 代码中看到,预定义了在 Python 与 SQL 之间传递数据的默认变量。默认变量名为
OutputDataSet和InputDataSet。您也可以像下面的示例一样更改这些默认名称:在执行这些示例时,您可能注意到每个示例都会返回带有
(No column name)的结果?您可以在语句末尾添加WITH RESULT SETS子句来为返回的列指定名称,它是一个以逗号分隔的列及其数据类型列表。输入/输出数据类型
好,接下来多谈一点 SQL 与 Python 之间使用的输入/输出数据类型。您的输入
SQL SELECT语句会依赖 Python Pandas 包将“DataFrame”传递给 Python。从 Python 返回 SQL 的输出也需要是一个 Pandas DataFrame 对象。如果您需要将标量值转换为 DataFrame,下面是一个示例:变量
c和d都是标量值,您可以将它们加入到 pandas 的 Series,然后再将其转换为 pandas DataFrame。下面这个示例稍微复杂一些,更多细节与示例请参阅 Python pandas 包文档:现在,您已经掌握了在 T-SQL 中执行 R 和 Python 的基础!调用
EXEC sp_execute_external_script、复制/粘贴您的 R 或 Python 代码,以及复制/粘贴您的 SQL 输入查询都非常简单。也许您需要进行某些在 R/Python 中很容易、但用 SQL 编写却过于复杂的数据转换或提取;也许您要在无法通过网络传输的海量数据上训练深度神经网络;也许您想在进入 OLTP 系统的新数据上自动进行评分/预测。用例非常广泛,而您现在已经准备好借助 SQL Server 的机器学习服务来提升安全性、性能与可扩展性。延伸阅读
您知道吗?您也可以在自己喜欢的 IDE(如 RStudio 和 Jupyter Notebooks)中编写 R 与 Python 代码,然后将该代码的执行远程发送到 SQL Server。请查看以下文档链接了解更多:文档:https://aka.ms/R-RemoteSQLExecution 文档:https://aka.ms/R-RemoteSQLExecution Github Jupyter Notebook 示例:https://aka.ms/RemoteExecJupyter
如果您想进一步学习 SQL,欢迎查看我们的数据科学 SQL 入门课程以及SQL 学习指南。