Crear flujos de trabajo de SSIS y SSRS con R en SQL Server

  • 08/28/2020
  • 5 minutos de lectura
    • d
    • M
    • a
    • D
    • c
    • +2

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores

Este artículo explica cómo utilizar scripts R y Python incrustados utilizando las capacidades de lenguaje y ciencia de datos de los servicios de aprendizaje automático de SQL Server con dos características importantes de SQL Server: SQL Server Integration Services (SSIS) y SQL Server Reporting Services SSR. Las bibliotecas R y Python en SQL Server proporcionan funciones estadísticas y predictivas. Las SSI y las SSR proporcionan transformaciones y visualizaciones de ETL coordinadas, respectivamente. Este artículo explica cómo combinar todas estas características en este patrón de flujo de trabajo:

  • Crear un procedimiento almacenado que contenga el ejecutable R o Python
  • Ejecutar el procedimiento almacenado desde SSI o SSR

Los ejemplos de este artículo son principalmente sobre R y SSIS, pero los conceptos y pasos se aplican igualmente a Python. La segunda sección proporciona orientación y enlaces para visualizaciones de SSRS.

Use SSIS para la automatización

Los flujos de trabajo de ciencia de datos son altamente iterativos e implican una gran transformación de datos, que incluye escalado, agregaciones, cálculo de probabilidades, y cambio de nombre y fusión de atributos. Los científicos de datos están acostumbrados a realizar muchas de estas tareas en R, Python u otro lenguaje; sin embargo, la ejecución de estos flujos de trabajo en datos empresariales requiere una integración perfecta con herramientas y procesos ETL.

Dado que R Services (En la base de datos) le permite ejecutar operaciones complejas en R a través de procedimientos Transact-SQL y almacenados, puede integrar tareas de ciencia de datos con procesos ETL existentes. En lugar de realizar una cadena de tareas que consumen mucha memoria, la preparación de datos se puede optimizar utilizando las herramientas más eficientes, incluidos los Servicios de integración y Transact-SQL.

Aquí hay algunas ideas sobre cómo puede automatizar sus canalizaciones de modelado y procesamiento de datos mediante Servicios de integración:

  • Extraer datos de fuentes locales o en la nube para crear datos de entrenamiento
  • Compilar y ejecutar modelos R o Python como parte de un flujo de trabajo de integración de datos
  • Reciclar modelos de forma regular (programada)
  • Cargar resultados de scripts R o Python a otros destinos como Excel, Power BI, Oracle y Teradata, por nombrar algunos
  • Usar tareas de SSIS para crear características de datos en la base de datos SQL
  • Usar la ramificación condicional para cambiar el contexto de cómputo para trabajos de R y Python

Ejemplo de SSIS

automatice tareas utilizando SSIS. Cree procedimientos almacenados con R incrustado mediante SQL Server Management Studio y, a continuación, ejecute esos procedimientos almacenados desde Ejecutar tareas T-SQL en un paquete SSIS.

Para pasar por este ejemplo, debe estar familiarizado con Management Studio, SSIS, Diseñador de SSIS, diseño de paquetes y T-SQL. El paquete SSIS utiliza tres tareas de ejecución de T-SQL que insertan datos de entrenamiento en una tabla, modelan los datos y califican los datos para obtener resultados de predicción.

Cargar datos de entrenamiento

Ejecute el siguiente script en SQL Server Management Studio para crear una tabla para almacenar los datos. Debe crear y utilizar una base de datos de pruebas para este ejercicio.

Cree un procedimiento almacenado que cargue los datos de entrenamiento en el marco de datos. En este ejemplo se utiliza el conjunto de datos de Iris integrado.

En el Diseñador de SSIS, cree una tarea de ejecución SQL que ejecute el procedimiento almacenado que acaba de definir. El script para SQLStatement elimina los datos existentes, especifica qué datos insertar y, a continuación, llama al procedimiento almacenado para proporcionar los datos.

Generar un modelo

Ejecute el siguiente script en SQL Server Management Studio para crear una tabla que almacene un modelo.

Cree un procedimiento almacenado que genere un modelo lineal utilizando rxLinMod. Las bibliotecas RevoScaleR y revoscalepy están disponibles automáticamente en sesiones de R y Python en SQL Server, por lo que no es necesario importar la biblioteca.

En el Diseñador SSIS, cree una tarea Execute SQL para ejecutar el procedimiento almacenado generate_iris_rx_model. El modelo se serializa y se guarda en la tabla ssis_iris_models. El script para SQLStatement es el siguiente:

Como punto de control, después de que se complete esta tarea, puede consultar los modelos ssis_iris_ para ver que contiene un modelo binario.

Predecir (puntuar) resultados utilizando el modelo «entrenado»

Ahora que tiene código que carga los datos de entrenamiento y genera un modelo, el único paso que queda es usar el modelo para generar predicciones.

Para hacer esto, coloque el script R en la consulta SQL para activar la función R incorporada de rxPredict en ssis_iris_model. Un procedimiento almacenado llamado predict_species_length realiza esta tarea.

En el Diseñador de SSIS, cree una tarea Execute SQL que ejecute el procedimiento almacenado predict_species_length para generar la longitud de pétalo prevista.

exec predict_species_length 'rxLinMod';

Ejecute la solución

En SSIS Designer, presione F5 para ejecutar el paquete. Debería ver un resultado similar a la siguiente captura de pantalla.

Utilice SSRS para visualizaciones

Aunque R puede crear gráficos y visualizaciones interesantes, no está bien integrado con fuentes de datos externas, lo que significa que cada gráfico o gráfico debe producirse individualmente. Compartir también puede ser difícil.

Al utilizar R Services (En la base de datos), puede ejecutar operaciones complejas en R a través de procedimientos almacenados Transact-SQL, que pueden ser consumidos fácilmente por una variedad de herramientas de informes empresariales, incluidos Reporting Services y Power BI.

Los ejemplos de SSI y SSRS de este artículo ilustran dos casos de ejecución de procedimientos almacenados que contienen script R o Python incrustado. Una conclusión clave es que puede hacer que el script R o Python esté disponible para cualquier aplicación o herramienta que pueda enviar una solicitud de ejecución en un procedimiento almacenado. Una conclusión adicional para las SSI es que puede crear paquetes que automatizan y programan una amplia gama de operaciones, como adquisición de datos, limpieza, manipulación, etc., con la funcionalidad de ciencia de datos de R o Python incluida en la cadena de operaciones. Para obtener más información e ideas, consulte Operacionalizar el código R mediante procedimientos almacenados en los servicios de aprendizaje automático de SQL Server.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.