LAB 02 – SQL Server Machine Learning: sp_execute_external_script

La integración de los servicios de Machine Learning con SQL Server se hacen por medio del store procedure sp_execute_external_script el cual permite la ejecución de código R o Python.

Este SP tiene 3 tipos de salidas.

  • Resultset
  • Model
  • Plot

Ejemplo 1: Hola Mundo

Este primer ejemplo ejecuta un codigo con la instruccion print.

Para poder ejecutar el código usaremos el SQL Server management studio conectándonos a la instancia de SQL Server.



EXEC sp_execute_external_script
  @language = N'R',
  @script = N'print(''Hola Mundo'')'
GO
EXEC sp_execute_external_script
  @language = N'Python',
  @script = N'print(''Hola Mundo'')'
GO


Ejemplo 2: Usar imput_data_1 con una consulta TSQL

En este ejemplo vamos a usar los parámetros de entrada que nos ofrece el store procedure para poderle pasar una consulta TSQL.

-- usando R
EXECUTE sp_execute_external_script   
        @language = N'R', 
        @script = N' OutputDataSet <- InputDataSet;',    
        @input_data_1 = N' SELECT name FROM sys.databases order by 1;',
        @input_data_1_name = N''  
WITH RESULT SETS (([NombreBase] nvarchar(max) NOT NULL)); 

EXECUTE sp_execute_external_script   
        @language = N'R', 
        @script = N' OutputDataSet <- Datos;',    
        @input_data_1 = N' SELECT name FROM sys.databases order by 1;',
        @input_data_1_name = N'Datos'  
WITH RESULT SETS (([NombreBase] nvarchar(max) NOT NULL));
--- con python
EXECUTE sp_execute_external_script  
     @language =N'Python',
     @script=N'OutputDataSet=InputDataSet',
     @input_data_1 = N'SELECT name FROM sys.databases order by 1;'
WITH RESULT SETS (([NombreBase] nvarchar(max) NOT NULL))

EXECUTE sp_execute_external_script  
     @language =N'Python',
     @script=N'OutputDataSet=Datos',
     @input_data_1 = N'SELECT name FROM sys.databases order by 1;',
     @input_data_1_name = N'Datos'  
WITH RESULT SETS (([NombreBase] nvarchar(max) NOT NULL))

Ejemplo 3: Usar el dataset Iris de R

Este ejemplo muestra un código R el cual se usara el famoso dataset Iris y su resultado se retorna como dataset de SQL Server

EXECUTE sp_execute_external_script
   @language = N'R',
   @script = N'OutputDataSet <- head(iris)',
   @input_data_1 = N''
WITH RESULT SETS (([Sepal.Length] float, [Sepal.Width] float,
                   [Petal.Length] float, [Petal.Width] float,
                   [Species] varchar(25)));