Inicio rápido: Ejecución de scripts de R sencillos con aprendizaje automático de SQL
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores Azure SQL Managed Instance
En este inicio rápido, ejecutará un conjunto de scripts de R sencillos mediante SQL Server Machine Learning Services o clústeres de macrodatos. Aprenderá a usar el procedimiento almacenado sp_execute_external_script para ejecutar el script en una instancia de SQL Server.
En este inicio rápido, ejecutará un conjunto de scripts de R sencillos mediante SQL Server Machine Learning Services. Aprenderá a usar el procedimiento almacenado sp_execute_external_script para ejecutar el script en una instancia de SQL Server.
En este inicio rápido, ejecutará un conjunto de scripts de R sencillos mediante SQL Server R Services. Aprenderá a usar el procedimiento almacenado sp_execute_external_script para ejecutar el script en una instancia de SQL Server.
En este inicio rápido, ejecutará un conjunto de scripts de R sencillos mediante Machine Learning Services en Azure SQL Managed Instance. Descubrirá cómo usar el procedimiento almacenado sp_execute_external_script para ejecutar el script en la base de datos.
Prerrequisitos
Para ejecutar este inicio rápido, debe cumplir los siguientes requisitos previos.
- SQL Server Machine Learning Services. Para instalar Machine Learning Services, vea la Guía de instalación para Windows o la Guía de instalación para Linux. También puede habilitar Machine Learning Services en clústeres de macrodatos de SQL Server.
- SQL Server Machine Learning Services. Para instalar Machine Learning Services, vea la Guía de instalación para Windows.
- SQL Server 2016 R Services. Para instalar R Services, consulte la Guía de instalación de Windows.
- Machine Learning Services en Azure SQL Managed Instance. Para obtener información, vea Machine Learning Services de Instancia administrada de Azure SQL (versión preliminar).
- Una herramienta para ejecutar consultas de SQL que contengan scripts de R. En este inicio rápido se utiliza Azure Data Studio.
Ejecución de un script sencillo
Para ejecutar un script de R, necesita pasarlo como un argumento al procedimiento almacenado del sistema, sp_execute_external_script. Este procedimiento almacenado del sistema inicia el entorno de ejecución de R, pasa datos a R, administra de forma segura las sesiones de usuario de R y devuelve los resultados al cliente.
En los pasos siguientes, deberá ejecutar este script de R de ejemplo:
a <- 1
b <- 2
c <- a/b
d <- a*b
print(c(c, d))
Abra Azure Data Studio y conéctese al servidor.
Pase todo el script de R al procedimiento almacenado
sp_execute_external_script
.El script se pasa mediante el argumento
@script
. Todo lo que contenga el argumento@script
tiene que ser código de R válido.EXECUTE sp_execute_external_script @language = N'R' , @script = N' a <- 1 b <- 2 c <- a/b d <- a*b print(c(c, d)) '
Se calcula el resultado correcto y la función de R
print
devuelve el resultado a la ventana Mensajes.Necesita tener el siguiente aspecto.
Resultados
STDOUT message(s) from external script: 0.5 2
Ejecución de un script Hola mundo
Un script de ejemplo típico es uno que simplemente muestra la cadena "Hola mundo". Ejecute el siguiente comando:
EXECUTE sp_execute_external_script @language = N'R'
, @script = N'OutputDataSet<-InputDataSet'
, @input_data_1 = N'SELECT 1 AS hello'
WITH RESULT SETS(([Hello World] INT));
GO
Entre las entradas para el procedimiento almacenado sp_execute_external_script
, se incluyen las siguientes:
Entrada | Descripción |
---|---|
@language | define la extensión del lenguaje a la que se llamará (en este caso, R). |
@script | define los comandos que se pasarán al entorno de ejecución de R. Su script de R completo debe estar incluido en este argumento, como texto Unicode. También puede agregar texto a una variable del tipo nvarchar y, después, llamar a la variable. |
@input_data_1 | Los datos devueltos por la consulta se pasan al entorno de ejecución de R, que los devuelve a su vez como una trama de datos. |
WITH RESULT SETS | Cláusula que define el esquema de la tabla de datos devuelta (se agrega "Hola mundo" como el nombre de columna e int para el tipo de datos). |
El comando muestra el texto siguiente:
Hola mundo |
---|
1 |
Uso de entradas y salidas
De forma predeterminada, sp_execute_external_script
acepta un único conjunto de datos como entrada, que se suele proporcionar como una consulta SQL válida. Después, devuelve una única trama de datos de R como salida.
Por ahora, usaremos las variables de entrada y salida predeterminadas de sp_execute_external_script
: InputDataSet y OutputDataSet.
Cree una tabla pequeña con datos de prueba.
CREATE TABLE RTestData (col1 INT NOT NULL) INSERT INTO RTestData VALUES (1); INSERT INTO RTestData VALUES (10); INSERT INTO RTestData VALUES (100); GO
Use la instrucción
SELECT
para consultar la tabla.SELECT * FROM RTestData
Resultados
Ejecute el siguiente script de R. Recupera los datos de la tabla mediante la instrucción
SELECT
, los pasa mediante el entorno de ejecución de R y devuelve los datos como una trama de datos. La cláusulaWITH RESULT SETS
define el esquema de la tabla de datos devuelta para SQL y agrega el nombre de columna NewColName.EXECUTE sp_execute_external_script @language = N'R' , @script = N'OutputDataSet <- InputDataSet;' , @input_data_1 = N'SELECT * FROM RTestData;' WITH RESULT SETS(([NewColName] INT NOT NULL));
Resultados
Ahora, cambie los nombres de las variables de entrada y salida. Los nombres predeterminados de las variables de entrada y salida son InputDataSet y OutputDataSet; este script cambia los nombres a SQL_in y SQL_out:
EXECUTE sp_execute_external_script @language = N'R' , @script = N' SQL_out <- SQL_in;' , @input_data_1 = N' SELECT 12 as Col;' , @input_data_1_name = N'SQL_in' , @output_data_1_name = N'SQL_out' WITH RESULT SETS(([NewColName] INT NOT NULL));
Tenga en cuenta que R distingue mayúsculas de minúsculas. Las variables de entrada y salida usadas en el script de R (SQL_out y SQL_in) tienen que coincidir con los nombres definidos con
@input_data_1_name
y@output_data_1_name
, incluido el uso de mayúsculas.Sugerencia
Solo se puede pasar un conjunto de datos de entrada como parámetro, y solo se puede devolver un conjunto de datos. Sin embargo, puede llamar a otros conjuntos de datos desde el interior del código R y puede devolver salidas de otros tipos además del conjunto de datos. También puede agregar la palabra clave OUTPUT a cualquier parámetro para que se devuelva con los resultados.
También puede generar valores con el script de R sin datos de entrada (
@input_data_1
se establece en blanco).El script siguiente genera el texto "hola" y "mundo".
EXECUTE sp_execute_external_script @language = N'R' , @script = N' mytextvariable <- c("hello", " ", "world"); OutputDataSet <- as.data.frame(mytextvariable); ' , @input_data_1 = N'' WITH RESULT SETS(([Col1] CHAR(20) NOT NULL));
Resultados
@script como entrada" />
Comprobación de la versión de R
Si quiere ver qué versión de R está instalada, ejecute el script siguiente.
EXECUTE sp_execute_external_script @language = N'R'
, @script = N'print(version)';
GO
La función print
de R devuelve la versión en la ventana Mensajes. En la salida de ejemplo siguiente, puede ver que, en este caso, la versión de R instalada es 3.4.4.
Resultados
STDOUT message(s) from external script:
_
platform x86_64-w64-mingw32
arch x86_64
os mingw32
system x86_64, mingw32
status
major 3
minor 4.4
year 2018
month 03
day 15
svn rev 74408
language R
version.string R version 3.4.4 (2018-03-15)
nickname Someone to Lean On
Lista de paquetes de R
Microsoft proporciona varios paquetes de R preinstalados con Machine Learning Services.
Microsoft proporciona varios paquetes de R preinstalados con R Services.
Para ver una lista de los paquetes de R instalados (además de la versión, las dependencias, la licencia y la información de la ruta de la biblioteca), ejecute el script siguiente.
EXEC sp_execute_external_script @language = N'R'
, @script = N'
OutputDataSet <- data.frame(installed.packages()[,c("Package", "Version", "Depends", "License", "LibPath")]);'
WITH result sets((
Package NVARCHAR(255)
, Version NVARCHAR(100)
, Depends NVARCHAR(4000)
, License NVARCHAR(1000)
, LibPath NVARCHAR(2000)
));
El resultado es installed.packages()
de R y se devuelve como un conjunto de resultados.
Resultados
Pasos siguientes
Para obtener información sobre cómo usar estructuras de datos al usar R en aprendizaje automático de SQL, siga este inicio rápido: