Prashanth Jayaram

Cómo usar Python en SQL Server 2017 para obtener análisis avanzado de datos

May 28, 2018 by

El 19 de Abril de 2017, Microsoft tuvo una conferencia en línea llamada Microsoft Data Amp para mostrar cómo las últimas innovaciones de Microsoft ponen los datos, el análisis y la inteligencia artificial en el corazón de la transformación del negocio. Microsoft, a través de los últimos años, ha hecho grandes avances en acelerar el ritmo de innovación para permitir al negocio cumplir con las demandas de un mercado dinámico y aprovechar el increíble poder de los datos, de manera más segura y rápida que nunca antes.

Después de la conferencia, había algunas preguntas que algunos de nosotros teníamos aún. ¿Está Microsoft SQL Server 2017 emergiendo como una solución empresarial para ciencia de datos? ¿Provee las capacidades requeridas para que el motor sea capaz de manejar datos enormes? Parece que la respuesta es “Sí”, ya que, comenzando con el lanzamiento de CTP 2.0 de SQL Server 2017, Microsoft ha traído inteligencia de datos basada en Python en SQL Server.

Python ha obtenido mucho interés recientemente como el lenguaje de elección para análisis de datos. Este lenguaje tiene el conjunto de librerías correcto para análisis de datos y modelado predictivo, sin mencionar una curva de aprendizaje menos pronunciada.

Las tendencias crecientes de ciencia y modelado de datos predicen un crecimiento masivo en los datos en los años por venir. La propulsión hacia la innovación y adaptación que liderarán tendencias en tecnología de datos puede intrigarnos lo suficiente para hacernos dar un vistazo al lanzamiento actual de SQL Server 2017.

La ciencia de Datos es una combinación de Minería de Datos, Aprendizaje de Máquina, Análisis y Grandes Datos. La integración de SQL 2016 con un lenguaje de ciencia de datos, R, al motor de la base de datos provee una interfaz que puede ejecutar eficientemente modelos y generar predicciones usando los servicios SQL R. Python construye sobre la base propuesta por los Servicios R en SQL Server 2016, y extiende ese mecanismo para incluir soporte para Python para análisis en la base de datos y aprendizaje de máquina.

Por otra parte, la integración R-Python en SQL Server, aparte de enfatizar la productividad y la legibilidad del código, también puede aprovechar el proceso paralelo de consultas, la seguridad y un mejor manejo de recursos.

Ahora, Microsoft ha renombrado a los Servicios R como Servicios de Aprendizaje de Máquina (Machine Learning Services), trayendo R y Python debajo del paraguas. El componente renombrado Microsoft Machine Learning Services permite a Python correr directamente en el servidor de la base de datos, o junto con scripts T-SQL incrustados.

Los desarrolladores han usado el procedimiento almacenado llamado sp_execute_external_script para correr código R, cuyo primer parámetro es @language. Microsoft ha diseñado este procedimiento almacenado para no tener límites fijos.

El motor hereda las características de R, para adoptar Python. Para correr código Python en SQL Server, tenemos que instalar SQL Server 2017 CTP 2.0 con la característica Machine Learning Services with Python. Es importante notar que otras versiones de SQL Server no soportan la integración con Python.

El artículo explora

  • La instalación del motor de la base de datos y la configuración de Machine Learning Services
  • La configuración de Python
  • La configuración de la instancia para permitir la ejecución de scripts que usan un ejecutable externo
  • Soporte para tipos de datos
  • Ejemplos para entender el uso de Python en SQL

Instalación

  • Descargue SQL Server 2017 CTP 2.0. Durante la Selección de Características (Feature Selection) en la instalación, Python está listado como parte de Machine Learning Services.
  • Ejecute el asistente de configuración para SQL Server 2017.
  • En la pestaña de instalación, haga clic en New SQL Server stand-alone installation or add features to an existing installation.
  • En la página Feature Selection, seleccione las opciones que ve en la captura de pantalla.
    • Database Engine Services: Para usar Python con SQL Server, usted debe instalar una instancia del motor de la base de datos.
    • Machines Services (In-Database): Esta opción instala los servicios de la base de datos que soportan la ejecución de scripts Python.
  • Python: Elija esta opción para obtener el ejecutable de Python 3.5 y seleccione las librerías desde la distribución Anaconda

En la página de abajo, Consent to Install Python, haga clic en Accept.

En la página Ready to Install, verifique que los componentes seleccionados están incluídos

Después de una instalación exitosa, la instancia está lista para habilitar un parámetro de ejecución de script externo.

Para habilitar la Instancia SQL para correr scripts de Python:

  • Abra SQL Server Management Studio.
  • Conéctese a la instancia donde Machine Learning Services está instalado, y ejecute el siguiente comando:

    sp_configure

  • Para habilitar la característica de scripts externos que soportan Python, ejecute la siguiente sentencia:

    EXEC sp_configure ‘external scripts enabled’, 1
    RECONFIGURE WITH OVERRIDE

  • Reinicie la Instancia SQL.

sp_execute_external_script

sp_execute_external_script es un procedimiento almacenado que se ejecuta con un script R/Python provisto como un argumento. Para habilitar el funcionamiento notmal de este procedimiento almacenado externo, usted debe tener acceso de administrador a su instancia de SQL Server, de modo que pueda correr el comando sp_configure. El procedimiento invocará el servicio de plataforma de lanzamiento a la respectiva librería para su ejecución.


Parámetro Propósito
@language = N’Python’ Parámetro de lenguaje de scripting, en este caso es Python
@script = N’ ‘ Cuerpo del script Python
@input_data_1 = N’ T-SQL Statement’ La sentencia T-SQL que lee datos desde la tabla SQL
@output_data_1_name = N’ Data Frame Name’ Contiene el marco de datos generado dentro del Script Python
WITH RESULT SETS ((Col1 DataType,Col2 DataType )) Especifica la columna Output y Datatype de las columnas de marco de datos. Esto es opcional.

Ejecute Código Python en SQL Server

Microsoft ha hecho posible incrustar código Python directamente en bases de datos SQL Server incluyendo el código como un procedimiento almacenado de T-SQL.

Soporte de Tipo de Datos

Python soporta un número limitado de tipos de datos en comparación a SQL Server. Como resultado, cuando sea que usted use datos desde SQL Server en Script Python, los datos pueden ser implícitamente convertidos a un tipo compatible con Python. De todas maneras, a menudo una conversión exacta no puede ser realizada automáticamente, y un error es retornado. Esta tabla lista las conversiones implícitas que son provistas. Otros tipos de datos no son soportados.

TIPO SQL TIPO PYTHON
bigint numeric
binary raw
bit bool
char str
float float64
int int32
nchar str
nvarchar str
nvarchar(max) str
real float32
smallint int16
tinyint uint8
varbinary bytes
varbinary(max) bytes
varchar(n) str
varchar(max) str

Ejemplos

Imprimir el valor de entrada

Encontrar la media de una lista dada


Operador de formato


Usando bucles y ramas


Pasar una tabla como entrada y generar una columna computada llamada bonus

  • Cree la tabla EMP
  • Inserte valores de prueba
  • Ejecute el script Python para generar la columna computada

Leer contenido desde un archivo de texto usando la función DictReader.


El siguiente ejemplo muestra cómo importar la librería Pandas para obtener acceso a los marcos de datos y hacer las siguientes tareas

  • Lea el archivo CSV usando la librería Pandas
  • Encuentre el número de filas usando el objeto de Pandas pyo
  • Recupere la primera fila del archivo csv
  • Calcule la media de cada columna estadística

Encuentre la media sobre la columna estadística

Los datos son alimentados desde la tabla y la computación ocurre usando la librería Pandas


Resumen

Este artículo cubrió cómo SQL Server 2017 introduce soporte para análisis de datos, y el uso de Pythonen adición a los scripts R. He detallado los procedimientos de instalación, los detalles de configuración y la ejecución de un ejemplo de script Python SQL.

La estrecha integración de R/Python a la máquina de SQL Server elimina el movimiento innecesario de datos a través de las máquinas; piense en mover millones/billones de filas al cliente para modelar y tantear sobre la red – es un trabajo complicado y tedioso. Esta es una de las razones por qué los científicos de datos se apoyan en muestras (Test set v/s Train set). Es un enfoque útil, especialmente donde hay problemas de soberanía de datos y falta de cumplimiento de requerimientos. Su código corre dentro de los límites de seguridad de SQL Server, gatillado por una sola llamada desde los procedimientos almacenados T-SQL.

El siguiente artículo en esta serie:

Vea más

Considere estas herramientas gratis para SQL Server que mejoran la productividad del desarrollador de bases de datos.

Referencias


Prashanth Jayaram
168 Views