SQL Server Machine Learning
SQL Server Machine Learning
SQL Server Machine Learning
NOTE
Machine Learning Services también está disponible en Azure SQL Managed Instance. Para obtener información sobre el
aprendizaje automático en otras plataformas de SQL, consulte la documentación del aprendizaje automático de SQL.
NOTE
Machine Learning Services también está disponible en Azure SQL Managed Instance. Para obtener información sobre el
aprendizaje automático en otras plataformas de SQL, consulte la documentación del aprendizaje automático de SQL.
Para ejecutar Java en SQL Server, consulte la documentación sobre la extensión de lenguaje Java.
Versiones de Python y R
A continuación se muestran las versiones de Python y R incluidas en Machine Learning Services.
Para la versión de R en SQL Server 2016, vea la sección Versión de R de ¿Qué es R Services?
Paquetes de Python y R
Además de los paquetes de empresa de Microsoft, pueden usarse usar marcos y paquetes de código abierto.
Los paquetes de Python y R de código abierto más comunes están preinstalados en Machine Learning Services.
También se incluyen los siguientes paquetes de Python y R de Microsoft:
Para obtener más información sobre los paquetes que se instalan con Machine Learning Services y cómo
instalar otros paquetes, consulte:
Obtención de información de paquetes de Python
Instalación de paquetes de Python con sqlmlutils
Obtención de información de paquetes de R
Instalación de nuevos paquetes de R con sqlmlutils
Obtención de información de paquetes de Python
Instalación de paquetes con las herramientas de Python en SQL Server
Obtención de información de paquetes de R
Uso de T-SQL (CREATE EXTERNAL LIBRARY) para instalar paquetes de R en SQL Server
Pasos siguientes
Instalación de SQL Server Machine Learning Services en Windows o en Linux
Tutoriales de Python para aprendizaje automático de SQL
Tutoriales de R para aprendizaje automático de SQL
¿Qué es SQL Server 2016 R Services?
14/07/2021 • 4 minutes to read
NOTE
Se ha cambiado el nombre de R Services a Machine Learning Services en SQL Server 2017 y versiones posteriores, y es
compatible con Python y R.
¿Qué es R Services?
SQL Server R Services permite ejecutar scripts de R en la base de datos. Se puede usar para preparar y limpiar
los datos, realizar ingeniería de características, y entrenar, evaluar e implementar modelos de aprendizaje
automático en una base de datos. La característica ejecuta los scripts donde residen los datos y elimina la
transferencia de los datos a otro servidor a través de la red.
Las distribuciones base de R se incluyen en R Services. Puede usar paquetes y plataformas de código abierto,
además de los paquetes RevoScaleR, MicrosoftML, [olapR]../r/ref-r-olapr.md) y sqlrutils de Microsoft para R.
R Services usa una plataforma de extensibilidad para ejecutar scripts de R en SQL Server. Más información
sobre cómo funciona:
Plataforma de extensibilidad
Extensión de R
T IP O DE P REDIC C IÓ N E JEM P LO
Regresión o predicción de valores continuos Predicción del precio de viviendas en función del tamaño y la
ubicación
Versiones de R
A continuación se enumeran las versiones del runtime de R que se incluyen en SQL Server 2016 R Services.
La actualización acumulativa (CU) 14 para SQL Server 2016 Service Pack (SP) 2 y versiones posteriores incluyen
los runtime de R más recientes. Para obtener más información, vea Cambio a la versión predeterminada del
runtime de lenguaje predeterminado.
Para otras versiones de R, o para ejecutar Python, use Machine Learning Services para SQL Server 2017 y
versiones posteriores.
Paquetes de R
Además de los paquetes de empresa de Microsoft, pueden usarse usar marcos y paquetes de código abierto.
Los paquetes de R de código abierto más comunes están preinstalados en R Services. También se incluyen los
siguientes paquetes de Microsoft R:
Pasos siguientes
Instalación de SQL Server 2016 R Services
Configuración de un cliente de ciencia de datos para el desarrollo de R
¿Qué son Machine Learning Server (independiente)
o R Server en SQL Server?
14/07/2021 • 6 minutes to read
IMPORTANT
La compatibilidad con Machine Learning Server (anteriormente conocido como R Server) finalizará el 1 de julio de 2022.
Para obtener más información, consulte ¿Qué sucederá con Machine Learning Server?
SQL Server proporciona soporte de instalación para un servidor R Server o Machine Learning Server
independiente que se ejecuta independientemente de SQL Server. En función de la versión de SQL Server, un
servidor independiente tiene una base de R de código abierto y posiblemente de Python, superpuestas con
bibliotecas de alto rendimiento de Microsoft que agregan análisis predictivos y estadísticos a escala. Las
bibliotecas también permiten realizar tareas de aprendizaje automático con scripts en R o Python.
En SQL Server 2016, esta característica se denomina R Ser ver (independiente) y es de solo R. En
SQL Server 2017 se denomina Machine Learning Ser ver (independiente) e incluye R y Python.
NOTE
Tal y como se instala con el programa de instalación de SQL Server, un servidor independiente es funcionalmente
equivalente a las versiones que no son de la marca SQL de Microsoft Machine Learning Server y admite los mismos
escenarios de usuario, como la ejecución remota, la operacionalización y los servicios web, así como la colección completa
de bibliotecas de R y Python.
Componentes
SQL Server 2016 solo admite R. SQL Server 2017 admite R y Python. En la tabla siguiente se indican las
características de cada versión.
C O M P O N EN T E DESC RIP C IÓ N
Ejemplos de Python y scripts Al igual que con R, Python incluye scripts y conjuntos de
datos integrados. Podrá encontrar los datos de revoscalepy
en \Archivos de programa\Microsoft SQL
Server\140\PYTHON_SERVER\bib\site-
packages\revoscalepy\data\sample-data.
Modelos previamente entrenados en R y Python Los modelos previamente entrenados se crean para casos de
uso específicos y los mantiene el equipo de ingeniería de
ciencia de datos de Microsoft. Puede usar los modelos
previamente entrenados tal cual para puntuar la opinión
positiva-negativa en el texto o para detectar características
en las imágenes, con las nuevas entradas de datos que
proporcione. Los modelos previamente entrenados se
admiten y se pueden usar en un servidor independiente,
pero no se pueden instalar a través del programa de
instalación de SQL Server. Para obtener más información, vea
Instalación de modelos de aprendizaje automático
previamente entrenados en SQL Server.
Introducción
Comience con el programa de instalación, adjunte los binarios a su herramienta de desarrollo favorita y escriba
el primer script.
Paso 1: Instalar el software
Instale una de estas versiones:
SQL Server 2017 Machine Learning Server (independiente)
SQL Server 2016 R Server (independiente) - solo R
Paso 2: Configurar una herramienta de desarrollo
En un servidor independiente, es habitual trabajar localmente con un desarrollo instalado en el mismo equipo.
Configuración de las herramientas de R
Configuración de las herramientas de Python
Paso 3: escritura del primer script
Escriba el script de R o Python con las funciones de RevoScaleR, revoscalepy y los algoritmos de aprendizaje
automático.
Exploración de R y ScaleR en 25 funciones: Comience con comandos de R básicos y, a continuación,
avance hasta las funciones analíticas de RevoScaleR distribuibles que proporcionan alto rendimiento y
escalabilidad para soluciones de R. Incluye versiones que se pueden usar en parelelo de muchos de los
paquetes de R más conocidos, como agrupación en clústeres k-means, árboles y bosques de decisión, y
herramientas para la manipulación de datos.
Inicio rápido: Un ejemplo de clasificación binaria con el paquete de Python de microsoftml: Cree un
modelo de clasificación binaria con las funciones de microsoftml y el conocido conjunto de datos de
cáncer de mama.
Elija el mejor lenguaje para la tarea. R es la mejor opción para los cálculos estadísticos que son difíciles de
implementar mediante SQL. En el caso de las operaciones basadas en conjuntos sobre datos, aproveche la
potencia de SQL Server para obtener el máximo rendimiento. Use el motor de base de datos en memoria para
cálculos muy rápidos en columnas.
Paso 4: puesta en funcionamiento de la solución
Los servidores independientes pueden usar la funcionalidad de operacionalización de Microsoft Machine
Learning Server que no son de la marca SQL. Puede configurar un servidor independiente para la
operacionalización, lo que le ofrece estas ventajas: implementar y hospedar el código como servicios web,
ejecutar diagnósticos y probar la capacidad del servicio web.
Paso 5: mantenimiento del servidor
SQL Server publica actualizaciones acumulativas periódicamente. La aplicación de las actualizaciones
acumulativas agrega mejoras funcionales y de seguridad a una instalación existente.
Puede encontrar descripciones de la funcionalidad nueva o modificada en el artículo descargas de CAB y en las
páginas web de las actualizaciones acumulativas de SQL Server 2016 y las actualizaciones acumulativas de SQL
Server 2017.
Para obtener más información sobre cómo aplicar las actualizaciones a una instancia existente, vea Aplicación de
actualizaciones en las instrucciones de instalación.
Consulte también
Instalación de R Server (independiente) o Machine Learning Server (independiente)
Novedades de SQL Server Machine Learning
Services
14/07/2021 • 7 minutes to read
NOTE
Para obtener la documentación sobre las novedades de Java en SQL Server 2019, vea las Novedades de Extensiones de
lenguaje de SQL Server.
A continuación, se muestran las características nuevas para SQL Server Machine Learning Services, disponibles
en Windows y en Linux :
Se ha agregado compatibilidad con la plataforma Linux en Machine Learning Services para Python y R.
Comience con la Instalación de SQL Server Machine Learning Services en Linux.
Conexión de bucle invertido con SQL Server desde un script de Python o R.
CREATE EXTERNAL LIBRARY (Transact-SQL) para Python y R.
sp_execute_external_script introduce dos parámetros nuevos que le permiten generar fácilmente varios
modelos a partir de datos con particiones. Obtenga más información en este tutorial, Creación de modelos
basados en particiones en R.
La compatibilidad con el clúster de conmutación por error está disponible para el servicio Launchpad,
siempre que el servicio SQL Server Launchpad se haya iniciado en todos los nodos. Para obtener más
información, vea Instalación de clúster de conmutación por error de SQL Server.
Cambios en los mecanismos de aislamiento para Machine Learning Services. Para obtener más información,
vea SQL Server 2019 en Windows: Cambios de aislamiento para Machine Learning Services.
REL EA SE A C T UA L IZ A C IÓ N DE C A RA C T ERÍST IC A S
Compatibilidad de Linux
SQL Server 2019 agrega compatibilidad con Linux para R y Python cuando se instalan los paquetes de
aprendizaje automático con una instancia del motor de base de datos. Para obtener más información, vea
Instalación de SQL Server Machine Learning Services en Linux.
En Linux, SQL Server 2017 no tiene integración de R o Python, pero puede usar la puntuación nativa en Linux
porque esa funcionalidad está disponible a través de PREDICT de T-SQL, que se ejecuta en Linux. La puntuación
nativa habilita la puntuación de alto rendimiento a partir de un modelo previamente entrenado, sin llamar a un
tiempo de ejecución de R ni siquiera requerirlo.
Pasos siguientes
Instalación de SQL Server Machine Learning Services (en base de datos)
Instalación de SQL Server Machine Learning
Services (Python y R) en Windows
14/07/2021 • 15 minutes to read
NOTE
Machine Learning Services se instala de forma predeterminada en clústeres de macrodatos de SQL Ser ver . Si usa un
clúster de macrodatos , no es necesario que siga los pasos de este artículo. Para más información, vea Uso de Machine
Learning Services (Python y R) en Clústeres de macrodatos.
IMPORTANT
Una vez finalizada la instalación, asegúrese de completar los pasos posteriores a la configuración que se describen en este
artículo. En estos pasos se incluye la habilitación de SQL Server para usar scripts externos y la adición de cuentas
necesarias para que SQL Server ejecute trabajos de R y Python en su nombre. Habitualmente, si se realizan cambios en la
configuración, es necesario reiniciar la instancia o el servicio Launchpad.
Obtener los medios de instalación
La ubicación de descarga de SQL Server depende de la edición:
Las ediciones Enterprise, Standard y Express de SQL Ser ver tienen licencia para su uso en
producción. En el caso de las ediciones Enterprise y Standard, póngase en contacto con su proveedor de
software para obtener los soportes de instalación. Encontrará información sobre la adquisición y un
directorio de asociados de Microsoft en el sitio web de adquisición de Microsoft.
Edición gratuita más reciente.
Para más información sobre qué ediciones de SQL Server admiten la integración de Python y R con Machine
Learning Services, consulte Ediciones y características admitidas de SQL Server 2017.
Para más información sobre qué ediciones de SQL Server admiten la integración de Python y R con Machine
Learning Services, consulte Ediciones y características admitidas de SQL Server 2019 (15.x).
Ejecución de la configuración
En las instalaciones locales debe ejecutar el programa de instalación como administrador. Si instala SQL Server
desde un recurso compartido remoto, deberá usar una cuenta de dominio que tenga permisos de lectura y
ejecución para dicho recurso.
1. Inicie el asistente para la instalación de SQL Server.
2. En la pestaña Instalación , seleccione Nueva instalación independiente de SQL Ser ver o agregar
características a una instalación existente .
3. En la página Selección de características , seleccione estas opciones:
Ser vicios de Motor de base de datos
Para usar R y Python con SQL Server, debe instalar una instancia del motor de base de datos.
Puede usar una instancia predeterminada o una con nombre.
Machine Learning Ser vices (en base de datos)
Esta opción instala los servicios de base de datos que admiten la ejecución de scripts de R y
Python.
Ser vicios de Motor de base de datos
Para usar R o Python con SQL Server, debe instalar una instancia del motor de base de datos.
Puede usar una instancia predeterminada o una con nombre.
Machine Learning Ser vices (en base de datos)
Esta opción instala los servicios de base de datos que admiten la ejecución de scripts de R y
Python.
R
Active esta opción para agregar los paquetes de Microsoft R, el intérprete y R de código abierto.
Python
Active esta opción para agregar los paquetes de Microsoft Python, el archivo ejecutable de
Python 3.5 y bibliotecas seleccionadas de la distribución de Anaconda.
Para información sobre la instalación y el uso de Java, consulte Instalación de extensiones de lenguaje de
SQL Server en Windows.
NOTE
No seleccione la opción para Machine Learning Ser ver (independiente) . La opción de instalar Machine
Learning Server incluida en Características compar tidas está pensada para su uso en un equipo
independiente.
NOTE
Si el equipo que está usando no tiene acceso a Internet, puede pausar la instalación en este punto y descargar los
instaladores por separado. Para obtener más información, consulte Instalación de componentes de aprendizaje
automático sin acceso a Internet.
2. En la página Listo para instalar , confirme que estas selecciones se han realizado y haga clic en
Instalar .
Servicios de Motor de base de datos
Machine Learning Services (en base de datos)
R o Python, o ambos
Tome nota de la ubicación de la carpeta en la ruta de acceso ..\Setup Bootstrap\Log donde se almacenan
los archivos de configuración. Una vez que se haya completado la instalación, podrá revisar los
componentes instalados en el archivo de resumen.
3. Cuando finalice la instalación, si el programa indica que se reinicie el equipo, hágalo. Es importante leer el
mensaje del Asistente para la instalación tras finalizar el programa de instalación. Para obtener más
información, vea View and Read SQL Server Setup Log Files.
1. En la página Consentimiento para instalar Microsoft R Open , seleccione Aceptar y Siguiente . Este
contrato de licencia cubre Microsoft R Open, que incluye una distribución de las herramientas y paquetes
base de R de código abierto, junto con proveedores de conectividad y paquetes de R mejorados del
equipo de desarrollo de Microsoft.
2. En la página Consentimiento de instalación de Python , seleccione Aceptar y Siguiente . El contrato
de licencia de código abierto de Python también cubre Anaconda y herramientas relacionadas, además
de algunas bibliotecas nuevas de Python del equipo de desarrollo de Microsoft.
3. En la página Listo para instalar , confirme que estas selecciones se han realizado y haga clic en
Instalar .
Servicios de Motor de base de datos
Machine Learning Services (en base de datos)
R o Python
Tome nota de la ubicación de la carpeta en la ruta de acceso ..\Setup Bootstrap\Log donde se almacenan
los archivos de configuración. Una vez que se haya completado la instalación, podrá revisar los
componentes instalados en el archivo de resumen.
4. Cuando finalice la instalación, si el programa indica que se reinicie el equipo, hágalo. Es importante leer el
mensaje del Asistente para la instalación tras finalizar el programa de instalación. Para obtener más
información, vea View and Read SQL Server Setup Log Files.
Este paso requiere el reinicio del servidor. Si va a habilitar la ejecución de scripts, puede posponer el reinicio
hasta que se realice todo el trabajo de configuración.
2. Conéctese a la instancia en la que instaló Machine Learning Services, haga clic en Nueva consulta para
abrir una ventana de consulta y ejecute el comando siguiente:
sp_configure
El valor de la propiedad, external scripts enabled , debería ser 0 en este momento. La característica está
desactivada de forma predeterminada. Un administrador debe habilitar explícitamente la característica
para poder ejecutar scripts de R o Python.
3. Para habilitar la característica de scripting externo, ejecute la siguiente instrucción:
Si ya ha habilitado la característica para el lenguaje R, no ejecute RECONFIGURE una segunda vez para
Python. La plataforma de extensibilidad subyacente admite ambos lenguajes.
Reinicie el servicio.
Después de que la instalación se haya completado, reinicie el motor de base de datos.
Al reiniciar el servicio, también se reiniciará automáticamente el servicio SQL Server Launchpad relacionado.
Para reiniciar el servicio, puede hacer clic con el botón derecho en el comando Reiniciar de la instancia
en SSMS, usar el panel Ser vicios del panel de control o emplear el Administrador de configuración de
SQL Server.
Comprobar la instalación
Haga lo siguiente para comprobar que se están ejecutando todos los componentes que se usan para iniciar el
script externo.
1. En SQL Server Management Studio, abra una nueva ventana de consulta y ejecute el siguiente comando:
Para Python
Resultados
El script puede tardar un poco en ejecutarse la primera vez que se carga el tiempo de ejecución del script
externo. Los resultados deben tener un aspecto similar al siguiente:
H EL LO
NOTE
Las columnas o los encabezados usados en el script de Python no se devuelven de manera automática. Para agregar
nombres de columna para la salida, debe especificar el esquema para el conjunto de datos devuelto. Para ello, use el
parámetro WITH RESULTS del procedimiento almacenado, asigne un nombre a las columnas y especifique el tipo de datos
SQL.
Por ejemplo, puede agregar la línea siguiente para generar un nombre de columna arbitrario:
WITH RESULT SETS ((Col1 AS int)) .
Aplicación de actualizaciones
Instalación existente
Si ha agregado Machine Learning Services a una instancia de SQL Server existente y ha aplicado previamente
una actualización acumulativa (CU), las versiones del motor de base de datos y la característica Machine
Learning Services podrían ser diferentes. Esto puede producir un comportamiento o errores inesperados.
Siga estos pasos para llevar Machine Learning Services a la misma versión que el motor de base de datos.
1. Determine la actualización acumulativa (CU) que tiene para el motor de base de datos. Ejecute esta
instrucción T-SQL:
SELECT @@VERSION
A continuación se muestra un resultado de ejemplo de la actualización acumulativa (CU) 8 de SQL Server
2019:
Microsoft SQL Server 2019 (RTM-CU8-GDR) (KB4583459): 15.0.4083.2 (X64) 2 de noviembre de 2020
18:35:09 Copyright (C) 2019 Microsoft Corporation Developer Edition (64 bits) en Windows 10
Enterprise 10.0 (Compilación 19042: ) (Hipervisor)
Para obtener más información, consulte Determinar la versión, la edición y el nivel de actualización de
SQL Server y sus componentes.
2. Descargue la actualización acumulativa (CU) que ha instalado para el motor de base de datos.
3. Ejecute la instalación de la actualización acumulativa (CU) y siga las instrucciones para instalar la CU para
Machine Learning Services.
Nueva instalación
Si instala Machine Learning Services con una nueva instalación del motor de base de datos de SQL Server, se
recomienda aplicar la última actualización acumulativa tanto a los componentes de aprendizaje automático
como a los de motor de base de datos.
En los dispositivos conectados a Internet, las actualizaciones acumulativas suelen aplicarse a través de Windows
Update, pero también puede usar los pasos siguientes para las actualizaciones controladas. Al aplicar la
actualización para el motor de base de datos, el programa de instalación extrae las actualizaciones acumulativas
de las características de Python o R instaladas en la misma instancia.
Los servidores desconectados requieren pasos adicionales. Para obtener más información, consulte Instalación
en equipos sin acceso a Internet > Aplicación de actualizaciones acumulativas.
1. Comience con una instancia de línea de base ya instalada: versión inicial de SQL Server.
2. Vaya a la lista de actualizaciones acumulativas: Actualizaciones más recientes de Microsoft SQL Server.
3. Seleccione la actualización acumulativa más reciente. Se descarga un ejecutable que se extrae
automáticamente.
4. Ejecute el programa de instalación. Acepte los términos de licencia y, en la página de selección de
características, revise las características para las que se aplican las actualizaciones acumulativas. Debería
ver todas las características instaladas para la instancia actual, incluidas las características de aprendizaje
automático. El programa de instalación descarga los archivos CAB necesarios para actualizar todas las
características.
5. Continúe con los pasos del asistente y acepte los términos de licencia para las distribuciones de R y
Python.
Configuración adicional
Si el paso de comprobación de scripts externos se ejecuta correctamente, puede ejecutar comandos de R o
Python de SQL Server Management Studio, Visual Studio Code o cualquier otro cliente que pueda enviar
instrucciones T-SQL al servidor.
Si se produjo un error al ejecutar el comando, revise los pasos de configuración adicional de esta sección. Es
posible que tenga que crear otras configuraciones adicionales adecuadas para el servicio o la base de datos.
En el nivel de instancia, la configuración adicional podría incluir:
Configuración de firewall para SQL Server Machine Learning Services
Habilitación de protocolos de red adicionales
Habilitación de conexiones remotas
Creación de un inicio de sesión para SQLRUserGroup
Administración de cuotas de disco para evitar que los scripts externos ejecuten tareas que agoten el espacio
en disco
En SQL Server 2019 en Windows, el mecanismo de aislamiento ha cambiado. Este mecanismo afecta a
SQLRUserGroup , las reglas de firewall, los permisos de archivo y la autenticación implícita. Para obtener más
información, consulte Cambios de aislamiento para Machine Learning Services.
NOTE
El hecho de que se requiera una configuración adicional depende del esquema de seguridad, del lugar en el que se haya
instalado SQL Server y de cómo se espera que los usuarios se conecten a la base de datos y ejecuten scripts externos.
Optimizaciones sugeridas
Ahora que todo funciona, puede que también le interese optimizar el servidor para admitir el aprendizaje
automático o instalar modelos de aprendizaje automático previamente entrenados.
Adición de más cuentas profesionales
Si prevé que muchos usuarios van a ejecutar scripts al mismo tiempo, puede aumentar el número de cuentas
profesionales que están asignadas al servicio Launchpad. Para obtener más información, vea Escalar la ejecución
simultánea de scripts externos en SQL Server Machine Learning Services.
Optimización del servidor para la ejecución de scripts
La configuración predeterminada del programa de instalación de SQL Server está diseñada para optimizar el
equilibrio del servidor para diversos servicios que el motor de base de datos admite, entre otros, procesos de
extracción, transformación y carga de datos (ETL), creación de informes, auditoría y aplicaciones que usan datos
de SQL Server. En la configuración predeterminada, los recursos para el aprendizaje automático están
restringidos a veces, especialmente en operaciones que usan mucha memoria.
Para asegurarse de que se asignen a los trabajos de aprendizaje automático la prioridad y los recursos correctos,
se recomienda usar Resource Governor de SQL Server para configurar un grupo de recursos externos. Puede
que también le interese cambiar la cantidad de memoria asignada al motor de base de datos de SQL Server o
aumentar el número de cuentas que se ejecutan en el servicio SQL Server Launchpad.
Para configurar un grupo de recursos para la administración de recursos externos, vea Creación de un
grupo de recursos externos.
Para cambiar la cantidad de memoria reservada para la base de datos, vea Opciones de configuración de
memoria del servidor.
Para cambiar el número de cuentas de R que se pueden iniciar mediante SQL Server Launchpad, consulte
Escalar la ejecución simultánea de scripts externos en SQL Server Machine Learning Services.
Si usa la edición Standard Edition y no dispone de Resource Governor, puede usar vistas de administración
dinámica (DMV) y eventos extendidos, así como la supervisión de eventos de Windows, como ayuda para
administrar los recursos de servidor.
Instalación de paquetes adicionales de Python y R
Las soluciones de Python y R que cree para SQL Server pueden llamar a funciones básicas, funciones de los
paquetes de su propiedad instalados con SQL Server y paquetes de terceros compatibles con la versión de
Python y R de código abierto instalada por SQL Server.
Los paquetes que quiera usar de SQL Server deben estar instalados en la biblioteca predeterminada que la
instancia usa. Si tiene una instalación independiente de Python o R en el equipo o si ha instalado paquetes en las
bibliotecas de usuario, no puede usar esos paquetes desde T-SQL.
Para instalar y administrar paquetes adicionales, puede configurar grupos de usuarios para compartir paquetes
en cada nivel de base de datos, o bien configurar roles de base de datos para permitir que los usuarios instalen
sus propios paquetes. Para obtener más información, consulte Instalación de paquetes de Python e Instalación
de nuevos paquetes de R.
Pasos siguientes
Los desarrolladores de Python pueden aprender a usar Python con SQL Server con estos tutoriales:
Tutorial de Python: Predicción de alquileres de esquíes con regresión lineal en
SQL Server Machine Learning Services
Tutorial de Python: Clasificación de clientes por categorías mediante la agrupación en clústeres k-means con
SQL Server Machine Learning Services
Los desarrolladores de R pueden empezar con algunos ejemplos sencillos y conocer los aspectos básicos del
funcionamiento de R con SQL Server. Para conocer el siguiente paso, vea los vínculos siguientes:
Inicio rápido: Ejecutar R en T-SQL
Tutorial: Análisis en base de datos para desarrolladores de R
Instalación de SQL Server Machine Learning
Services (Python y R) en Linux
14/07/2021 • 11 minutes to read
NOTE
Machine Learning Services se instala de forma predeterminada en los clústeres de macrodatos de SQL Server. Para más
información, vea Uso de Machine Learning Services (Python y R) en Clústeres de macrodatos
Lista de paquetes
En un dispositivo conectado a Internet, los paquetes se descargan e instalan de forma independiente del motor
de base de datos mediante el instalador de paquetes de cada sistema operativo. En la siguiente tabla se
describen todos los paquetes disponibles, pero para R y Python hay que especificar paquetes que proporcionen
la instalación completa de características o la instalación mínima de características.
Paquetes de instalación disponibles:
Instalación en RHEL
Siga los pasos siguientes para instalar SQL Server Machine Learning Services en Red Hat Enterprise Linux
(RHEL).
Instalación de MRO en RHEL
Los siguientes comandos registran el repositorio que proporciona MRO. Tras el registro, los comandos para
instalar otros paquetes de R (como mssql-mlservices-mml-r) incluirán automáticamente MRO como una
dependencia de paquete.
# Import the Microsoft repository key
TIP
Si es posible, ejecute yum clean all para actualizar los paquetes en el sistema antes de la instalación.
Instalación completa
Incluye:
Python de código abierto
R de código abierto
Marco de extensibilidad
Microsoft-openmpi
Extensiones (Python, R)
Bibliotecas de aprendizaje automático
Modelos entrenados previamente para Python y R
Instalación mínima
Incluye:
Python de código abierto
R de código abierto
Marco de extensibilidad
Microsoft-openmpi
Bibliotecas Revo* básicas
Bibliotecas de aprendizaje automático
# Install as root or sudo
# Minimum install of R, Python extensions
# Be sure to include -9.4.6* in mlsservices package names
sudo yum install mssql-mlservices-packages-py-9.4.7*
sudo yum install mssql-mlservices-packages-r-9.4.7*
Instalación en Ubuntu
Siga los pasos siguientes para instalar SQL Server Machine Learning Services en Ubuntu.
Instalación de MRO en Ubuntu
Los siguientes comandos registran el repositorio que proporciona MRO. Tras el registro, los comandos para
instalar otros paquetes de R (como mssql-mlservices-mml-r) incluirán automáticamente MRO como una
dependencia de paquete.
# Install as root
sudo su
# Optionally, if your system does not have the https apt transport option
apt-get install apt-transport-https
# Set the location of the package repo the "prod" directory containing the distribution.
# This example specifies 20.04. Replace with 16.04 or 14.04 if you want those versions.
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb
TIP
Si es posible, ejecute apt-get update para actualizar los paquetes en el sistema antes de la instalación.
Instalación completa
Incluye:
Python de código abierto
R de código abierto
Marco de extensibilidad
Microsoft-openmpi
Extensiones de Python
Extensiones de R
Bibliotecas de aprendizaje automático
Modelos entrenados previamente para Python y R
# Install as root or sudo
# Add everything (all R, Python)
# There is no asterisk in this full install
sudo apt-get install mssql-mlservices-mlm-py
sudo apt-get install mssql-mlservices-mlm-r
Instalación mínima
Incluye:
Python de código abierto
R de código abierto
Marco de extensibilidad
Microsoft-openmpi
Bibliotecas Revo* básicas
Bibliotecas de aprendizaje automático
Instalación en SLES
Siga los pasos siguientes para instalar SQL Server Machine Learning Services en SUSE Linux Enterprise Server
(SLES).
Instalación de MRO en SLES
Los siguientes comandos registran el repositorio que proporciona MRO. Tras el registro, los comandos para
instalar otros paquetes de R (como mssql-mlservices-mml-r) incluirán automáticamente MRO como una
dependencia de paquete.
# Install as root
sudo su
# Set the location of the package repo at the "prod" directory containing the distribution
# This example is for SLES12
zypper ar -f https://packages.microsoft.com/sles/12/prod packages-microsoft-com
Instalación mínima
Incluye:
Python de código abierto
R de código abierto
Marco de extensibilidad
Microsoft-openmpi
Bibliotecas Revo* básicas
Bibliotecas de aprendizaje automático
2. Acepte los contratos de licencia de las extensiones de R y Python de código abierto. Use el comando
siguiente:
El programa de instalación detecta los paquetes mssql-mlservices y solicita la aceptación del CLUF (si no
se ha aceptado antes) cuando se ejecuta mssql-conf setup . Para más información sobre los parámetros
EULA, vea Configuración de SQL Server con la herramienta mssql-conf.
3. Habilite el acceso de red saliente. El acceso de red saliente está deshabilitado de forma predeterminada.
Para habilitar las solicitudes salientes, establezca la propiedad booleana "outboundnetworkaccess" con la
herramienta mssql-conf. Para más información, vea Configuración de SQL Server en Linux con mssql-
conf.
# Run as SUDO or root
# Enable outbound requests over the network
sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 1
6. Habilite la ejecución de scripts externos con Azure Data Studio u otra herramienta como SQL Server
Management Studio (solo Windows) que ejecute Transact-SQL.
Comprobar la instalación
Las bibliotecas de R (MicrosoftML, RevoScaleR y otras) se encuentran en
/opt/mssql/mlservices/libraries/RServer .
EXEC sp_execute_external_script
@language =N'R',
@script=N'
OutputDataSet <- InputDataSet',
@input_data_1 =N'SELECT 1 AS hello'
WITH RESULT SETS (([hello] int not null));
GO
Ejecute el siguiente comando SQL para probar la ejecución de Python en SQL Server.
EXEC sp_execute_external_script
@language =N'Python',
@script=N'
OutputDataSet = InputDataSet;
',
@input_data_1 =N'SELECT 1 AS hello'
WITH RESULT SETS (([hello] int not null));
GO
Instalación desatendida
Mediante la instalación desatendida del motor de base de datos, agregue los paquetes de mssql-mlservices y
los contratos de licencia.
Use uno de los parámetros de CLUF específicos de mlservices para las distribuciones de R y Python de código
abierto:
El CLUF completo se documenta en Configuración de SQL Server en Linux con la herramienta mssql-conf.
TIP
Varias de las herramientas de administración de paquetes proporcionan comandos que pueden ayudar a determinar las
dependencias de los paquetes. En yum, use sudo yum deplist [package] . En Ubuntu, use
sudo apt-get install --reinstall --download-only [package name] seguido de dpkg -I [package name].deb .
Sitio de descarga
Descargue los paquetes desde https://packages.microsoft.com/. Todos los paquetes mlservices de Python y R se
colocan con el paquete del motor de base de datos. La versión base de los paquetes mlservices es 9.4.6.
Recuerde que los paquetes microsoft-r-open están en un repositorio diferente.
Rutas de acceso de RHEL/8
PA Q UET E UB IC A C IÓ N DE DESC A RGA
Seleccione las extensiones que quiera usar y descargue los paquetes necesarios para un lenguaje específico. Los
nombres de archivo incluyen información de la plataforma en el sufijo.
Lista de paquetes
En función de las extensiones que quiera usar, descargue los paquetes necesarios relativos a un lenguaje
específico. Los nombres de archivo exactos incluyen información de la plataforma en el sufijo, pero los nombres
de archivo siguientes deben ser lo suficientemente cercanos para que pueda determinar qué archivos va a
obtener.
# Core packages
mssql-server-15.0.1000
mssql-server-extensibility-15.0.1000
# R
microsoft-openmpi-3.0.0
microsoft-r-open-mkl-3.5.2
microsoft-r-open-mro-3.5.2
mssql-mlservices-packages-r-9.4.7.64
mssql-mlservices-mlm-r-9.4.7.64
# Python
microsoft-openmpi-3.0.0
mssql-mlservices-python-9.4.7.64
mssql-mlservices-packages-py-9.4.7.64
mssql-mlservices-mlm-py-9.4.7.64
Pasos siguientes
Los desarrolladores de Python pueden aprender a usar Python con SQL Server con estos tutoriales:
Tutorial de Python: Predicción de alquileres de esquíes con regresión lineal en
SQL Server Machine Learning Services
Tutorial de Python: Clasificación de clientes por categorías mediante la agrupación en clústeres k-means con
SQL Server Machine Learning Services
Los desarrolladores de R pueden empezar con algunos ejemplos sencillos y conocer los aspectos básicos del
funcionamiento de R con SQL Server. Para conocer el siguiente paso, vea los vínculos siguientes:
Inicio rápido: Ejecutar R en T-SQL
Tutorial: Análisis en base de datos para desarrolladores de R
Instalación de SQL Server Machine Learning
Services (Python y R) en Docker
14/07/2021 • 3 minutes to read
Requisitos previos
Interfaz de la línea de comandos de Git.
Motor de Docker 1.8 o versiones posteriores en cualquier distribución de Linux admitida o Docker para
Mac y Windows. Para más información, vea Get Docker (Obtención de Docker).
Vea también los requisitos del sistema para SQL Server en Linux.
/mssql-docker/linux/preview/examples/mssql-mlservices
3. Ejecute el comando:
docker ps -a
NOTE
Para compilar la imagen de Docker, debe instalar paquetes de varios GB de tamaño. El script puede tardar algún
tiempo en terminar de ejecutarse, en función del ancho de banda de red.
export MSSQL_PID='Developer'
export ACCEPT_EULA='Y'
export ACCEPT_EULA_ML='Y'
export PATH_TO_MSSQL='/home/mssql/'
NOTE
El proceso para ejecutar ediciones de producción de SQL Server en contenedores es ligeramente diferente. Para
obtener más información, consulte Configuración de imágenes de contenedor de SQL Server en Docker. Si usa los
mismos nombres y puertos de contenedor, el resto de este tutorial funciona con los contenedores de producción.
sudo docker ps -a
3. Si en la columna ESTADO se muestra el estado Activo , SQL Server se ejecuta en el contenedor y escucha
en el puerto especificado en la columna PUERTOS . Si la columna ESTADO de su contenedor de SQL
Server muestra Cerrado , consulte la sección Solución de problemas de la guía de configuración.
Salida:
Pasos siguientes
Los desarrolladores de Python pueden aprender a usar Python con SQL Server con estos tutoriales:
Tutorial de Python: Predicción de alquileres de esquíes con regresión lineal en
SQL Server Machine Learning Services
Tutorial de Python: Clasificación de clientes por categorías mediante la agrupación en clústeres k-means con
SQL Server Machine Learning Services
Los desarrolladores de R pueden empezar con algunos ejemplos sencillos y conocer los aspectos básicos del
funcionamiento de R con SQL Server. Para conocer el siguiente paso, vea los vínculos siguientes:
Inicio rápido: Ejecutar R en T-SQL
Tutorial: Análisis en base de datos para desarrolladores de R
SQL Server 2019 en Windows: Cambios de
aislamiento para Machine Learning Services
14/07/2021 • 5 minutes to read
NOTE
Si se requieren llamadas de red, puede deshabilitar las reglas de salida en Firewall de Windows.
Permisos de archivo
De forma predeterminada, los scripts externos de Python y R solo tienen permiso de acceso de lectura en sus
directorios de trabajo.
Si los scripts de Python o R necesitan acceso a cualquier otro directorio, debe proporcionar permisos de
Lectura y ejecución y/o Escritura en la cuenta de usuario del servicio NT Ser vice\MSSQLLaunchpad y
TODOS LOS PAQUETES DE APLICACIONES en este directorio.
Siga los pasos siguientes para conceder el acceso.
1. En el Explorador de archivos, haga clic con el botón derecho en la carpeta que quiera usar como directorio de
trabajo y seleccione Propiedades .
2. Seleccione Seguridad y haga clic en Editar... para cambiar los permisos.
3. Haga clic en Agregar... .
4. Asegúrese de que el valor de Desde esta ubicación sea el nombre del equipo local.
5. Escriba TODOS LOS PAQUETES DE APLICACIONES en Escriba los nombres de objeto que desea
seleccionar y haga clic en Comprobar nombres . Haga clic en OK .
6. Seleccione Leer y ejecutar en la columna Permitir .
7. Seleccione Escribir en la columna Permitir , si quiere conceder permisos de escritura.
8. Haga clic en Aceptar y en Aceptar .
Permisos de archivos de programa
Al igual que en las versiones anteriores, el SQLRUserGroup sigue proporcionando permisos de lectura y
ejecución en los archivos ejecutables de los directorios de SQL Server Binn , R_SERVICES y
PYTHON_SERVICES . En esta versión, el único miembro de SQLRUserGroup es la cuenta del servicio
SQL Server Launchpad. Cuando el servicio Launchpad inicia un entorno de ejecución de R o Python, el proceso
se ejecuta como servicio LaunchPad.
Autenticación implícita
Como anteriormente, sigue siendo necesaria una configuración adicional para la autenticación implícita en los
casos en los que el script o código tiene que volver a conectarse a SQL Server con autenticación de confianza
para recuperar datos o recursos. La configuración adicional implica la creación de un inicio de sesión de base de
datos para SQLRUserGroup , cuyo único miembro ahora es la única cuenta de servicio de SQL Server
Launchpad, en lugar de varias cuentas de trabajo. Para obtener más información sobre esta tarea, vea Agregar
SQLRUserGroup como usuario de base de datos.
Vea también
Instalación de SQL Server Machine Learning Services (Python y R) en Windows
Instalación de SQL Server Machine Learning Services (Python y R) en Linux
Instalación de SQL Server 2016 R Services
14/07/2021 • 11 minutes to read
NOTE
En SQL Server 2017 y versiones posteriores, R se incluye en Machine Learning Services junto con Python. Si quiere R y
tiene SQL Server 2017 o versiones posteriores, consulte Instalación de SQL Server Machine Learning Services para
agregar la característica.
IMPORTANT
Una vez finalizada la instalación, asegúrese de completar los pasos adicionales posteriores a la configuración que se
describen en este artículo. En estos pasos se incluye la habilitación de SQL Server para usar scripts externos y la adición de
cuentas necesarias para que SQL Server ejecute trabajos de R en su nombre. Normalmente, si se realizan cambios en la
configuración, es necesario reiniciar la instancia o el servicio Launchpad.
Ejecución de la configuración
En instalaciones locales, debe ejecutar el programa de instalación como administrador. Si instala SQL Server
desde un recurso compartido remoto, deberá usar una cuenta de dominio que tenga permisos de lectura y
ejecución para dicho recurso.
1. Inicie el asistente para la instalación de SQL Server 2016.
2. En la pestaña Instalación , seleccione Nueva instalación independiente de SQL Ser ver o agregar
características a una instalación existente .
Este paso requiere el reinicio del servidor. Puede posponer el reinicio hasta que se realice todo el trabajo de
configuración.
sp_configure
El valor de la propiedad, external scripts enabled , debería ser 0 en este momento. Esto se debe a que la
característica está desactivada de forma predeterminada. Un administrador debe habilitar explícitamente
la característica para poder ejecutar scripts de R.
3. Para habilitar la característica de scripting externo, ejecute la siguiente instrucción:
Reinicie el servicio.
Cuando se haya completado la instalación, reinicie el motor de base de datos antes de continuar con lo siguiente
para habilitar la ejecución de scripts.
Al reiniciar el servicio, también se reiniciará automáticamente el servicio SQL Server Launchpad relacionado.
Para reiniciar el servicio, puede hacer clic con el botón derecho en el comando Reiniciar de la instancia
en SSMS o emplear el Administrador de configuración de SQL Server.
Comprobar la instalación
Haga lo siguiente para comprobar que se están ejecutando todos los componentes que se usan para iniciar el
script externo.
1. En SQL Server Management Studio, abra una nueva ventana de consulta y ejecute el siguiente comando:
El script puede tardar un poco en ejecutarse la primera vez que se carga el tiempo de ejecución del script
externo. Los resultados deben tener un aspecto similar al siguiente:
H EL LO
Aplicación de actualizaciones
Se recomienda aplicar el último Service Pack y la última actualización acumulativa tanto en el motor de base de
datos como en los componentes de aprendizaje automático.
En los dispositivos conectados a Internet, las actualizaciones acumulativas suelen aplicarse a través de Windows
Update, pero también puede usar los pasos siguientes para las actualizaciones controladas. Al aplicar la
actualización para el motor de base de datos, el programa de instalación extrae las actualizaciones acumulativas
de las bibliotecas de R instaladas en la misma instancia.
En los servidores desconectados, se requieren pasos extra. Para obtener más información, consulte Instalación
en equipos sin acceso a Internet > Aplicación de actualizaciones acumulativas.
1. Comience con una instancia de línea base ya instalada: Versión inicial de SQL Server 2016,
SQL Server 2016 SP1 o SQL Server 2016 SP2.
2. Vaya a la lista de actualizaciones acumulativas: Actualizaciones más recientes de Microsoft SQL Server
3. Seleccione el Service Pack más reciente (si no está instalado todavía como instancia de línea de base) y la
actualización acumulativa. Se descarga un ejecutable que se extrae automáticamente.
4. Ejecute el programa de instalación. Acepte los términos de licencia y, en la página de selección de
características, revise las características para las que se aplican las actualizaciones acumulativas. Debería
ver todas las características instaladas para la instancia actual, incluido R Services. El programa de
instalación descarga los archivos CAB necesarios para actualizar todas las características.
5. Continúe con los pasos del asistente y acepte los términos de licencia para la distribuciones de R.
NOTE
La actualización acumulativa (CU) 14 y versiones posteriores para SQL Server 2016 SP2 incluye una versión más reciente
del entorno de ejecución de R. Para más información, consulte Cambio a la versión predeterminada del entorno de
ejecución del lenguaje.
Configuración adicional
Si el paso de comprobación de scripts externos se ha ejecutado correctamente, puede ejecutar comandos de R
desde SQL Server Management Studio, Azure Data Studio o cualquier otro cliente que pueda enviar
instrucciones T-SQL al servidor.
Si se produjo un error al ejecutar el comando, revise los pasos de configuración adicional de esta sección. Es
posible que tenga que crear otras configuraciones adicionales adecuadas para el servicio o la base de datos.
En el nivel de instancia, la configuración adicional podría incluir:
Configuración de firewall para SQL Server Machine Learning Services.
Habilitación de protocolos de red adicionales.
Habilitación de conexiones remotas.
Administración de cuotas de disco para evitar que los scripts externos ejecuten tareas que agoten el espacio
en disco.
NOTE
No se requieren todos los cambios enumerados y no es necesario ninguno de ellos. Los requisitos dependen del esquema
de seguridad, del lugar en el que se haya instalado SQL Server y de cómo se espera que los usuarios se conecten a la base
de datos y ejecuten scripts externos. Se pueden encontrar instrucciones de instalación adicionales aquí: Instalación de
SQL Server Machine Learning Services
Optimizaciones sugeridas
Puede que también le interese optimizar el servidor para admitir el aprendizaje automático con R o instalar
modelos previamente entrenados.
Adición de más cuentas profesionales
Si cree que puede hacer un uso intensivo de R, o si prevé que muchos usuarios ejecuten scripts al mismo
tiempo, puede aumentar el número de cuentas de trabajo que están asignadas al servicio Launchpad. Para
obtener más información, vea Escalar la ejecución simultánea de scripts externos en SQL Server Machine
Learning Services.
Pasos siguientes
Los desarrolladores de R pueden empezar con algunos ejemplos sencillos y conocer los aspectos básicos del
funcionamiento de R con SQL Server. Para conocer el siguiente paso, vea los vínculos siguientes:
Inicio rápido: Ejecutar R en T-SQL
Tutoriales de R para aprendizaje automático de SQL
Documentación del aprendizaje automático en SQL
Instalación sin conexión de SQL Server Machine
Learning Services (Python y R) en equipos aislados
sin acceso a Internet
14/07/2021 • 8 minutes to read
NOTE
SQL Server 2019 no tiene Service Packs. La versión inicial es la única línea base, con mantenimiento solo a través de
actualizaciones acumulativas.
NOTE
La característica de Java se incluye con los medios de instalación de SQL Server y no necesita un archivo CAB
independiente.
NOTE
SQL Server 2017 no tiene Service Packs. Es la primera versión de SQL Server que usa la versión inicial como única línea
base, con mantenimiento solo a través de las actualizaciones acumulativas.
Transferencia de archivos
Copie el medio de instalación de SQL Server (.iso o .cab) y los archivos CAB de análisis de base de datos en el
equipo de destino. Coloque los archivos CAB y el archivo del medio de instalación en la misma carpeta del
equipo de destino (por ejemplo, en la carpeta %TEMP% del usuario que realiza la instalación).
La carpeta %TEMP% es necesaria para los archivos CAB de Python. En cuanto a R, puede usar %TEMP% o
establecer el parámetro myrcachedirectory en la ruta de acceso del archivo CAB.
7. Continúe con los pasos del asistente y acepte los términos de licencia para las distribuciones de R y
Python. Durante la instalación se le pedirá que elija la ubicación de la carpeta que contiene los archivos
CAB actualizados.
Este paso requiere el reinicio del servidor. Si va a habilitar la ejecución de scripts, puede posponer el reinicio
hasta que se realice todo el trabajo de configuración.
Pasos siguientes
Para usar Machine Learning Services para ejecutar scripts de Python y R en la base de datos, consulte
Instalación de SQL Server Machine Learning Services.
Descargas de archivos CAB para la instalación sin
conexión de actualizaciones acumulativas de
SQL Server Machine Learning Services
14/07/2021 • 6 minutes to read
Prerrequisitos
Comience con una instalación de línea base. En SQL Server Machine Learning Services, la versión inicial es la
instalación de línea base.
Comience con una instalación de línea base. En SQL Server 2016 R Services, puede comenzar con la versión
inicial, SP1 o SP2.
También puede aplicar las actualizaciones acumulativas.
R Server SRS_9.4.7.958_1033.cab
R Server SRS_9.4.7.804_1033.cab
R Server SRS_9.4.7.717_1033.cab
R Server SRS_9.4.7.35_1033.cab
R Server SRS_9.4.7.25_1033.cab
Versión inicial
R Server SRS_9.4.7.25_1033.cab
R Server SRS_9.4.7.958_1033.cab
R Server SRS_9.2.0.800_1033.cab
R Server SRS_9.2.0.600_1033.cab
R Server SRS_9.2.0.400_1033.cab
R Server SRS_9.2.0.300_1033.cab
R Server SRS_9.2.0.100_1033.cab
REL EA SE C O M P O N EN T E VÍN C ULO DE DESC A RGA P RO B L EM A S T RATA DO S
Versión inicial
R Server SRS_9.2.0.24_1033.cab
Pasos siguientes
Aplicación de actualizaciones acumulativas en equipos sin acceso a Internet
Aplicación de actualizaciones acumulativas en equipos que tengan conectividad a Internet
Aplicación de actualizaciones acumulativas a un servidor independiente
Instalación de SQL Server Machine Learning
Services con R y Python mediante la línea de
comandos
14/07/2021 • 8 minutes to read
/IACCEPTROPENLICENSETERMS Indica que ha aceptado los términos de licencia para usar los
componentes de R de código abierto.
/IACCEPTPYTHONLICENSETERMS Indica que ha aceptado los términos de licencia para usar los
componentes de Python.
/IACCEPTROPENLICENSETERMS Indica que ha aceptado los términos de licencia para usar los
componentes de R de código abierto.
/IACCEPTPYTHONLICENSETERMS Indica que ha aceptado los términos de licencia para usar los
componentes de Python.
/IACCEPTROPENLICENSETERMS Indica que ha aceptado los términos de licencia para usar los
componentes de R de código abierto.
/IACCEPTPYTHONLICENSETERMS Indica que ha aceptado los términos de licencia para usar los
componentes de Python.
SQL Server Machine Learning Services: motor de base de datos y análisis avanzado con Python y R
Para una instalación simultánea de la instancia del motor de base de datos, proporcione el nombre de la
instancia y las credenciales de inicio de sesión de un administrador (Windows). Incluye características para la
instalación de componentes principales y de lenguaje, así como la aceptación de todos los términos de licencia.
Se trata del mismo comando, pero con un inicio de sesión de SQL Server en un motor de base de datos
mediante el uso de autenticación mixta.
Este ejemplo solo se aplica a Python, y muestra que se puede agregar un lenguaje si se omite una característica.
Instalación silenciosa
Una instalación silenciosa suprime la comprobación de las ubicaciones de los archivos .cab. Por este motivo, es
necesario que especifique la ubicación donde se van a desempaquetar los archivos .cab. En el caso de Python,
los archivos .cab deben estar ubicados en %TEMP*. Para R, puede establecer la ruta de acceso de la carpeta con
el directorio temporal.
Una vez finalizada la instalación, tiene un servidor, paquetes de Microsoft, distribuciones de código abierto de R
y Python, herramientas, ejemplos y scripts que forman parte de la distribución.
Para abrir una ventana de la consola de R, vaya a
\Program files\Microsoft SQL Server\150 (or 140/130)\R_SERVER\bin\x64 y haga doble clic en RGui.exe . ¿No está
familiarizado con R? Pruebe este tutorial: Comandos de R y funciones de RevoScaleR básicos: 25 ejemplos
comunes.
Para abrir un comando de Python, vaya a
\Program files\Microsoft SQL Server\150 (or 140)\PYTHON_SERVER\bin\x64 y haga doble clic en python.exe .
Pasos siguientes
Los desarrolladores de Python pueden aprender a usar Python con SQL Server con estos tutoriales:
Tutorial de Python: Predicción de alquileres de esquíes con regresión lineal en
SQL Server Machine Learning Services
Tutorial de Python: Clasificación de clientes por categorías mediante la agrupación en clústeres k-means con
SQL Server Machine Learning Services
Los desarrolladores de R pueden empezar con algunos ejemplos sencillos y conocer los aspectos básicos del
funcionamiento de R con SQL Server. Para conocer el siguiente paso, vea los vínculos siguientes:
Inicio rápido: Ejecutar R en T-SQL
Tutorial: Análisis en base de datos para desarrolladores de R
Instalación de modelos de aprendizaje automático
entrenados previamente en SQL Server
14/07/2021 • 6 minutes to read
F UN C IÓ N DE P Y T H O N
F UN C IÓ N DE R ( M IC RO SO F T M L ) ( M IC RO SO F T M L ) USO
Prerrequisitos
Los algoritmos de aprendizaje automático son de cálculo intensivo. Se recomienda 16 GB de RAM para cargas
de trabajo de baja a moderada, incluida la finalización de tutoriales con todos los datos de ejemplo.
Debe tener derechos de administrador en el equipo y SQL Server para agregar modelos previamente
entrenados.
Los scripts externos deben estar habilitados y el servicio SQL Server LaunchPad debe estar en ejecución. Las
instrucciones de instalación proporcionan los pasos para habilitar y comprobar estas capacidades.
El paquete MicrosoftML R o el paquete microsoftml de Python contienen los modelos entrenados previamente.
SQL Server Machine Learning Services incluye las versiones de ambos lenguajes de la biblioteca de aprendizaje
automático, por lo que se cumple este requisito previo sin necesidad de realizar ninguna acción por su parte.
Dado que las bibliotecas están presentes, puede usar el script de PowerShell que se describe en este artículo
para agregar los modelos entrenados previamente a estas bibliotecas.
El paquete MicrosoftML R contiene los modelos entrenados previamente.
SQL Server R Services, que solo admite R, no incluye el paquete MicrosoftML de serie. Para agregar
MicrosoftML, debe realizar una actualización de componentes. Una ventaja de la actualización de componentes
es que puede agregar simultáneamente los modelos entrenados previamente, lo que hace que no sea necesario
ejecutar el script de PowerShell. Sin embargo, si ya ha realizado la actualización pero ha perdido la adición de
los modelos previamente entrenados la primera vez, puede ejecutar el script de PowerShell como se describe en
este artículo. Funciona en ambas versiones de SQL Server. Antes de hacerlo, confirme que la biblioteca
MicrosoftML existe en C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library .
Para Python:
C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES\Lib\site-
packages\microsoftml\mxLibs
Salida
En una instancia predeterminada de SQL Server Machine Learning Services conectada a Internet con R y
Python, debería ver mensajes similares a los siguientes.
MSSQL14.MSSQLSERVER
Verifying R models [9.2.0.24]
Downloading R models [C:\Users\<user-name>\AppData\Local\Temp]
Installing R models [C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\]
Verifying Python models [9.2.0.24]
Installing Python models [C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES\]
PS C:\WINDOWS\system32>
Comprobar la instalación
En primer lugar, busque los nuevos archivos en la carpeta mxlibs. A continuación, ejecute el código de
demostración para confirmar que los modelos están instalados y funcionan.
Pasos de comprobación de R
1. Inicie RGUI. EXE en C:\Archivos de programa\Microsoft SQL
Server\MSSQL14.MSSQLSERVER\R_SERVICES\bin\x64.
2. Pegue el siguiente script de R en el símbolo del sistema.
3. Pulse Entrar para ver las puntuaciones de opinión. El resultado debería ser el siguiente:
> sentimentScores
Review SentimentScore
1 I really did not like the taste of it 0.4617899
2 It was surprisingly quite good! 0.9601924
3 I will never ever ever go to that place again!! 0.3103435
PredictedRating
1 BLAH
2 AWESOMENESS
3 BLAH
3. Presione Entrar para imprimir las puntuaciones. El resultado debería ser el siguiente:
>>> print(sentiment_scores)
review scores eval
0 I really did not like the taste of it 0.461790 BLAH
1 It was surprisingly quite good! 0.960192 AWESOMENESS
2 I will never ever ever go to that place again!! 0.310344 BLAH
>>>
NOTE
Si se produce un error en los scripts de demostración, compruebe primero la ubicación del archivo. En los sistemas que
tienen varias instancias de SQL Server, o para las instancias que se ejecutan en paralelo con versiones independientes, es
posible que el script de instalación no lea el entorno y coloque los archivos en la ubicación equivocada. Normalmente, la
copia manual de los archivos en la carpeta mxlib correcta corrige el problema.
Investigación y recursos
Actualmente, los modelos que están disponibles son modelos de red neuronal profunda (DNN) para el análisis
de sentimiento y la clasificación de imágenes. Todos los modelos entrenados previamente se entrenaron
mediante el uso del kit de herramientas de red computacional de Microsoft o CNTK .
La configuración de cada red se basó en las siguientes implementaciones de referencia:
ResNet-18
ResNet-50
ResNet-101
AlexNet
Para obtener más información sobre los algoritmos que se usan en estos modelos de aprendizaje profundo y
cómo se implementan y se entrenan con CNTK, vea estos artículos:
El algoritmo de los investigadores de Microsoft marca un hito en el reto ImageNet
El kit de herramientas de red computacional de Microsoft ofrece un rendimiento de cálculo de
aprendizaje profundo distribuido más eficaz
Consulte también
SQL Server Machine Learning Services
Actualización de los componentes de R y Python en instancias de SQL Server
Paquete MicrosoftML para R
Paquete microsoftml para Python
Instalación de un entorno de ejecución
personalizado de Python para SQL Server
14/07/2021 • 15 minutes to read
Requisitos previos
Antes de instalar un entorno de ejecución personalizado de Python, instale lo siguiente:
Si usa una instancia de SQL Server existente, instale la actualización acumulativa (CU) 3 o posterior para
SQL Server 2019.
Siga los pasos que aparecen a continuación para instalar Extensiones de lenguaje de SQL Server, que se usa
para el entorno de ejecución personalizado de Python.
1. Inicie el asistente para la instalación de SQL Server 2019.
2. En la pestaña Instalación , seleccione Nueva instalación independiente de SQL Ser ver o agregar
características a una instalación existente .
3. En la página Selección de características , seleccione estas opciones:
Ser vicios de Motor de base de datos
Para usar las extensiones de lenguaje con SQL Server, debe instalar una instancia del motor de
base de datos. Puede usar una instancia nueva o una existente.
Machine Learning Ser vices y extensiones de lenguaje
Seleccione Machine Learning Ser vices y extensiones de lenguaje . No seleccione Python, ya
que va a instalar el entorno de ejecución de Python personalizado más adelante.
4. En la página Listo para instalar , confirme que estas selecciones se han realizado y haga clic en
Instalar .
Servicios de Motor de base de datos
Machine Learning Services y extensiones de lenguaje
5. Una vez que se completa la instalación, reinicie la máquina si se le pide hacerlo.
IMPORTANT
Si instala una instancia nueva de SQL Server 2019 con Extensiones de lenguaje, instale la actualización acumulativa (CU) 3
o posterior antes de ir al paso siguiente.
Instalar Python
La extensión del lenguaje Python que se usa para el entorno de ejecución de Python actualmente admite solo
Python 3.7. Si quiere usar una versión distinta de Python, siga la instrucción que aparece en el repositorio de
GitHub sobre Extensiones de lenguaje de Python para modificar y recompilar la extensión.
1. Descargue Python 3.7 para Windows y ejecute el programa de instalación en el servidor.
2. Seleccione Agregar Python 3.7 a la ruta de acceso y, después, Personalizar instalación .
3. En Características opcionales , deje los valores predeterminados y seleccione Siguiente .
4. Seleccione Instalar para todos los usuarios y anote la ubicación de instalación.
5. Seleccione Instalar .
Instalación de pandas
Instale el paquete pandas para Python desde un símbolo del sistema con privilegios elevados (Ejecutar como
administrador):
El comando anterior concede permisos al SID del equipo S-1-15-2-1 , que es equivalente a TODOS LOS
PAQUETES DE APLICACIONES en una versión en inglés de Windows. Como alternativa, puede usar
icacls "C:\Program Files\Python37" /grant "ALL APPLICATION PACKAGES":(OI)(CI)RX /T en una versión en
inglés de Windows.
NOTE
Python es una palabra reservada y no se puede usar como nombre de un lenguaje externo nuevo. Use otro
nombre. Por ejemplo, la instrucción anterior usa myPython .
Requisitos previos
Antes de instalar un entorno de ejecución personalizado de Python, instale lo siguiente:
Instale SQL Server 2019 para Linux. Puede instalar SQL Server en Red Hat Enterprise Linux (RHEL),
SUSE Linux Enterprise Server (SLES) y Ubuntu. Para más información, consulte la guía de instalación de
SQL Server en Linux.
Instale la actualización acumulativa (CU) 3 o posterior para SQL Server 2019. Siga estos pasos:
1. Configure los repositorios para las actualizaciones acumulativas. Para más información, consulte
Configuración de repositorios para instalar y actualizar SQL Server en Linux.
2. Actualice el paquete mssql-ser ver a la actualización acumulativa más reciente. Para más
información, consulte la sección de actualización de SQL Server en la guía de instalación de
SQL Server en Linux.
Ejecute los comandos siguientes para instalar Extensiones de lenguaje de SQL Server en Ubuntu Linux, que se
usa para el entorno de ejecución personalizado de Python.
1. Si es posible, ejecute este comando para actualizar los paquetes en el sistema antes de la instalación.
2. Ubuntu podría no tener la opción de transporte de apt para https. Para realizar la instalación, ejecute este
comando.
Si compiló su propia versión de Python 3.7, use los comandos siguientes para que SQL Server sepa de su
instalación personalizada.
Incorporación de una variable de entorno
Primero, edite el servicio mssql-launchpadd para agregar la variable de entorno PYTHONHOME al archivo
/etc/systemd/system/mssql-launchpadd.service.d/override.conf .
[Service]
Environment="PYTHONHOME=<path to the python3.7 lib>"
sudo vi /etc/ld.so.conf.d/custom-python.conf
sudo ldconfig
ldd <path to the python3.7 lib>/libpython3.7m.so.1.0
Reinicio de mssql-launchpadd
Ejecute el comando siguiente para reiniciar mssql-launchpadd .
Ejecute la instrucción para cada base de datos en la que quiera usar la extensión del lenguaje Python.
NOTE
Python es una palabra reservada y no se puede usar como nombre de un lenguaje externo nuevo. Use otro
nombre. Por ejemplo, la instrucción anterior usa myPython .
Requisitos previos
Antes de instalar un entorno de ejecución personalizado de Python, instale lo siguiente:
Instale SQL Server 2019 para Linux. Puede instalar SQL Server en Red Hat Enterprise Linux (RHEL),
SUSE Linux Enterprise Server (SLES) y Ubuntu. Para más información, consulte la guía de instalación de
SQL Server en Linux.
Instale la actualización acumulativa (CU) 3 o posterior para SQL Server 2019. Siga estos pasos:
1. Configure los repositorios para las actualizaciones acumulativas. Para más información, consulte
Configuración de repositorios para instalar y actualizar SQL Server en Linux.
2. Actualice el paquete mssql-ser ver a la actualización acumulativa más reciente. Para más
información, consulte la sección de actualización de SQL Server en la guía de instalación de
SQL Server en Linux.
Ejecute el comando siguiente para instalar Extensiones de lenguaje de SQL Server en Red Hat Enterprise Linux
(RHEL), que se usa para el entorno de ejecución personalizado de Python.
cd /usr/src
wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz
tar xzf Python-3.7.9.tgz
cd Python-3.7.9
./configure --enable-optimizations --prefix=/usr
make altinstall
Si compiló su propia versión de Python 3.7, use los comandos siguientes para que SQL Server sepa de su
instalación personalizada.
Incorporación de una variable de entorno
Primero, edite el servicio mssql-launchpadd para agregar la variable de entorno PYTHONHOME al archivo
/etc/systemd/system/mssql-launchpadd.service.d/override.conf .
[Service]
Environment="PYTHONHOME=<path to the python3.7 lib>"
sudo vi /etc/ld.so.conf.d/custom-python.conf
sudo ldconfig
ldd <path to the python3.7 lib>/libpython3.7m.so.1.0
Reinicio de mssql-launchpadd
Ejecute el comando siguiente para reiniciar mssql-launchpadd .
sudo systemctl restart mssql-launchpadd
Ejecute la instrucción para cada base de datos en la que quiera usar la extensión del lenguaje Python.
NOTE
Python es una palabra reservada y no se puede usar como nombre de un lenguaje externo nuevo. Use otro
nombre. Por ejemplo, la instrucción anterior usa myPython .
Requisitos previos
Antes de instalar un entorno de ejecución personalizado de Python, instale lo siguiente:
Instale SQL Server 2019 para Linux. Puede instalar SQL Server en Red Hat Enterprise Linux (RHEL),
SUSE Linux Enterprise Server (SLES) y Ubuntu. Para más información, consulte la guía de instalación de
SQL Server en Linux.
Instale la actualización acumulativa (CU) 3 o posterior para SQL Server 2019. Siga estos pasos:
1. Configure los repositorios para las actualizaciones acumulativas. Para más información, consulte
Configuración de repositorios para instalar y actualizar SQL Server en Linux.
2. Actualice el paquete mssql-ser ver a la actualización acumulativa más reciente. Para más
información, consulte la sección de actualización de SQL Server en la guía de instalación de
SQL Server en Linux.
Ejecute el comando siguiente para instalar Extensiones de lenguaje de SQL Server en SUSE Linux Enterprise
Server (SLES), que se usa para el entorno de ejecución personalizado de Python.
Si compiló su propia versión de Python 3.7, use los comandos siguientes para que SQL Server sepa de su
instalación personalizada.
Incorporación de una variable de entorno
Primero, edite el servicio mssql-launchpadd para agregar la variable de entorno PYTHONHOME al archivo
/etc/systemd/system/mssql-launchpadd.service.d/override.conf .
[Service]
Environment="PYTHONHOME=<path to the python3.7 lib>"
sudo vi /etc/ld.so.conf.d/custom-python.conf
sudo ldconfig
ldd <path to the python3.7 lib>/libpython3.7m.so.1.0
Reinicio de mssql-launchpadd
Ejecute el comando siguiente para reiniciar mssql-launchpadd .
NOTE
Python es una palabra reservada y no se puede usar como nombre de un lenguaje externo nuevo. Use otro
nombre. Por ejemplo, la instrucción anterior usa myPython .
Comprobación de la instalación
Use el script de SQL siguiente para comprobar la instalación y la funcionalidad del entorno de ejecución
personalizado de Python.
EXEC sp_execute_external_script
@language =N'myPython',
@script=N'
import sys
print(sys.path)
print(sys.version)
print(sys.executable)'
Pasos siguientes
Instalación de un entorno de ejecución personalizado de R para SQL Server
Marco de extensibilidad en SQL Server
Introducción a las extensiones de lenguaje
Instalación de un entorno de ejecución
personalizado de R para SQL Server
14/07/2021 • 17 minutes to read
Requisitos previos
Antes de instalar un entorno de ejecución personalizado de R, instale lo siguiente:
Si usa una instancia de SQL Server existente, instale la actualización acumulativa (CU) 3 o posterior para
SQL Server 2019.
Siga los pasos que aparecen a continuación para instalar Extensiones de lenguaje de SQL Server, que se usa
para el entorno de ejecución personalizado de R.
1. Inicie el asistente para la instalación de SQL Server 2019.
2. En la pestaña Instalación , seleccione Nueva instalación independiente de SQL Ser ver o agregar
características a una instalación existente .
3. En la página Selección de características , seleccione estas opciones:
Ser vicios de Motor de base de datos
Para usar las extensiones de lenguaje con SQL Server, debe instalar una instancia del motor de
base de datos. Puede usar una instancia nueva o una existente.
Machine Learning Ser vices y extensiones de lenguaje
Seleccione Machine Learning Ser vices y extensiones de lenguaje . No seleccione R, ya que
va a instalar el entorno de ejecución de R personalizado más adelante.
4. En la página Listo para instalar , confirme que estas selecciones se han realizado y haga clic en
Instalar .
Servicios de Motor de base de datos
Machine Learning Services y extensiones de lenguaje
5. Una vez que se completa la instalación, reinicie la máquina si se le pide hacerlo.
IMPORTANT
Si instala una instancia nueva de SQL Server 2019 con Extensiones de lenguaje, instale la actualización acumulativa (CU) 3
o posterior antes de ir al paso siguiente.
Instalar R
Descargue e instale la versión de R que utilizará como el entorno de ejecución personalizado. Se admite la
versión 3.3 o posterior de R.
1. Descargue la versión 3.3 o posterior de R.
2. Ejecute el programa de instalación de R.
3. Anote la ruta de acceso donde se instala R. Por ejemplo, en este artículo es C:\Program Files\R\R-4.0.3 .
Actualización de las variables de entorno del sistema
Siga estos pasos para modificar las variables de entorno del sistema PATH .
1. En el cuadro de búsqueda de Windows, busque Editar las variables de entorno del sistema y ábralo.
2. En Opciones avanzadas , seleccione Variables de entorno .
3. Modifique la variable de entorno del sistema PATH .
Seleccione PATH y haga clic en Editar .
Seleccione Nueva y agregue la ruta de acceso a la carpeta \bin\x64 en la ruta de instalación de R. Por
ejemplo, C:\Program Files\R\R-4.0.3\bin\x64 .
"C:\Program Files\R\R-4.0.3\bin\R.exe"
3. Ejecute el script siguiente para instalar el paquete Rcpp en la carpeta \library de la ruta de instalación
de R. Por ejemplo, C:\Program Files\R\R-4.0.3\library .
Ejecute los comandos icacls siguientes desde un nuevo símbolo del sistema con privilegios elevados para
conceder acceso de LECTURA Y EJECUCIÓN al nombre de usuario del ser vicio SQL Ser ver Launchpad
y al SID S-1-15-2-1 (ALL APPLICATION PACKAGES ). El nombre de usuario del servicio Launchpad tiene el
formato NT Service\MSSQLLAUNCHPAD$INSTANCENAME , donde INSTANCENAME es el nombre de la instancia de
SQL Server.
Estos comandos concederán acceso de forma recursiva a todos los archivos y carpetas en la ruta de acceso de
directorio especificada.
1. Conceda permisos al nombre de usuario del ser vicio SQL Ser ver Launchpad para la ruta de
instalación de R. Por ejemplo, C:\Program Files\R\R-4.0.3 .
El comando anterior concede permisos al SID del equipo S-1-15-2-1 , que es equivalente a TODOS LOS
PAQUETES DE APLICACIONES en una versión en inglés de Windows. Como alternativa, puede usar
icacls "C:\Program Files\R\R-4.0.3" /grant "ALL APPLICATION PACKAGES":(OI)(CI)RX /T en una versión en
inglés de Windows.
Ejecute la instrucción para cada base de datos en la que quiera usar la extensión del lenguaje R.
NOTE
R es una palabra reservada y no se puede usar como nombre de un lenguaje externo nuevo. Use otro nombre.
Por ejemplo, en la instrucción anterior se usa myR.
Requisitos previos
Antes de instalar un entorno de ejecución personalizado de R, instale lo siguiente:
Instale SQL Server 2019 para Linux. Puede instalar SQL Server en Red Hat Enterprise Linux (RHEL), la
versión 12 de SUSE Linux Enterprise Server (SLES) y Ubuntu. Para más información, consulte la guía de
instalación de SQL Server en Linux.
Instale la actualización acumulativa (CU) 3 o posterior para SQL Server 2019. Siga estos pasos:
1. Configure los repositorios para las actualizaciones acumulativas. Para más información, consulte
Configuración de repositorios para instalar y actualizar SQL Server en Linux.
2. Actualice el paquete mssql-ser ver a la actualización acumulativa más reciente. Para más
información, consulte la sección de actualización de SQL Server en la guía de instalación de
SQL Server en Linux.
Ejecute los comandos siguientes para instalar Extensiones de lenguaje de SQL Server en Ubuntu Linux, que se
usa para el entorno de ejecución personalizado de R.
1. Si es posible, ejecute este comando para actualizar los paquetes en el sistema antes de la instalación.
Instalar R
1. Si ha instalado Machine Learning Services, R ya está instalado en /opt/microsoft/ropen/3.5.2/lib64/R . Si
quiere seguir usando esta ruta de acceso como valor de R_HOME, puede omitir este paso.
Si desea usar otro entorno de ejecución de R, primero debe eliminar microsoft-r-open-mro antes de
continuar con la instalación de una nueva versión.
2. Instale R (3.3 o una versión posterior) para Ubuntu. De forma predeterminada, R se instala en /usr/lib/R .
Esta ruta de acceso es R_HOME . Si instala R en otra ubicación, anote esa ruta de acceso como R_HOME .
A continuación se muestran instrucciones de ejemplo para Ubuntu. Cambie la dirección URL del
repositorio siguiente para su versión de R.
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
sudo apt-get --no-install-recommends -y install curl zip unzip apt-transport-https libstdc++6
# Install R runtime.
#
sudo apt-get -y install r-base-core
Instalación personalizada de R
NOTE
Si ha instalado R en la ubicación predeterminada de /usr/lib/R, puede omitir esta sección y pasar a Instalación del
paquete Rcpp.
sudo vi /etc/ld.so.conf.d/custom-r.conf
2. En el archivo que se abre, agregue la ruta de acceso a libR.so desde la instalación personalizada de R.
sudo ldconfig
ldd <path to the R lib>/libR.so
sudo ${R_HOME}/bin/R
Ejecute la instrucción para cada base de datos en la que quiera usar la extensión del lenguaje R.
NOTE
R es una palabra reservada y no se puede usar como nombre de un lenguaje externo nuevo. Use otro nombre.
Por ejemplo, en la instrucción anterior se usa myR.
Requisitos previos
Antes de instalar un entorno de ejecución personalizado de R, instale lo siguiente:
Instale SQL Server 2019 para Linux. Puede instalar SQL Server en Red Hat Enterprise Linux (RHEL), la
versión 12 de SUSE Linux Enterprise Server (SLES) y Ubuntu. Para más información, consulte la guía de
instalación de SQL Server en Linux.
Instale la actualización acumulativa (CU) 3 o posterior para SQL Server 2019. Siga estos pasos:
1. Configure los repositorios para las actualizaciones acumulativas. Para más información, consulte
Configuración de repositorios para instalar y actualizar SQL Server en Linux.
2. Actualice el paquete mssql-ser ver a la actualización acumulativa más reciente. Para más
información, consulte la sección de actualización de SQL Server en la guía de instalación de
SQL Server en Linux.
RExtension requiere GLIBCXX_3.4.20. Asegúrese de que la versión de libstdc++.so.6 en la instalación de
Red Hat Enterprise Linux (RHEL) lo proporciona.
Ejecute el comando siguiente para instalar Extensiones de lenguaje de SQL Server en Red Hat Enterprise Linux
(RHEL), que se usa para el entorno de ejecución personalizado de R.
# Install as root or sudo
sudo yum install mssql-server-extensibility
Instalar R
1. Si ha instalado Machine Learning Services, R ya está instalado en /opt/microsoft/ropen/3.5.2/lib64/R . Si
quiere seguir usando esta ruta de acceso como valor de R_HOME, puede omitir este paso.
Si desea usar otro entorno de ejecución de R, primero debe eliminar microsoft-r-open-mro antes de
continuar con la instalación de una nueva versión.
2. Instale R (3.3 o una versión posterior) para Red Hat Enterprise Linux (RHEL). De forma predeterminada, R
se instala en /usr/lib64/R . Esta ruta de acceso es R_HOME . Si instala R en otra ubicación, anote esa ruta
de acceso como R_HOME .
Instalación personalizada de R
NOTE
Si ha instalado R en la ubicación predeterminada de /usr/lib/R, puede omitir esta sección y pasar a Instalación del
paquete Rcpp.
[Service]
Environment="R_HOME=<path to R>"
sudo vi /etc/ld.so.conf.d/custom-r.conf
2. En el archivo que se abre, agregue la ruta de acceso a libR.so desde la instalación personalizada de R.
<path to the R lib>
sudo ldconfig
ldd <path to the R lib>/libR.so
sudo ${R_HOME}/bin/R
Ejecute la instrucción para cada base de datos en la que quiera usar la extensión del lenguaje R.
NOTE
R es una palabra reservada y no se puede usar como nombre de un lenguaje externo nuevo. Use otro nombre.
Por ejemplo, en la instrucción anterior se usa myR.
Requisitos previos
Antes de instalar un entorno de ejecución personalizado de R, instale lo siguiente:
Instale SQL Server 2019 para Linux. Puede instalar SQL Server en Red Hat Enterprise Linux (RHEL), la
versión 12 de SUSE Linux Enterprise Server (SLES) y Ubuntu. Para más información, consulte la guía de
instalación de SQL Server en Linux.
Instale la actualización acumulativa (CU) 3 o posterior para SQL Server 2019. Siga estos pasos:
1. Configure los repositorios para las actualizaciones acumulativas. Para más información, consulte
Configuración de repositorios para instalar y actualizar SQL Server en Linux.
2. Actualice el paquete mssql-ser ver a la actualización acumulativa más reciente. Para más
información, consulte la sección de actualización de SQL Server en la guía de instalación de
SQL Server en Linux.
Ejecute el comando siguiente para instalar Extensiones de lenguaje de SQL Server en SUSE Linux Enterprise
Server (SLES), que se usa para el entorno de ejecución personalizado de R.
Instalar R
1. Si ha instalado Machine Learning Services, R ya está instalado en /opt/microsoft/ropen/3.5.2/lib64/R . Si
quiere seguir usando esta ruta de acceso como valor de R_HOME, puede omitir este paso.
Si desea usar otro entorno de ejecución de R, primero debe eliminar microsoft-r-open-mro antes de
continuar con la instalación de una nueva versión.
2. Instale R (3.3 o una versión posterior) para SUSE Linux Enterprise Server (SLES). De forma
predeterminada, R se instala en /usr/lib64/R . Esta ruta de acceso es R_HOME . Si instala R en otra
ubicación, anote esa ruta de acceso como R_HOME .
Para instalar R, siga estos pasos:
sudo zypper ar -f
http://download.opensuse.org/repositories/devel:/languages:/R:/patched/openSUSE_12.3/ R-patched
sudo zypper --gpg-auto-import-keys ref
sudo zypper install R-core-libs R-core R-core-doc R-patched
Puede omitir las advertencias de R-tcltk-3.6.1 , a menos que necesite este paquete.
Instalación de gcc-c++
Instale gcc-c++ en SUSE Linux Enterprise Server (SLES). Se usa para Rcpp , que se instala más adelante.
Instalación personalizada de R
NOTE
Si ha instalado R en la ubicación predeterminada de /usr/lib/R, puede omitir esta sección y pasar a Instalación del
paquete Rcpp.
[Service]
Environment="R_HOME=<path to R>"
sudo vi /etc/ld.so.conf.d/custom-r.conf
2. En el archivo que se abre, agregue la ruta de acceso a libR.so desde la instalación personalizada de R.
sudo ldconfig
ldd <path to the R lib>/libR.so
sudo ${R_HOME}/bin/R
Ejecute la instrucción para cada base de datos en la que quiera usar la extensión del lenguaje R.
NOTE
R es una palabra reservada y no se puede usar como nombre de un lenguaje externo nuevo. Use otro nombre.
Por ejemplo, en la instrucción anterior se usa myR.
Comprobación de la instalación
Use el script de SQL siguiente para comprobar la instalación y la funcionalidad del runtime personalizado de
Python.
EXEC sp_execute_external_script
@language =N'myR',
@script=N'
print(R.home());
print(file.path(R.home("bin"), "R"));
print(R.version);
print("Hello RExtension!");'
Problemas conocidos
Si usa el entorno de ejecución de R que se proporciona como parte de SQL Server Machine Learning Services
estableciendo R_HOME en C:\Program Files\Microsoft SQL Server\MSSQL15.<INSTANCE_NAME>\R_SERVICES al registrar
la extensión de lenguaje, es posible que se encuentre con el siguiente error al ejecutar cualquier script de R
personalizado externo con sp_execute_external_script.
Error: cons memory exhausted (limit reached?) (Error: se ha agotado la memoria de la operación "cons" [¿se ha
llegado al límite?])
Para solucionar este problema:
1. Establezca la variable de entorno R_NSIZE que indica el número de objetos de tamaño fijo ( cons cells ) en
un valor razonable, por ejemplo, 200000 .
2. Reinicie el servicio Launchpad y vuelva a intentar la ejecución del script.
Problemas conocidos
Si libstdc++.so.6 no es la versión correcta, verá este error:
Exthost: Load extension failed /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by
/home/mssql_satellite/externallanguagessandboxpath/libRExtension.so.1.1) (Exthost: Error al cargar la extensión
/lib64/libstdc++.so.6: no se encontró la versión "GLIBCXX_3.4.20" (necesaria para
/home/mssql_satellite/externallanguagessandboxpath/libRExtension.so.1.1))
Pasos siguientes
Instalación de un entorno de ejecución personalizado de Python para SQL Server
Marco de extensibilidad en SQL Server
Introducción a las extensiones de lenguaje
Cambio de la versión predeterminada del entorno
de ejecución del lenguaje R o Python
14/07/2021 • 5 minutes to read
VERSIÓ N DEL
VERSIO N ES DEL EN TO RN O DE
VERSIÓ N DE SQ L A C T UA L IZ A C IÓ N EN TO RN O DE E JEC UC IÓ N DE
SERVER SERVIC IO A C UM UL A DA E JEC UC IÓ N DE R PYT H ON
SQL Server 2017 Machine Learning CU22 y versiones 3.3.3 y 3.5.2 3.5.2 y 3.7.2
Services posteriores
Requisitos previos
Debe instalar una actualización acumulativa (CU) para cambiar la versión predeterminada del entorno de
ejecución del lenguaje R o Python:
SQL Ser ver 2016: actualización acumulativa (CU) 14 de Service Pack (SP) 2 o posterior
SQL Ser ver 2017: actualización acumulativa (CU) 22 o posterior
Para descargar la actualización acumulativa más reciente, consulte las últimas actualizaciones de
Microsoft SQL Server.
NOTE
Si integra la actualización acumulativa con una nueva instalación de SQL Server, solo se instalarán las versiones más
recientes del entorno de ejecución de R y Python.
Cada instancia de SQL usa una de estas versiones como versión predeterminada de R. Puede cambiar la versión
predeterminada mediante la utilidad de línea de comandos RegisterRext.exe . La utilidad se encuentra en la
carpeta R en cada instancia de SQL:
<Ruta de acceso de instancia de SQL> \R_SERVICES.n.n\library\RevoScaleR\rxLibs\x64\RegisterRext.exe
NOTE
La funcionalidad descrita en este artículo solo está disponible con la copia de RegisterRext.exe incluida en las CU de
SQL. No use la copia incluida con la instalación de SQL original.
Para cambiar la versión del entorno de ejecución de R, pase los siguientes argumentos de la línea de comandos
a RegisterRext.exe :
/configure -obligatorio, especifica que está configurando la versión predeterminada de R.
/instance: <nombre de instancia> : opcional, la instancia de que desea configurar. Si no se especifica, se
configura la instancia predeterminada.
/rhome: <Ruta de acceso a la carpeta R_SERVICES[n.n]> : opcional, ruta de acceso a la carpeta de la
versión del entorno de ejecución que desea establecer como la versión predeterminada de R.
Si no especifica /rhome, la ruta de acceso configurada es la ruta de acceso en la que se encuentra
RegisterRext.exe .
Ejemplos
A continuación se muestran ejemplos de cómo cambiar la versión del tiempo de ejecución de R en
SQL Server 2016 y 2017.
Cambio de la versión del entorno de ejecución de R en SQL Server 2016
Por ejemplo, para configurar R 3.5 como la versión predeterminada de R para la instancia MSSQLSERVER01 en
SQL Server 2016:
En estos ejemplos, no es necesario incluir el argumento /rhome , ya que se está especificando la misma carpeta
en la que se encuentra RegisterRext.exe .
Cambio de la versión del entorno de ejecución de Python
Si ha instalado CU22 o posterior para SQL Server 2017, puede tener varias versiones de Python en una
instancia de SQL. Cada versión se encuentra en una subcarpeta de la carpeta de la instancia con el nombre
PYTHON_SERVICES. <major> . <minor> (es posible que la carpeta de la instalación original no tenga un número
de versión anexado al nombre de la carpeta).
Por ejemplo, si instala una CU que contiene Python 3.7, se crea una nueva carpeta PYTHON_SERVICES :
C:\Program Files\Microsoft SQL Server\MSSQL14.<INSTANCE_NAME>\PYTHON_SERVICES.3.7
Cada instancia de SQL usa una de estas versiones como la versión predeterminada de Python. Puede cambiar la
versión predeterminada mediante la utilidad de la línea de comandos RegisterRExt.exe . La utilidad se
encuentra en las carpetas de Python en cada instancia de SQL:
<Ruta de acceso de instancia de SQL>
\PYTHON_SERVICES.n.n\Lib\site-packages\revoscalepy\rxLibs\RegisterRExt.exe
NOTE
La funcionalidad descrita en este artículo solo está disponible con la copia de RegisterRExt.exe incluida en las CU de
SQL. No use la copia incluida con la instalación de SQL original.
Para cambiar la versión del entorno de ejecución de Python, pase los siguientes argumentos de la línea de
comandos a RegisterRext.exe :
/configure -obligatorio, especifica que está configurando la versión predeterminada de Python.
/python : especifica que está configurando la versión predeterminada de Python. Opcional si se especifica
/pythonhome .
En este ejemplo, no es necesario incluir el argumento /pythonhome , ya que se está especificando la misma
carpeta en la que se encuentra RegisterRext.exe .
¿Seguro que desea eliminar permanentemente el entorno de ejecución determinado junto con todos los
paquetes instalados en él? [Sí(Y)/No(N)/Predeterminado(Sí)]:
Para confirmar, responda Y o presione Entrar. Como alternativa, puede omitir este mensaje pasando /y o
/Yes junto con la opción /cleanup .
NOTE
Puede quitar una versión solo si no está configurada como predeterminada y no se usa actualmente para ejecutar
RegisterRext.exe .
Pasos siguientes
Obtención de información de paquetes de R
Obtención de información de paquetes de Python
Instalación de paquetes con herramientas de R
Instalación de paquetes con las herramientas de Python
Actualización del entorno de ejecución de Python y
R con enlace en SQL Server Machine Learning
Services
14/07/2021 • 13 minutes to read
IMPORTANT
La compatibilidad con Machine Learning Server (anteriormente conocido como R Server) finalizará el 1 de julio de 2022.
Para obtener más información, consulte ¿Qué sucederá con Machine Learning Server?
En este artículo se describe cómo usar un proceso de instalación llamado enlace para actualizar los entornos de
ejecución de R o Python en SQL Server 2016 R Services o SQL Server 2017 Machine Learning Services. Puede
obtener las versiones más recientes de Python y R enlazando a Microsoft Machine Learning Server.
IMPORTANT
En este artículo se describe un método anterior para actualizar los entornos de ejecución de R y Python, denominado
enlace. Si ha instalado actualización acumulativa (CU) 14 o posterior para SQL Ser ver 2016 Ser vices Pack
(SP) 2 o la actualización acumulativa (CU) 22 o posterior para SQL Ser ver 2017 , consulte cómo cambiar el
entorno de ejecución del lenguaje R o Python predeterminado a una versión posterior en su lugar.
¿Qué es un enlace?
El enlace es un proceso de instalación que reemplaza el contenido de las carpetas R_SERVICES y
PYTHON_SERVICES por archivos ejecutables, bibliotecas y herramientas más recientes de Microsoft Machine
Learning Server.
Los componentes cargados que se incluyen con el modelo de servicio han cambiado. Las actualizaciones del
servicio coinciden con la escala de tiempo de soporte técnico para Microsoft R Server y Machine Learning
Server en el ciclo de vida moderno.
A excepción de las versiones de los componentes y las actualizaciones del servicio, el enlace no cambia los
aspectos básicos de la instalación:
La integración de Python y R sigue formando parte de una instancia del motor de base de datos.
La concesión de licencias permanece igual (no hay costos adicionales asociados al enlace).
Las directivas de soporte técnico de SQL Server permanecen para el motor de base de datos.
En el resto de este artículo se explica el mecanismo de enlace y su funcionamiento en cada versión de
SQL Server.
NOTE
El enlace solo se aplica a instancias en base de datos que estén enlazadas a instancias de SQL Server. En este caso, el
enlace no es necesario para una instalación independiente.
Consideraciones sobre el enlace de SQL Ser ver 2016
Para los clientes de SQL Server 2016 R Services, el enlace proporciona:
Paquetes de R actualizados.
Nuevos paquetes que no forman parte de la instalación original (MicrosoftML)
Modelos de aprendizaje automático entrenados previamente para el análisis de opiniones y la detección de
imágenes.
Todo los enlaces pueden recibir nuevas actualizaciones en cada nueva versión principal y secundaria de
Microsoft Machine Learning Server.
Mapa de versiones
Las tablas siguientes son mapas de versiones. Cada mapa muestra las versiones de los paquetes en todas las
versiones. Puede revisar las rutas de actualización al enlazar a Microsoft Machine Learning Server (conocido
anteriormente como R Server, antes de la adición de compatibilidad con Python a partir de Machine Learning
Server 9.2.1).
El enlace no garantiza la versión más reciente de R o Anaconda. Al enlazar con Microsoft Machine Learning
Server, se obtiene la versión de R o Python que se instala con el programa de instalación, que podría no ser la
versión más reciente disponible en el sitio web.
SQL Ser ver 2016 R Ser vices
M A C H IN E M A C H IN E M A C H IN E
C O M P O N EN T VERSIÓ N R L EA RN IN G L EA RN IN G L EA RN IN G
E IN IC IA L SERVER 9. 0. 1 R SERVER 9. 1 SERVER 9. 2. 1 SERVER 9. 3 SERVER 9. 4. 7
M A C H IN E L EA RN IN G M A C H IN E L EA RN IN G
C O M P O N EN T E VERSIÓ N IN IC IA L SERVER 9. 3 SERVER 9. 4. 7
El enlace solo se aplica a las características de Python y R. Los paquetes de código abierto para Python y R
constan de:
Anaconda
Microsoft R Open
Paquetes propios RevoScaleR
Revoscalepy
El enlace no cambia el modelo de compatibilidad de la instancia del motor de base de datos ni la versión de
SQL Server.
El enlace es reversible. Puede revertir al servicio de SQL Server desenlazando la instancia y reparando la
instancia del motor de base de datos de SQL Server.
EXECUTE sp_execute_external_script
@language=N'R'
,@script = N'str(OutputDataSet);
packagematrix <- installed.packages();
Name <- packagematrix[,1];
Version <- packagematrix[,3];
OutputDataSet <- data.frame(Name, Version);'
, @input_data_1 = N''
WITH RESULT SETS ((PackageName nvarchar(250), PackageVersion nvarchar(max) ))
3. Cierre SSMS y todas las herramientas que tengan una conexión abierta a SQL Server. El enlace
sobrescribe los archivos del programa. Si SQL Server tiene sesiones abiertas, se producirá un error en el
enlace con el código de error de enlace 6.
4. Descargue Microsoft Machine Learning Server en el equipo que tenga la instancia que quiere actualizar.
Se recomienda la versión más reciente.
5. Descomprima la carpeta e inicie ServerSetup.exe, que se encuentra en MLSWIN93.
6. En Configurar la instalación , confirme los componentes que se van a actualizar y revise la lista de
instancias compatibles.
7. En la página Contrato de licencia , seleccione Acepto estos términos para aceptar los términos de
licencia de Machine Learning Server.
8. En las páginas sucesivas, dé su consentimiento a otras condiciones de licencia para cualquier
componente de código abierto que seleccione, como Microsoft R Open o la distribución Anaconda de
Python.
9. En la página Ya casi estamos , anote la carpeta de instalación. La carpeta predeterminada es \Archivos
de programa\Microsoft\ML Server.
Si quiere cambiar la carpeta de instalación, seleccione Avanzado para volver a la primera página del
asistente, aunque deberá repetir todas las selecciones anteriores.
Si se produce un error en la actualización, consulte Códigos de error de SqlBindR para obtener más información.
R SRO_3.4.3.0_1033.cab
Python SPO_9.3.0.0_1033.cab
1. Abra un símbolo del sistema como administrador y vaya hasta la carpeta que contiene sqlbindr.exe. La
ubicación predeterminada es C:\Archivos de programa\Microsoft\MLServer\Setup.
2. Escriba el comando siguiente para ver una lista de instancias disponibles: SqlBindR.exe /list
Anote el nombre completo de la instancia como se muestra. Por ejemplo, el nombre de la instancia
podría ser MSSQL14.MSSQLSERVER para una instancia predeterminada, o bien algo parecido a
SERVERNAME.MYNAMEDINSTANCE.
3. Ejecute el comando SqlBindR.exe con el argumento /bind. Especifique el nombre de la instancia que se
va a actualizar con el nombre de instancia que se devolvió en el paso anterior.
Por ejemplo, para actualizar la instancia predeterminada, escriba: SqlBindR.exe /bind MSSQL14.MSSQLSERVER
4. Cuando haya finalizado la actualización, reinicie el servicio Launchpad asociado a cualquier instancia que
se haya modificado.
Paso 1: Unbind
Tiene dos opciones para revertir el enlace: volver a ejecutar el programa de instalación o usar la utilidad de línea
de comandos SqlBindR.
Desenlace mediante el programa de instalación
1. Busque el instalador de Machine Learning Server. Si ha quitado el instalador, es posible que tenga que volver
a descargarlo o copiarlo desde otro equipo.
2. Asegúrese de ejecutar el instalador en el equipo que tiene la instancia que quiere desenlazar.
3. El instalador identifica las instancias locales que son candidatas para el desenlace.
4. Anule la selección de la casilla situada junto a la instancia que quiera revertir a la configuración original.
5. Acepte todos los contratos de licencia.
6. Seleccione Finalizar . El proceso tarda unos minutos.
Desenlace mediante la línea de comandos
1. Abra un símbolo del sistema y vaya a la carpeta que contiene sqlbindr.exe , como se describe en la
sección anterior.
2. Ejecute el comando SqlBindR.exe con el argumento /unbind y especifique la instancia.
Por ejemplo, el siguiente comando revierte la instancia predeterminada:
SqlBindR.exe /unbind MSSQL14.MSSQLSERVER
Parámetros
N O M B RE DESC RIP C IÓ N
list Muestra una lista de todos los id. de instancia de SQL Server
en el equipo actual.
Errores de enlace
El instalador de Machine Learning Server y SqlBindR devuelven los siguientes mensajes y códigos de error.
NOTE
Espere a que haya concluido la instalación. Quitar las bibliotecas de R asociadas a una versión y agregar las nuevas
bibliotecas de R puede tardar mucho tiempo. Una vez finalizada la operación, se quitarán las carpetas temporales.
Consulte también
Cambio de la versión predeterminada del entorno de ejecución del lenguaje R o Python
Instalación de Machine Learning Server para Windows (con conexión a Internet)
Instalación de Machine Learning Server para Windows (sin conexión)
Problemas conocidos de Machine Learning Server
Anuncios de características de la versión anterior de R Server
Características en desuso, ya no admitidas o modificadas
Ejecución de scripts de Python y R en cuadernos de
Azure Data Studio con Machine Learning Services
de SQL Server
14/07/2021 • 2 minutes to read
Prerrequisitos
Descargue e instale Azure Data Studio en el equipo de la estación de trabajo. Azure Data Studio es
multiplataforma y se ejecuta en Windows, macOS y Linux.
Se necesita un servidor con Machine Learning Services de SQL Server instalado y habilitado. Se puede
usar Machine Learning Services en Windows, Linux o clústeres de macrodatos:
Instale Machine Learning Services de SQL Server en Windows.
Instale Machine Learning Services de SQL Server en Linux.
Ejecute los scripts de Python y R con Machine Learning Services en clústeres de macrodatos de
SQL Server.
Puede usar Machine Learning Services en Azure Data Studio con un cuaderno de SQL. Para crear un cuaderno
nuevo, siga estos pasos:
1. Haga clic en Archivo y Nuevo cuaderno para crear un cuaderno nuevo. De forma predeterminada, el
cuaderno usará el kernel de SQL .
2. Haga clic en Adjuntar a y Cambiar conexión .
3. Haga clic en Ejecutar celda (flecha redonda de color negro) o presione F5 para ejecutar la única celda.
Ejecución de un script de R
Para ejecutar un script de R, siga estos pasos:
1. Haga clic en + Código para agregar una celda de código.
3. Haga clic en Ejecutar celda (flecha redonda de color negro) o presione F5 para ejecutar la única celda.
4. El resultado se mostrará en la celda de código.
Pasos siguientes
Uso de cuadernos en Azure Data Studio
Creación y ejecución de un cuaderno de SQL Server
Inicio rápido: Ejecución de scripts de Python sencillos con Machine Learning Services de SQL Server
Inicio rápido: Ejecución de scripts de R sencillos con Machine Learning Services de SQL Server
Configuración de un cliente de ciencia de datos
para el desarrollo de Python en SQL Server
Machine Learning Services
14/07/2021 • 13 minutes to read
Para validar la instalación, puede usar cuadernos integrados de Jupyter Notebook, como se explica en este
artículo, o vincular las bibliotecas a PyCharm o a cualquier otro IDE que use normalmente.
TIP
Para ver una demostración en vídeo de estos ejercicios, vea Ejecución remota de R y Python en SQL Server desde
cuadernos de Jupyter Notebook.
NOTE
Una alternativa a la instalación de la biblioteca cliente es el uso de un servidor independiente como cliente enriquecido, lo
que algunos clientes prefieren para un trabajo más especializado. Un servidor independiente está totalmente desasociado
de SQL Server, pero como tiene las mismas bibliotecas de Python, se puede usar como cliente para el análisis en base de
datos de SQL Server. También se puede usar para trabajos no relacionados con SQL, lo que incluye la capacidad de
importar y modelar datos de otras plataformas de datos. Si instala un servidor independiente, puede encontrar el archivo
ejecutable de Python en esta ubicación: C:\Program Files\Microsoft SQL Server\140\PYTHON_SERVER . Para validar la
instalación, abra un cuaderno de Jupyter para ejecutar comandos con el archivo Python.exe en esa ubicación.
cd {{download-directory}}
.\Install-PyForMLS.ps1 -InstallFolder "C:\path-to-python-for-mls"
TIP
Se recomienda leer las Preguntas más frecuentes sobre Python para Windows para obtener información general sobre la
ejecución de programas de Python en Windows.
2. Escriba dir *.exe para ver los archivos ejecutables. Debería ver python.exe , pythonw.exe y uninstall-
anaconda.exe .
En los sistemas que tienen varias versiones de Python, no olvide usar este archivo Python.exe concreto si quiere
cargar revoscalepy y otros paquetes de Microsoft.
NOTE
El script de instalación no modifica la variable de entorno PATH en el equipo, lo que significa que el nuevo intérprete y los
módulos de Python que acaba de instalar no están disponibles automáticamente para otras herramientas que pueda
tener. Para obtener ayuda para vincular las bibliotecas y el intérprete de Python a las herramientas, vea Instalar un IDE.
.\Scripts\jupyter-notebook
import os
from revoscalepy import rx_summary
from revoscalepy import RxXdfData
from revoscalepy import RxOptions
sample_data_path = RxOptions.get_option("sampleDataDir")
print(sample_data_path)
ds = RxXdfData(os.path.join(sample_data_path, "AirlineDemoSmall.xdf"))
summary = rx_summary("ArrDelay+DayOfWeek", ds)
print(summary)
En la captura de pantalla siguiente se muestra la entrada y una parte de la salida, recortada por motivos de
brevedad.
import pyodbc
print("Database created")
3 - Usar las API de Revoscalepy para crear una tabla y cargar los datos de Iris
from revoscalepy import RxSqlServerData, rx_data_step
# Example of using RX APIs to load data into SQL table. You can also do this with pyodbc
table_ref = RxSqlServerData(connection_string=connection_string.format(new_db_name), table="iris_data")
rx_data_step(input_data = df, output_file = table_ref, overwrite = True)
def send_this_func_to_sql():
from revoscalepy import RxSqlServerData, rx_import
from pandas.tools.plotting import scatter_matrix
import matplotlib.pyplot as plt
import io
# remember the scope of the variables in this func are within our SQL Server Python Runtime
connection_string = "Driver=SQL Server;Server=localhost;Database=irissql;Trusted_Connection=Yes;"
scatter_matrix(df)
return buf.getvalue()
# only an image was returned to my jupyter client. All data remained secure and was manipulated in my db.
display.Image(data=image)
Si usa otro IDE, tiene que vincular los ejecutables de Python y las bibliotecas de funciones a la herramienta. En
las secciones siguientes se proporcionan instrucciones para herramientas de uso común.
Visual Studio
Si tiene Python en Visual Studio, use las siguientes opciones de configuración para crear un entorno de Python
que incluya los paquetes de Python de Microsoft.
O P C IÓ N DE C O N F IGURA C IÓ N VA LO R
Para obtener ayuda para configurar un entorno de Python, vea Administración de entornos de Python en Visual
Studio.
PyCharm
En PyCharm, establezca el intérprete en el ejecutable de Python instalado.
1. En un nuevo proyecto, en Configuración, haga clic en Add Local (Agregar local).
2. Escriba C:\Program Files\Microsoft\PyForMLS\ .
Ahora puede importar los módulos revoscalepy , microsoftml o azureml . También puede seleccionar
Herramientas > Consola de Python para abrir una ventana interactiva.
Pasos siguientes
Ahora que tiene herramientas y una conexión operativa a SQL Server, amplíe sus conocimientos mediante la
ejecución de los inicios rápidos de Python con SQL Server Management Studio (SSMS).
Inicio rápido: Crear y ejecutar scripts de Python simples con SQL Server Machine Learning Services
Configuración de un cliente de ciencia de datos
para el desarrollo de R en SQL Server
27/07/2021 • 11 minutes to read
Para validar la instalación, puede usar la herramienta integrada RGUI , como se explica en este artículo, o
vincular las bibliotecas a RStudio o cualquier otro IDE que use normalmente.
NOTE
Una alternativa a la instalación de la biblioteca cliente es el uso de un servidor independiente como cliente enriquecido, lo
que algunos clientes prefieren para un trabajo más especializado. Un servidor independiente está totalmente desasociado
de SQL Server, pero como tiene las mismas bibliotecas de R, se puede usar como cliente para el análisis en base de datos
de SQL Server. También se puede usar para trabajos no relacionados con SQL, lo que incluye la capacidad de importar y
modelar datos de otras plataformas de datos. Si instala un servidor independiente, puede encontrar el archivo ejecutable
de R en C:\Program Files\Microsoft SQL Server\140\R_SERVER . Para validar la instalación, abra una aplicación de
consola de R con el fin de ejecutar comandos mediante R.exe en esa ubicación.
1. Instalación de paquetes de R
Los paquetes de Microsoft R están disponibles en varios productos y servicios. En una estación de trabajo local,
se recomienda instalar Microsoft R Client. R Client proporciona RevoScaleR, MicrosoftML, SQLRUtils y otros
paquetes de R.
1. Descargue Microsoft R Client.
2. En el asistente para instalación, acepte o cambie la ruta predeterminada, acepte o cambie la lista de
componentes y acepte los términos de licencia de Microsoft R Client.
Una vez finalizada la instalación, una pantalla de bienvenida le presentará el producto y la
documentación.
3. Cree una variable de entorno del sistema MKL_CBWR para garantizar una salida coherente en los
cálculos de la Math Kernel Library (MKL) de Intel.
En el panel de control, haga clic en Sistema y seguridad > Sistema > Configuración avanzada
del sistema > Variables de entorno .
Cree una nueva variable del sistema denominada MKL_CBWR , con un valor establecido en
Automático .
3. Inicio de RGUI
Al instalar R con SQL Server, obtendrá las mismas herramientas de R habituales de cualquier instalación base de
R, como RGui, Rterm, etc. Estas herramientas son ligeras, útiles para comprobar la información de la biblioteca y
el paquete, ejecutar scripts o comandos ad hoc o recorrer los tutoriales. Puede usar estas herramientas para
obtener información de versión de R y confirmar la conectividad.
1. Abra C:\Archivos de programa\Microsoft\R Client\R_SERVER\bin\x64 y haga doble clic en RGui para
iniciar una sesión de R con un símbolo del sistema de R.
Al iniciar una sesión de R desde una carpeta de programas de Microsoft, se cargan automáticamente
varios paquetes, incluido RevoScaleR.
2. Escriba print(Revo.version) en el símbolo del sistema para obtener la información de versión del
paquete RevoScaleR. Debe tener la versión 9.2.1 o 9.3.0 para RevoScaleR.
3. Escriba search() en el símbolo del sistema de R para obtener una lista de los paquetes instalados.
2. RevoScaleR se carga automáticamente. Confirme que RevoScaleR está operativo mediante la ejecución
de este comando: print(Revo.version)
3. Escriba el script de demo que se ejecuta en el servidor remoto. Debe modificar el siguiente script de
ejemplo para que incluya un nombre válido para una instancia de SQL Server remota. Esta sesión se
inicia como una sesión local, pero la función r xSummar y se ejecuta en la instancia de SQL Server
remota.
Resultados:
Este script se conecta a una base de datos del servidor remoto, proporciona una consulta, crea una
instrucción cc de contexto de proceso para la ejecución remota de código y, después, proporciona la
función r xSummar y de RevoScaleR para devolver un resumen estadístico de los resultados de la
consulta.
Call:
rxSummary(formula = ~., data = RxSqlServerData(sqlQuery = sampleQuery,
connectionString = connStr), computeContext = cc)
4. Obtenga y establezca el contexto de proceso. Una vez que establece un contexto de proceso, este
permanece activo mientras dure la sesión. Si no está seguro de si el cálculo es local o remoto, ejecute el
comando siguiente para averiguarlo. Los resultados que especifican una cadena de conexión indican un
contexto de proceso remoto.
5. Devuelva información sobre las variables en el origen de datos, incluidos el nombre y el tipo.
rxGetVarInfo(data = inDataSource)
# Set the connection string. Substitute a valid server name for the placeholder.
connStr <- "Driver=SQL Server;Server=<your database
name>;Database=NYCTaxi_Sample;Trusted_Connection=true"
Pasos siguientes
Dos tutoriales diferentes con ejercicios para que pueda practicar el cambio del contexto de proceso de una
instancia SQL Server local a una remota.
Tutorial: Uso de funciones RevoScaleR R con datos de SQL Server
Tutorial integral de ciencia de datos
Instalación de SQL Server Machine Learning
Services con Python y R en una máquina virtual de
Azure
14/07/2021 • 2 minutes to read
IMPORTANT
La compatibilidad con Machine Learning Server (anteriormente conocido como R Server) finalizará el 1 de julio de 2022.
Para obtener más información, consulte ¿Qué sucederá con Machine Learning Server?
El programa de instalación de SQL Server incluye una opción de características compar tidas para instalar un
servidor aprendizaje automático independiente que se ejecuta fuera de SQL Server. Se denomina Machine
Learning Ser ver (independiente) e incluye Python y R.
El programa de instalación de SQL Server incluye una opción de características compar tidas para instalar un
servidor aprendizaje automático independiente que se ejecuta fuera de SQL Server. En SQL Server 2016, esta
característica se denomina R Ser ver (independiente) .
Un servidor independiente instalado por el programa de instalación de SQL Server admite casos de uso y
escenarios como los siguientes:
Ejecución remota, alternancia entre sesión local y sesión remota en la misma consola
Operacionalización con nodos web y nodos de proceso
Implementación de servicio web: posibilidad de empaquetar scripts de R y Python en servicios web
Recopilación completa de bibliotecas de funciones de R y Python
En tanto que servidor independiente desacoplado de SQL Server, la configuración, la protección y el acceso del
entorno de R y Python se realizan a través del sistema operativo subyacente y las herramientas proporcionadas
en el servidor independiente, y no a través de SQL Server.
Como elemento accesorio de SQL Server, un servidor independiente es útil si es necesario desarrollar
soluciones de Machine Learning de alto rendimiento que pueden usar contextos de proceso remotos de toda la
gama de plataformas de datos admitidas. La ejecución se puede alternar entre el servidor local y un servidor de
Machine Learning Server remoto en un clúster de Spark o en otra instancia de SQL Server.
NOTE
No instale las características compar tidas si el equipo ya tiene instalado Machine Learning Services para los análisis en
base de datos de SQL Server, ya que ello generaría bibliotecas duplicadas.
Aparte de eso, los scripts de R o de Python que se ejecutan en SQL Server se administran por medio de SQL Server para
que no entren en conflicto con la memoria que usan otros servicios de motor de base de datos, pero la instalación
independiente de Machine Learning Server no presenta estas restricciones y podría interferir con otras operaciones de
base de datos. Por último, los administradores de bases de datos suelen bloquear el acceso remoto a través de sesiones
RDP, que a menudo se usa para la operacionalización.
Por estos motivos, generalmente se recomienda instalar Machine Learning Server (independiente) en un equipo aparte de
SQL Server Machine Learning Services.
5. Acepte los términos de licencia para descargar e instalar las distribuciones de lenguaje base. Si el botón
Aceptar no está disponible, puede hacer clic en Siguiente .
6. En la página Listo para instalar , compruebe las opciones seleccionadas y haga clic en Instalar .
Ejecución del programa de instalación
En instalaciones locales, debe ejecutar el programa de instalación como administrador. Si instala SQL Server
desde un recurso compartido remoto, deberá usar una cuenta de dominio que tenga permisos de lectura y
ejecución para dicho recurso.
1. Inicie el Asistente para instalación.
2. En la pestaña Instalación , haga clic en Nueva instalación de R Ser ver (independiente) .
3. Cuando finalice la comprobación de reglas, acepte los términos de licencia de SQL Server y seleccione
una nueva instalación.
4. En la página Selección de características , la siguiente opción ya debería estar seleccionada:
R Ser ver (Standalone)
El resto de opciones se deben omitir.
NOTE
No instale las características compar tidas si está ejecutando el programa de instalación en un equipo en el
que R Services ya está instalado para los análisis en base de datos de SQL Server, ya que ello generaría bibliotecas
duplicadas.
Los scripts de R que se ejecutan en SQL Server se administran por medio de SQL Server para que no entren en
conflicto con la memoria que usan otros servicios de motor de base de datos, pero la instalación independiente de
R Server no presenta estas restricciones y podría interferir con otras operaciones de base de datos.
Por lo general, se recomienda instalar R Server (independiente) en un equipo aparte de SQL Server R Services (en
base de datos).
5. Acepte los términos de licencia para descargar e instalar las distribuciones de lenguaje base. Si el botón
Aceptar no está disponible, puede hacer clic en Siguiente .
6. En la página Listo para instalar , compruebe las opciones seleccionadas y haga clic en Instalar .
3. Reinicie el servidor.
Carpetas de instalación predeterminadas
En el desarrollo de R y Python es habitual tener varias versiones en el mismo equipo. Como la instalación se
realiza a través del programa de instalación de SQL Server, la distribución base se instala en una carpeta
asociada a la versión de SQL Server usada para la instalación.
En la siguiente tabla se muestran las rutas de acceso de las distribuciones de R y Python creadas por
instaladores de Microsoft. La tabla muestra información completa, como las rutas de acceso generadas por el
programa de instalación de SQL Server, así como el instalador independiente de Microsoft Machine Learning
Server.
SQL Server 2019 Machine Learning Asistente para la instalación de C:\Program Files\Microsoft SQL
Server (independiente) SQL Server 2019 Server\150\R_SERVER
C:\Program Files\Microsoft SQL
Server\150\PYTHON_SERVER
SQL Server 2017 Machine Learning Asistente para la instalación de C:\Program Files\Microsoft SQL
Server (independiente) SQL Server 2017 Server\140\R_SERVER
C:\Program Files\Microsoft SQL
Server\140\PYTHON_SERVER
SQL Server Machine Learning Services Asistente para la instalación de C:\Program Files\Microsoft SQL
(en base de datos) SQL Server 2019, con la opción de Server\MSSQL15.
<instance_name>\R_SERVICES
lenguaje R
C:\Program Files\Microsoft SQL
Server\MSSQL15.
<instance_name>\PYTHON_SERVICES
SQL Server Machine Learning Services Asistente para la instalación de C:\Program Files\Microsoft SQL
(en base de datos) SQL Server 2017, con la opción de Server\MSSQL14.
<instance_name>\R_SERVICES
lenguaje R
C:\Program Files\Microsoft SQL
Server\MSSQL14.
<instance_name>\PYTHON_SERVICES
SQL Server 2016 R Server Asistente para la instalación de C:\Program Files\Microsoft SQL
(independiente) SQL Server 2016 Server\130\R_SERVER
SQL Server 2016 R Services (en base Asistente para la instalación de C:\Program Files\Microsoft SQL
de datos) SQL Server 2016 Server\MSSQL13.
<instance_name>\R_SERVICES
Aplicación de actualizaciones
Se recomienda aplicar la última actualización acumulativa tanto en el motor de base de datos como en los
componentes de Machine Learning. Las actualizaciones acumulativas se instalan a través del programa de
instalación.
En los dispositivos conectados a Internet, se puede descargar un archivo ejecutable autoextraíble. Al aplicar una
actualización del motor de base de datos, se incluyen automáticamente actualizaciones acumulativas de las
características existentes de R y Python.
En los servidores desconectados, se requieren pasos extra. Hay que obtener la actualización acumulativa del
motor de base de datos, así como los archivos .CAB de las características de Machine Learning. Todos los
archivos deben transferirse al servidor aislado y aplicarse manualmente.
1. Comience con una instancia de línea base. Solo se pueden aplicar actualizaciones acumulativas en las
instalaciones existentes:
Machine Learning Server (independiente) de la versión inicial de SQL Server 2019
Machine Learning Server (independiente) de la versión inicial de SQL Server 2017
R Server (independiente) de la versión inicial de SQL Server 2016, SQL Server 2016 SP1 o
SQL Server 2016 SP2
2. Cierre todas las sesiones de R o de Python abiertas y detenga todos los procesos que aún se estén
ejecutando en el sistema.
3. Si ha habilitado la ejecución de la operacionalización como nodos web y nodos de proceso en
implementaciones de servicio web, haga una copia de seguridad del archivo AppSettings.json como
medida de precaución. Este archivo se revisa al aplicar SQL Server 2017 CU13 o posterior, por lo que
probablemente quiera conservar una copia de seguridad de la versión original.
4. En una máquina conectada a Internet, descargue la actualización acumulativa más reciente para su
versión desde Actualizaciones más recientes de Microsoft SQL Server.
5. Descargue la actualización acumulativa más reciente. Es un archivo ejecutable.
6. En un dispositivo conectado a Internet, haga doble clic en el archivo .exe para ejecutar el programa de
instalación y realice todo el asistente para aceptar los términos de licencia, revisar las características
afectadas y supervisar el progreso hasta su término.
7. En un servidor sin conectividad a Internet:
Obtenga los archivos .CAB correspondientes a R y Python. Para obtener los vínculos de descarga,
vea Descargas de CAB de actualizaciones acumulativas en instancias de análisis en base de datos
de SQL Server.
Transfiera todos los archivos, el archivo ejecutable principal y los archivos .CAB a una carpeta del
equipo sin conexión.
Haga doble clic en el archivo .exe para ejecutar el programa de instalación. Cuando se instala una
actualización acumulativa en un servidor sin conectividad a Internet, se le pide que seleccione la
ubicación de los archivos .CAB de R y Python.
8. Después de la instalación, en un servidor donde se haya habilitado la implementación con nodos web y
nodos de ejecución, edite AppSettings.json y agregue una entrada "MMLResourcePath" directamente
en "MMLNativePath". Por ejemplo:
"ScorerParameters": {
"MMLNativePath": "C:\Program Files\Microsoft SQL
Server\140\R_SERVER\library\MicrosoftML\mxLibs\x64\",
"MMLResourcePath": "C:\Program Files\Microsoft SQL
Server\140\R_SERVER\library\MicrosoftML\mxLibs\x64\"
}
9. Ejecute la utilidad de CLI de administración para reiniciar los nodos web y de proceso. Para conocer los
pasos y la sintaxis, vea Supervisión, inicio y detención de nodos web y de proceso.
Herramientas de desarrollo
No se instala un IDE de desarrollo como parte de la instalación. Para más información sobre cómo configurar un
entorno de desarrollo, vea Configuración de herramientas de R y Configuración de herramientas de Python.
Pasos siguientes
Los desarrolladores de R pueden empezar con algunos ejemplos sencillos y conocer los aspectos básicos del
funcionamiento de R con SQL Server. Para conocer el siguiente paso, vea los vínculos siguientes:
Inicio rápido: Ejecutar R en T-SQL
Tutorial: Análisis en base de datos para desarrolladores de R
Los desarrolladores de Python pueden aprender a usar Python con SQL Server con estos tutoriales:
Tutorial de Python: Predicción de alquileres de esquíes con regresión lineal en
SQL Server Machine Learning Services
Tutorial de Python: Clasificación de clientes por categorías mediante la agrupación en clústeres k-means con
SQL Server Machine Learning Services
Inicio rápido: Ejecución de scripts de Python
sencillos con aprendizaje automático de SQL
14/07/2021 • 6 minutes to read
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores de Instancia administrada de Azure SQL
En este inicio rápido, ejecutará un conjunto de scripts de Python sencillos mediante SQL Server Machine
Learning Services, Machine Learning Services en Azure SQL Managed Instance o Clústeres de macrodatos de
SQL Server. Aprenderá a usar el procedimiento almacenado sp_execute_external_script para ejecutar el script en
una instancia de SQL Server.
Prerrequisitos
Para ejecutar este inicio rápido, debe cumplir los siguientes requisitos previos.
Una base de datos SQL en una de estas plataformas:
SQL Server Machine Learning Services. Para realizar la instalación, vea la Guía de instalación para
Windows o la Guía de instalación para Linux.
Clústeres de macrodatos de SQL Server. Consulte Habilitación de Machine Learning Services en
clústeres de macrodatos de SQL Server.
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 Python. En este inicio rápido
se utiliza Azure Data Studio.
a = 1
b = 2
c = a/b
d = a*b
print(c, d)
1. Abra una nueva ventana de consulta en Azure Data Studio conectada a su instancia de SQL.
2. Pase todo el script de Python 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 Python válido.
EXECUTE sp_execute_external_script @language = N'Python'
, @script = N'
a = 1
b = 2
c = a/b
d = a*b
print(c, d)
'
Entre las entradas para el procedimiento almacenado sp_execute_external_script , se incluyen las siguientes:
EN T RA DA DESC RIP C IÓ N
WITH RESULT SETS cláusula que define el esquema de la tabla de datos devuelta
a aprendizaje automático de SQL (se agrega "Hola mundo"
como el nombre de columna e int para el tipo de datos).
SELECT *
FROM PythonTestData
Resultados
3. Ejecute el siguiente script de Python. Recupera los datos de la tabla mediante la instrucción SELECT , los
pasa mediante el entorno de ejecución de Python y devuelve los datos como una trama de datos. La
cláusula WITH RESULT SETS define el esquema de la tabla de datos devuelta para SQL y agrega el nombre
de columna NewColName.
Resultados
4. 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 ; el script siguiente cambia los
nombres a SQL_in y SQL_out :
Tenga en cuenta que Python distingue mayúsculas de minúsculas. Las variables de entrada y salida
usadas en el script de Python (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.
TIP
Solo se puede pasar un conjunto de datos de entrada como parámetro, y solo se puede devolver un conjunto de
datos. Pero puede llamar a otros conjuntos de datos desde dentro del código de Python y 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.
5. También puede generar valores con el script de Python sin datos de entrada ( @input_data_1 se establece
en blanco).
El script siguiente genera el texto "hola" y "mundo".
Resultados
NOTE
Python usa espacios iniciales para agrupar instrucciones. Por lo tanto, cuando el script de Python insertado abarca varias
líneas, como en el script anterior, no intente agregar sangría a los comandos de Python para que estén alineados con los
comandos de SQL. Por ejemplo, este script produciría un error:
La función print de Python devuelve la versión en la ventana Mensajes . En la salida de ejemplo siguiente,
puede ver que, en este caso, la versión de Python instalada es 3.5.2.
Resultados
Pasos siguientes
Para obtener información sobre cómo usar estructuras de datos al usar Python en aprendizaje automático de
SQL, siga este inicio rápido:
Inicio rápido: Objetos y estructuras de datos con Python
Inicio rápido: Estructuras de datos y objetos
mediante Python con aprendizaje automático de
SQL
14/07/2021 • 4 minutes to read
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores de Instancia administrada de Azure SQL
En este inicio rápido, aprenderá a usar estructuras de datos y tipos de datos al utilizar Python en SQL Server
Machine Learning Services, Machine Learning Services en Azure SQL Managed Instance o Clústeres de
macrodatos de SQL Server. Aprenderá a mover datos entre Python y SQL Server, así como los problemas
comunes que pueden producirse.
Aprendizaje automático de SQL se basa en el paquete pandas de Python, que es excelente para trabajar con
datos tabulares. Sin embargo, no puede pasar un valor escalar desde Python a la base de datos y esperar que
funcione. En esta guía de inicio rápido, revisará algunas definiciones de estructura de datos básicas a fin de
prepararle para incidencias adicionales que podrían ocurrir al pasar datos tabulares entre Python y la base de
datos.
Los conceptos más comunes son:
Una trama de datos es una tabla con varias columnas.
Una sola columna de una trama de datos es un objeto de tipo lista denominado serie.
Un valor único de una trama de datos se denomina celda y se obtiene acceso a ella mediante el índice.
¿Cómo se expondría el resultado único de un cálculo como una trama de datos, si una data.frame requiere una
estructura tabular? Una respuesta es representar el valor escalar único como una serie, que se convierte
fácilmente en una trama de datos.
NOTE
Cuando se devuelven fechas, Python en SQL usa DATETIME, que tiene un intervalo de fechas restringido de 1753-01-
01(-53690) a 9999-12-31(2958463).
Prerrequisitos
Para ejecutar este inicio rápido, debe cumplir los siguientes requisitos previos.
Una base de datos SQL en una de estas plataformas:
SQL Server Machine Learning Services. Para realizar la instalación, vea la Guía de instalación para
Windows o la Guía de instalación para Linux.
Clústeres de macrodatos de SQL Server. Consulte Habilitación de Machine Learning Services en
clústeres de macrodatos de SQL Server.
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 Python. En este inicio rápido
se utiliza Azure Data Studio.
Valor escalar como una serie
Este ejemplo realiza algunas operaciones matemáticas simples y convierte un valor escalar en una serie.
1. Una serie requiere un índice, que puede asignarlo manualmente, como se muestra aquí, o mediante
programación.
Dado que la serie no se ha convertido a data.frame, los valores se devuelven en la ventana mensajes,
pero puede ver que los resultados se encuentran en un formato más tabular.
Resultados
2. Para aumentar la longitud de la serie, puede agregar nuevos valores mediante una matriz.
Si no especifica un índice, se genera un índice con valores que empiezan por 0 y terminan con la longitud
de la matriz.
Resultados
3. Si aumenta el número de valores del índice , pero no agrega nuevos valores de datos , los valores de
datos se repiten para rellenar la serie.
EXECUTE sp_execute_external_script @language = N'Python'
, @script = N'
a = 1
b = 2
c = a/b
s = pandas.Series(c, index =["simple math example 1", "simple math example 2"])
print(s)
'
Resultados
A continuación se muestra el resultado. Incluso si usa el índice para obtener valores específicos de
data.Frame, los valores del índice no forman parte de la salida.
Resultados
RESULT VA L UE
0.5
Resultados
RESULT VA L UE
2.0
Recuerde que el índice generado automáticamente comienza en 0. Pruebe a usar un valor de índice fuera
de intervalo y vea lo que sucede.
2. Ahora obtenga un valor único de la otra trama de datos mediante un índice de cadena.
Resultados
RESULT VA L UE
0.5
Si intenta usar un índice numérico para obtener un valor de esta serie, obtendrá un error.
Pasos siguientes
Para obtener información sobre cómo escribir funciones avanzadas de Python con aprendizaje automático de
SQL, siga este inicio rápido:
Escritura de funciones de Python avanzadas.
Inicio rápido: Funciones de Python con aprendizaje
automático de SQL
14/07/2021 • 3 minutes to read
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores de Instancia administrada de Azure SQL
En este inicio rápido, aprenderá a usar las funciones matemáticas y de utilidad de Python con SQL Server
Machine Learning Services, Machine Learning Services en Azure SQL Managed Instance o Clústeres de
macrodatos de SQL Server. Las funciones estadísticas suelen ser complicadas de implementar en T-SQL, pero
esto se puede hacer en Python con solo unas pocas líneas de código.
Prerrequisitos
Para ejecutar este inicio rápido, debe cumplir los siguientes requisitos previos.
Una base de datos SQL en una de estas plataformas:
SQL Server Machine Learning Services. Para realizar la instalación, vea la Guía de instalación para
Windows o la Guía de instalación para Linux.
Clústeres de macrodatos de SQL Server. Consulte Habilitación de Machine Learning Services en
clústeres de macrodatos de SQL Server.
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 Python. En este inicio rápido
se utiliza Azure Data Studio.
Para llamar a esta línea de Python desde T-SQL, agregue la función de Python en el parámetro de script de
Python de sp_execute_external_script . La salida espera una trama de datos, por lo que debe usar pandas para
convertirla.
EXECUTE sp_execute_external_script @language = N'Python'
, @script = N'
import numpy
import pandas
OutputDataSet = pandas.DataFrame(numpy.random.normal(size=100, loc=50, scale=3));
'
, @input_data_1 = N' ;'
WITH RESULT SETS(([Density] FLOAT NOT NULL));
¿Qué ocurriría si quisiera facilitar la generación de un conjunto diferente de números aleatorios? Defina un
procedimiento almacenado que obtenga los argumentos del usuario y, a continuación, pase los argumentos al
script de Python como variables.
La primera línea define cada uno de los parámetros de entrada de SQL que son necesarios cuando se
ejecuta el procedimiento almacenado.
La línea que empieza con @params define todas las variables que usa el código de Python y los
correspondientes tipos de datos SQL.
Las líneas que siguen inmediatamente asignan los nombres de parámetro SQL a los valores de variables
de Python correspondientes.
Ahora que ha ajustado la función de Python en un procedimiento almacenado, puede llamar a la función y pasar
distintos valores fácilmente de la manera siguiente:
Pasos siguientes
Para crear un modelo de aprendizaje automático usando Python con aprendizaje automático de SQL, siga este
inicio rápido:
Inicio rápido: Creación y puntuación de un modelo predictivo en Python
Inicio rápido: Creación y puntuación de un modelo
predictivo en Python con el aprendizaje automático
de SQL
14/07/2021 • 7 minutes to read
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores de Instancia administrada de Azure SQL
En este inicio rápido, creará y entrenará un modelo predictivo con Python. Guardará el modelo en una tabla en
la instancia de SQL Server y, a continuación, lo usará para predecir los valores de los nuevos datos con
SQL Server Machine Learning Services, Machine Learning Services en Azure SQL Managed Instance o Clústeres
de macrodatos de SQL Server.
Creará y ejecutará dos procedimientos almacenados que se ejecutan en SQL. En el primero, se usa el conjunto
de datos de flores Iris clásico y se genera un modelo de Bayes naive para predecir una especie de Iris basándose
en las características florales. El segundo procedimiento es para puntuación: realiza una llamada al modelo
generado en el primer procedimiento para generar un conjunto de predicciones basadas en datos nuevos. Al
colocar código de Python en un procedimiento almacenado en SQL, las operaciones se incluyen en SQL, son
reutilizables y pueden recibir llamadas de otros procedimientos almacenados y aplicaciones cliente.
Después de completar este inicio rápido, aprenderá a:
Insertar código de Python en un procedimiento almacenado
Pasar entradas en el código mediante entradas en el procedimiento almacenado
Usar procedimientos almacenados para hacer operativos los modelos
Prerrequisitos
Para ejecutar este inicio rápido, debe cumplir los siguientes requisitos previos.
Una base de datos SQL en una de estas plataformas:
SQL Server Machine Learning Services. Para realizar la instalación, vea la Guía de instalación para
Windows o la Guía de instalación para Linux.
Clústeres de macrodatos de SQL Server. Consulte Habilitación de Machine Learning Services en
clústeres de macrodatos de SQL Server.
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 Python. En este inicio rápido
se utiliza Azure Data Studio.
Los datos de ejemplo usados en este ejercicio son los datos de ejemplo de Iris. Siga las instrucciones en
Datos de demo de Iris para crear la base de datos de ejemplo irissql .
Resultados
M O DEL _N A M E M O DEL
2. Ejecute el procedimiento almacenado y asigne al modelo el nombre "Bayes naive" para que el
procedimiento pueda identificar el modelo que tiene que usar.
Los resultados son 150 predicciones sobre especies para los que se han usado características florales
como entradas. Para la mayoría de las observaciones, las especies predichas coinciden con las especies
reales.
Este ejemplo se ha simplificado mediante el conjunto de datos Iris de Python, tanto para entrenamiento
como para puntuación. Una forma más habitual es ejecutar una consulta SQL para obtener datos nuevos
y pasarlos a Python como InputDataSet .
Conclusión
En este ejercicio, ha aprendido a crear procedimientos almacenados dedicados a tareas distintas, donde cada
procedimiento almacenado ha usado el procedimiento almacenado del sistema sp_execute_external_script
para iniciar un proceso de Python. Las entradas en el proceso de Python se pasan a sp_execute_external como
parámetros. Tanto el script de Python en sí como las variables de datos de una base de datos se pasan como
entradas.
Normalmente, solo se usará Azure Data Studio con código de Python correcto, o bien código de Python que
devuelve resultados basados en filas. Como herramienta, Azure Data Studio admite lenguajes de consulta como
T-SQL y devuelve conjuntos de filas planos. Si el código genera un resultado visual como un diagrama de
dispersión o un histograma, necesita una herramienta o una aplicación de usuario final independiente que
pueda representar la imagen fuera del procedimiento almacenado.
Puede que a algunos desarrolladores de Python, acostumbrados a escribir scripts con todo incluido y que
procesan una amplia variedad de operaciones, les parezca innecesario organizar las tareas en procedimientos
separados. Pero el entrenamiento y la puntuación tienen distintos casos de uso. Al separarlos, puede colocar
cada tarea en una programación distinta y asignar permisos de ámbito distintos a cada operación.
La ventaja final es que los procesos pueden modificarse mediante parámetros. En este ejercicio, el código de
Python que ha creado el modelo (denominado "Bayes naive" en este ejemplo) se ha pasado como una entrada a
un segundo procedimiento almacenado que llama al modelo en un proceso de puntuación. Aunque en este
ejercicio solo se usa un modelo, puede imaginarse que, si parametriza el modelo en una tarea de puntuación, el
script resultaría más útil.
Pasos siguientes
Para obtener más información sobre los tutoriales de Python con el aprendizaje automático de SQL, consulte:
Tutoriales de Python
Inicio rápido: Ejecución de scripts de R sencillos con
aprendizaje automático de SQL
14/07/2021 • 6 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
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.
Entre las entradas para el procedimiento almacenado sp_execute_external_script , se incluyen las siguientes:
EN T RA DA DESC RIP C IÓ N
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).
H O L A M UN DO
SELECT *
FROM RTestData
Resultados
3. 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áusula
WITH 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
4. 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 :
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.
TIP
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.
5. 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".
Resultados
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
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.
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
En este inicio rápido, aprenderá a usar estructuras de datos y tipos de datos cuando use R en SQL Server
Machine Learning Services o en clústeres de macrodatos. Aprenderá a mover datos entre R y SQL Server, así
como los problemas comunes que pueden producirse.
En este inicio rápido, aprenderá a usar estructuras de datos y tipos de datos cuando use R en SQL Server
Machine Learning Services. Aprenderá a mover datos entre R y SQL Server, así como los problemas comunes
que pueden producirse.
En este inicio rápido, aprenderá a usar estructuras de datos y tipos de datos cuando use R en SQL Server R
Services. Aprenderá a mover datos entre R y SQL Server, así como los problemas comunes que pueden
producirse.
En este inicio rápido, obtendrá información sobre cómo usar estructuras de datos y tipos de datos cuando use R
en Machine Learning Services en Azure SQL Managed Instance. Obtendrá información sobre cómo mover datos
entre R y SQL Managed Instance, así como las incidencias comunes que pueden producirse.
Algunos de los problemas más comunes son:
A veces, los tipos de datos no coinciden
Pueden producirse conversiones implícitas
En ocasiones se requieren operaciones de conversión
En R y SQL se usan objetos de datos distintos
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.
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N' mytextvariable <- c("hello", " ", "world");
OutputDataSet <- as.data.frame(mytextvariable);'
, @input_data_1 = N' ';
Ejemplo 2
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N' OutputDataSet<- data.frame(c("hello"), " ", c("world"));'
, @input_data_1 = N' ';
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N' mytextvariable <- c("hello", " ", "world");
OutputDataSet <- as.data.frame(mytextvariable);
str(OutputDataSet);'
, @input_data_1 = N' '
;
Ahora, revise el texto de Mensajes para ver por qué el resultado es diferente.
Resultados: Ejemplo 1
Resultados: Ejemplo 2
Como puede ver, un pequeño cambio en la sintaxis de R ha tenido un gran efecto en el esquema de los
resultados. No entraremos en los motivos, pero las diferencias en los tipos de datos de R se explican en los
detalles de la sección Estructuras de datos en "R avanzada" de Hadley Wickham.
Por ahora, simplemente tenga presente que deberá comprobar los resultados esperados al convertir objetos de
R en tramas de datos.
TIP
También puede usar funciones de identidad de R, como is.matrix , is.vector , para devolver información sobre la
estructura de datos interna.
Por ejemplo, supongamos que ejecutamos la siguiente instrucción para multiplicar matrices mediante R. Una
matriz de una sola columna con tres valores se multiplica por una matriz con cuatro valores, de lo que se espera
como resultado una matriz 4x3.
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N'
x <- as.matrix(InputDataSet);
y <- array(12:15);
OutputDataSet <- as.data.frame(x %*% y);'
, @input_data_1 = N' SELECT [Col1] from RTestData;'
WITH RESULT SETS (([Col1] int, [Col2] int, [Col3] int, Col4 int));
En segundo plano, la columna de tres valores se convierte en una matriz de una sola columna. Como una matriz
es simplemente un caso especial de una matriz de R, la matriz y se convierte de forma implícita en una matriz
de una sola columna para que los dos argumentos coincidan.
Resultados
12 13 14 15
execute sp_execute_external_script
@language = N'R'
, @script = N'
x <- as.matrix(InputDataSet);
y <- array(12:14);
OutputDataSet <- as.data.frame(y %*% x);'
, @input_data_1 = N' SELECT [Col1] from RTestData;'
WITH RESULT SETS (([Col1] int ));
C OL1
1542
¿Por qué? En este caso, dado que los dos argumentos se pueden tratar como vectores de la misma longitud, R
devuelve el producto interior como una matriz. Este es el comportamiento esperado según las reglas de álgebra
lineal, pero podría causar problemas si la aplicación auxiliar espera que el esquema de salida no cambie nunca.
TIP
¿Obtiene errores? Asegúrese de que está ejecutando el procedimiento almacenado en el contexto de la base de datos que
contiene la tabla y no en maestro u otra base de datos.
Además, se recomienda evitar el uso de tablas temporales en estos ejemplos. Algunos clientes de R finalizarán una
conexión entre lotes y eliminarán tablas temporales.
Combinación o multiplicación de columnas de longitud diferente
R proporciona una gran flexibilidad a la hora de trabajar con vectores de diferentes tamaños y de combinar
estas estructuras (similares a las columnas) en tramas de datos. Las listas de vectores pueden ser similares a una
tabla, pero no siguen todas las reglas que rigen las tablas de base de datos.
Por ejemplo, en el script siguiente se define una matriz numérica de longitud 6 y se almacena en la variable de R
df1 . Después, la matriz numérica se combina con los enteros de la tabla RTestData, que contiene tres (3)
valores para crear una nueva trama de datos, df2 .
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N'
df1 <- as.data.frame( array(1:6) );
df2 <- as.data.frame( c( InputDataSet , df1 ));
OutputDataSet <- df2'
, @input_data_1 = N' SELECT [Col1] from RTestData;'
WITH RESULT SETS (( [Col2] int not null, [Col3] int not null ));
Para rellenar la trama de datos, R repite los elementos recuperados de RTestData tantas veces como sea
necesario para que coincidan con el número de elementos de la matriz df1 .
Resultados
C OL2 C OL3
1 1
10 2
100 3
1 4
10 5
100 6
Recuerde que una trama de datos solo es similar a una tabla en cuanto al aspecto. En realidad es una lista de
vectores.
Conversión de datos
R y SQL Server no usan los mismos tipos de datos, de modo que cuando se ejecuta una consulta en SQL Server
para obtener datos y luego se pasa al tiempo de ejecución de R, suele producirse algún tipo de conversión
implícita. Otra serie de conversiones ocurre cuando se devuelven datos de R a SQL Server.
SQL Server inserta los datos de la consulta en el proceso de R administrado por el servicio Launchpad y los
convierte en una representación interna para una mayor eficacia.
El runtime de R carga los datos en una variable data.frame y realiza sus propias operaciones en los datos.
El motor de base de datos devuelve los datos a SQL Server por medio de una conexión segura interna y los
presenta como tipos de datos de SQL Server.
Los datos se obtienen estableciendo una conexión a SQL Server con una biblioteca de red o de cliente capaz
de emitir consultas SQL y tratar conjuntos de datos tabulares. Esta aplicación cliente puede afectar a los
datos de otras maneras.
Para ver cómo funciona esto, ejecute una consulta como esta en el almacén de datos AdventureWorksDW. Esta
vista devuelve datos de ventas que se usan en la creación de previsiones.
USE AdventureWorksDW
GO
SELECT ReportingDate
, CAST(ModelRegion as varchar(50)) as ProductSeries
, Amount
FROM [AdventureWorksDW].[dbo].[vTimeSeries]
WHERE [ModelRegion] = 'M200 Europe'
ORDER BY ReportingDate ASC
NOTE
Puede usar cualquier versión de AdventureWorks o crear una consulta diferente con una base de datos propia. Lo
importante es intentar controlar algunos datos que contienen valores numéricos, de texto y de fecha y hora.
Ahora, intente pegar esta consulta como entrada para el procedimiento almacenado.
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N' str(InputDataSet);
OutputDataSet <- InputDataSet;'
, @input_data_1 = N'
SELECT ReportingDate
, CAST(ModelRegion as varchar(50)) as ProductSeries
, Amount
FROM [AdventureWorksDW].[dbo].[vTimeSeries]
WHERE [ModelRegion] = ''M200 Europe''
ORDER BY ReportingDate ASC ;'
WITH RESULT SETS undefined;
Si se produce un error, probablemente tendrá que realizar algunas modificaciones en el texto de consulta. Por
ejemplo, el predicado de cadena en la cláusula WHERE se debe incluir entre dos conjuntos de comillas simples.
Después de conseguir que la consulta funcione, revise los resultados de la función str para ver cómo R
procesa los datos de entrada.
Resultados
Pasos siguientes
Para obtener información sobre cómo escribir funciones avanzadas de R con aprendizaje automático de SQL,
siga este inicio rápido:
Escritura de funciones de R avanzadas con aprendizaje automático de SQL
Inicio rápido: Funciones de R con aprendizaje
automático de SQL
14/07/2021 • 4 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
En este inicio rápido, aprenderá a usar las funciones matemáticas y de utilidad de R con SQL Server Machine
Learning Services o en clústeres de macrodatos. Las funciones estadísticas suelen ser complicadas de
implementar en T-SQL, pero esto se puede hacer en R con solo unas pocas líneas de código.
En este inicio rápido, aprenderá a usar las funciones matemáticas y de utilidad de R con SQL Server Machine
Learning Services. Las funciones estadísticas suelen ser complicadas de implementar en T-SQL, pero esto se
puede hacer en R con solo unas pocas líneas de código.
En este inicio rápido, aprenderá a usar las funciones matemáticas y de utilidad de R con SQL Server R Services.
Las funciones estadísticas suelen ser complicadas de implementar en T-SQL, pero esto se puede hacer en R con
solo unas pocas líneas de código.
En este inicio rápido, obtendrá información sobre cómo usar estructuras de datos y tipos de datos cuando use R
en Machine Learning Services en Azure SQL Managed Instance. Obtendrá in sobre cómo mover datos entre R y
SQL Managed Instance, así como las incidencias comunes que pueden producirse.
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.
Para llamar a esta línea de R desde T-SQL, agregue la función de R del parámetro de script de
sp_execute_external_script , de la manera siguiente:
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N'
OutputDataSet <- as.data.frame(rnorm(100, mean = 50, sd =3));'
, @input_data_1 = N' ;'
WITH RESULT SETS (([Density] float NOT NULL));
La primera línea define cada uno de los parámetros de entrada de SQL que son necesarios cuando se
ejecuta el procedimiento almacenado.
La línea que comienza con @params define todas las variables usadas por el código de R y los
correspondientes tipos de datos de SQL.
Las líneas inmediatamente a continuación asignan los nombres de parámetro de SQL a los nombres de
variable de R correspondientes.
Ahora que ha ajustado la función de R en un procedimiento almacenado, puede llamar a la función fácilmente y
pasar distintos valores, como a continuación:
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N'
library(utils);
start.time <- proc.time();
# Run R processes
Para otras funciones útiles, consulte Uso de funciones de generación de perfiles de código de R para mejorar el
rendimiento.
Pasos siguientes
Para crear un modelo de aprendizaje automático usando R con aprendizaje automático de SQL, siga este inicio
rápido:
Creación y puntuación de un modelo predictivo en R con el aprendizaje automático de SQL
Inicio rápido: Creación y puntuación de un modelo
predictivo en R con el aprendizaje automático de
SQL
14/07/2021 • 7 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
En este inicio rápido, creará y entrenará un modelo predictivo con T. Guardará el modelo en una tabla de su
instancia de SQL Server y, después, usará el modelo para predecir valores a partir de datos nuevos mediante
SQL Server Machine Learning Services o en clústeres de macrodatos.
En este inicio rápido, creará y entrenará un modelo predictivo con T. Guardará el modelo en una tabla de su
instancia de SQL Server y, después, usará el modelo para predecir valores a partir de datos nuevos mediante
SQL Server Machine Learning Services.
En este inicio rápido, creará y entrenará un modelo predictivo con T. Guardará el modelo en una tabla de su
instancia de SQL Server y, después, usará el modelo para predecir valores a partir de datos nuevos mediante
SQL Server R Services.
En este inicio rápido, creará y entrenará un modelo predictivo con T. Guardará el modelo en una tabla de su
instancia de SQL Server y, después, usará el modelo para predecir valores a partir de datos nuevos mediante
Machine Learning Services en Azure SQL Managed Instance.
Creará y ejecutará dos procedimientos almacenados que se ejecutan en SQL. El primero usa el conjunto de
datos mtcars incluido con R y genera un sencillo modelo lineal generalizado (GLM) que predice la probabilidad
de que un vehículo tenga transmisión manual. El segundo procedimiento es para puntuación: realiza una
llamada al modelo generado en el primer procedimiento para generar un conjunto de predicciones basadas en
datos nuevos. Al colocar código de R en un procedimiento almacenado en SQL, las operaciones se incluyen en
SQL, son reutilizables y pueden recibir llamadas de otros procedimientos almacenados y aplicaciones cliente.
TIP
Para más información sobre los modelos lineales, pruebe este tutorial, donde se describe el proceso para adaptar un
modelo mediante rxLinMod: Ajuste de modelos lineales
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.
TIP
Muchos conjuntos de datos, pequeños y grandes, se incluyen con el entorno en tiempo de ejecución de R. Para
obtener una lista de los conjuntos de datos instalados en R, escriba library(help="datasets") desde un
símbolo del sistema de R.
2. Ejecute la siguiente instrucción Transact-SQL para llamar al procedimiento almacenado, genere el modelo
y guárdelo en la tabla que ha creado.
TIP
Si ejecuta este código una segunda vez, se mostrará el error siguiente: "Infracción de restricción de CLAVE
PRINCIPAL… No se puede insertar una clave duplicada en el objeto dbo.stopping_distance_models". Una opción
para evitar este error consiste en actualizar el nombre de cada nuevo modelo. Por ejemplo, podría cambiar el
nombre a algo más descriptivo e incluir el tipo de modelo, el día en que lo creó, etc.
UPDATE GLM_models
SET model_name = 'GLM_' + format(getdate(), 'yyyy.MM.HH.mm', 'en-gb')
WHERE model_name = 'default model'
EXEC sp_execute_external_script
@language = N'R'
, @script = N'
current_model <- unserialize(as.raw(glmmodel));
new <- data.frame(NewMTCars);
predicted.am <- predict(current_model, new, type = "response");
str(predicted.am);
OutputDataSet <- cbind(new, predicted.am);
'
, @input_data_1 = N'SELECT hp, wt FROM dbo.NewMTCars'
, @input_data_1_name = N'NewMTCars'
, @params = N'@glmmodel varbinary(max)'
, @glmmodel = @glmmodel
WITH RESULT SETS ((new_hp INT, new_wt DECIMAL(10,3), predicted_am DECIMAL(10,3)));
NOTE
En el ejemplo, la función str se agrega durante la fase de pruebas para comprobar el esquema de los datos que se
devuelven desde R. Puede quitar la instrucción más tarde.
Los nombres de columna usados en el script de R no tienen que pasarse necesariamente al resultado del procedimiento
almacenado. Esta es la cláusula WITH RESULTS usada para definir nuevos nombres de columna.
Resultados
También puede usar la instrucción PREDICT (Transact-SQL) para generar una puntuación o un valor predicho
basándose en un modelo almacenado.
Pasos siguientes
Para obtener más información sobre los tutoriales de R con el aprendizaje automático de SQL, consulte:
Tutoriales de R
Tutoriales de Python para aprendizaje automático
de SQL
14/07/2021 • 2 minutes to read
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores de Instancia administrada de Azure SQL
En este artículo se describen los tutoriales e inicios rápidos de Python para Machine Learning Services en
SQL Server y en clústeres de macrodatos.
En este artículo se describen los tutoriales e inicios rápidos de Python para SQL Server Machine Learning
Services.
En este artículo se describen los tutoriales e inicios rápidos de Python para Machine Learning Services en Azure
SQL Managed Instance.
Tutoriales de Python
T UTO RIA L DESC RIP C IÓ N
Predicción de alquiler de esquís con regresión lineal Utilice Python con regresión lineal para predecir el número
de alquileres de esquí. Use cuadernos en Azure Data Studio
para preparar los datos y entrenar el modelo y T-SQL para la
implementación de modelo.
Categorización de clientes con agrupación en clústeres k- Utilice Python para desarrollar e implementar un modelo de
means agrupación en clústeres K-means para clasificar a los clientes.
Use cuadernos en Azure Data Studio para preparar los datos
y entrenar el modelo y T-SQL para la implementación de
modelo.
Creación de un modelo mediante revoscalepy Muestra cómo ejecutar código desde un cliente de Python
remoto mediante SQL Server como contexto de proceso. En
el tutorial se crea un modelo con la función r xLinMod de la
biblioteca revoscalepy .
Análisis de datos de Python para desarrolladores de SQL En este tutorial integral se muestra el proceso de
compilación de una solución completa de Python mediante
T-SQL.
Predicción de alquiler de esquís con regresión lineal Utilice Python con regresión lineal para predecir el número
de alquileres de esquí. Use cuadernos en Azure Data Studio
para preparar los datos y entrenar el modelo y T-SQL para la
implementación de modelo.
Categorización de clientes con agrupación en clústeres k- Utilice Python para desarrollar e implementar un modelo de
means agrupación en clústeres K-means para clasificar a los clientes.
Use cuadernos en Azure Data Studio para preparar los datos
y entrenar el modelo y T-SQL para la implementación de
modelo.
Inicios rápidos de Python
Si no está familiarizado con el aprendizaje automático de SQL, puede probar también los inicios rápidos de
Python.
Ejecución de scripts de Python simples Conozca los conceptos básicos sobre cómo llamar a Python
en T-SQL con sp_execute_external_script.
Objetos y estructuras de datos con Python Muestra cómo SQL usa el paquete Pandas de Python para
administrar estructuras de datos.
Creación y puntuación de un modelo predictivo en Python Explica cómo crear, entrenar y usar un modelo de Python
para hacer predicciones a partir de nuevos datos.
Pasos siguientes
Extensión de Python en SQL Server
Tutorial de Python: Predicción de alquileres de
esquíes con regresión lineal con aprendizaje
automático de SQL
14/07/2021 • 4 minutes to read
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores de Instancia administrada de Azure SQL
En esta serie de tutoriales de cuatro partes, usará Python y una regresión lineal en SQL Server Machine
Learning Services o en clústeres de macrodatos para predecir el número de alquileres de esquíes. En este
tutorial, se usa un cuaderno de Python en Azure Data Studio.
En esta serie de tutoriales de cuatro partes, usará Python y una regresión lineal en
SQL Server Machine Learning Services para predecir el número de alquileres de esquíes. En este tutorial, se usa
un cuaderno de Python en Azure Data Studio.
En esta serie de tutoriales de cuatro partes, usará Python y una regresión lineal en Machine Learning Services
en Azure SQL Managed Instance para predecir el número de alquileres de esquíes. En este tutorial, se usa un
cuaderno de Python en Azure Data Studio.
Imagine que es el propietario de una empresa de alquiler de esquíes y quiere predecir el número de alquileres
que tendrá en una fecha futura. Esta información le ayudará a preparar las existencias, el personal y las
instalaciones.
En la primera parte de esta serie, configurará los requisitos previos. En las partes dos y tres, desarrollará scripts
de Python en un cuaderno para preparar sus datos y entrenar un modelo de aprendizaje automático. Después,
en la parte tres, ejecutará esos scripts de Python en la base de datos con procedimientos almacenados en T-SQL.
En este artículo, aprenderá a:
Importar una base de datos de ejemplo
En la parte dos, aprenderá a cargar los datos desde una base de datos en una trama de datos de Python y a
preparar los datos en Python.
En la parte tres, aprenderá a entrenar un modelo de regresión lineal en Python.
En la parte cuatro, aprenderá a almacenar el modelo en una base de datos y, luego, a crear procedimientos
almacenados a partir de los scripts de Python desarrollados en las partes dos y tres. Los procedimientos
almacenados se ejecutarán en el servidor para realizar predicciones basándose en datos nuevos.
Prerrequisitos
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.
Machine Learning Services en Azure SQL Managed Instance: para obtener más información, vea Machine
Learning Services de Instancia administrada de Azure SQL (versión preliminar).
SQL Server Management Studio para restaurar la base de datos de ejemplo en Azure SQL Managed
Instance.
IDE de Python: en este tutorial, se usa un cuaderno de Python en Azure Data Studio. Para más
información, vea Uso de cuadernos en Azure Data Studio.
Herramienta de consultas SQL: en este tutorial, se da por hecho que usa Azure Data Studio.
Paquetes de Python adicionales: en los ejemplos de esta serie de tutoriales, se usan los paquetes de
Python siguiente que puede que no estén instalados de manera predeterminada:
Pandas
pyodbc
sklearn
Para instalar estos paquetes:
1. En el cuaderno de Azure Data Studio, seleccione Administrar paquetes .
2. En el panel Administrar paquetes , seleccione la pestaña Agregar nuevo .
3. Para cada uno de los paquetes siguientes, escriba el nombre del paquete, haga clic en Buscar y, a
continuación, haga clic en instalar .
Como alternativa, puede abrir un símbolo del sistema , cambiar a la ruta de instalación de la versión de
Python que usa en Azure Data Studio (por ejemplo, cd %LocalAppData%\Programs\Python\Python37-32 ) y, a
continuación, ejecutar pip install para cada paquete.
NOTE
Si usa Machine Learning Services en clústeres de macrodatos, consulte Restauración de una base de datos en la instancia
maestra del clúster de macrodatos de SQL Server.
USE TutorialDB;
SELECT * FROM [dbo].[rental_data];
Limpieza de recursos
Si no quiere continuar con este tutorial, elimine la base de datos TutorialDB.
Pasos siguientes
En la parte uno de esta serie de tutoriales, ha completado estos pasos:
Instalación de los requisitos previos
Importar una base de datos de ejemplo
Para preparar los datos de la base de datos TutorialDB, siga la parte dos de esta serie de tutoriales:
Tutorial de Python: Preparación de los datos para entrenar un modelo de regresión lineal
Tutorial de Python: Preparación de datos para
entrenar un modelo de regresión lineal con
aprendizaje automático de SQL
14/07/2021 • 3 minutes to read
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores de Instancia administrada de Azure SQL
En la parte dos de esta serie de tutoriales de cuatro partes, preparará los datos de una base de datos mediante
Python. Más adelante en esta serie, usará estos datos para entrenar e implementar un modelo de regresión
lineal en Python con SQL Server Machine Learning Services o en clústeres de macrodatos.
En la parte dos de esta serie de tutoriales de cuatro partes, preparará los datos de una base de datos mediante
Python. Más adelante en esta serie, usará estos datos para entrenar e implementar un modelo de regresión
lineal en Python con SQL Server Machine Learning Services.
En la parte dos de esta serie de tutoriales de cuatro partes, preparará los datos de una base de datos mediante
Python. Más adelante en esta serie, usará estos datos para entrenar e implementar un modelo de regresión
lineal en Python con Machine Learning Services en Azure SQL Managed Instance.
En este artículo, aprenderá a:
Cargar los datos desde la base de datos en una trama de datos de Pandas
Quitar columnas para preparar los datos en Python
En la parte uno, ha aprendido a restaurar la base de datos de ejemplo.
En la parte tres, aprenderá a entrenar un modelo de aprendizaje automático de regresión lineal en Python.
En la parte cuatro, aprenderá a almacenar el modelo en una base de datos y, luego, a crear procedimientos
almacenados a partir de los scripts de Python desarrollados en las partes dos y tres. Los procedimientos
almacenados se ejecutarán en el servidor para realizar predicciones basándose en datos nuevos.
Prerrequisitos
En la parte dos de este tutorial, se da por hecho que ha completado la parte uno y los requisitos previos.
query_str = 'SELECT Year, Month, Day, Rentalcount, Weekday, Holiday, Snow FROM dbo.rental_data'
df = pandas.read_sql(sql=query_str, con=conn_str)
# Filter the columns to remove ones we don't want to use in the training
columns = [c for c in columns if c not in ["Year"]]
Pasos siguientes
En la parte dos de esta serie de tutoriales, ha completado estos pasos:
Cargar los datos desde la base de datos en una trama de datos de Pandas
Quitar columnas para preparar los datos en Python
Para entrenar un modelo de aprendizaje automático que use datos de la base de datos TutorialDB, siga la parte
tres de esta serie de tutoriales:
Tutorial de Python: Entrenamiento de un modelo de regresión lineal
Tutorial de Python: Entrenamiento de un modelo de
regresión lineal con aprendizaje automático de SQL
14/07/2021 • 3 minutes to read
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores de Instancia administrada de Azure SQL
En la parte tres de esta serie de tutoriales de cuatro partes, entrenará un modelo de regresión lineal en Python.
En la siguiente parte de esta serie, implementará este modelo en una base de datos de SQL Server con Machine
Learning Services o en clústeres de macrodatos.
En la parte tres de esta serie de tutoriales de cuatro partes, entrenará un modelo de regresión lineal en Python.
En la siguiente parte de esta serie, implementará el modelo en una base de datos de SQL Server con
Machine Learning Services.
En la parte tres de esta serie de tutoriales de cuatro partes, entrenará un modelo de regresión lineal en Python.
En la siguiente parte de esta serie, implementará este modelo en una base de datos de Azure SQL Managed
Instance con Machine Learning Services.
En este artículo, aprenderá a:
Entrenamiento de un modelo de regresión lineal
Predicciones mediante el modelo de regresión lineal
En la parte uno, ha aprendido a restaurar la base de datos de ejemplo.
En la parte dos, ha aprendido a cargar los datos desde una base de datos en una trama de datos de Python y a
preparar los datos en Python.
En la parte cuatro, aprenderá a almacenar el modelo en una base de datos y, luego, a crear procedimientos
almacenados a partir de los scripts de Python desarrollados en las partes dos y tres. Los procedimientos
almacenados se ejecutarán en el servidor para realizar predicciones basándose en datos nuevos.
Prerrequisitos
En la parte tres de este tutorial, se da por hecho que ha completado la parte uno y los requisitos previos.
# Select anything not in the training set and put it in the testing set.
test = df.loc[~df.index.isin(train.index)]
Realización de predicciones
Use una función de predicción para predecir el número de alquileres mediante el modelo lin_model .
Predictions: [ 40. 38. 240. 39. 514. 48. 297. 25. 507. 24. 30. 54. 40. 26.
30. 34. 42. 390. 336. 37. 22. 35. 55. 350. 252. 370. 499. 48.
37. 494. 46. 25. 312. 390. 35. 35. 421. 39. 176. 21. 33. 452.
34. 28. 37. 260. 49. 577. 312. 24. 24. 390. 34. 64. 26. 32.
33. 358. 348. 25. 35. 48. 39. 44. 58. 24. 350. 651. 38. 468.
26. 42. 310. 709. 155. 26. 648. 617. 26. 846. 729. 44. 432. 25.
39. 28. 325. 46. 36. 50. 63.]
Computed error: 2.9960763804270902e-27
Pasos siguientes
En la parte tres de esta serie de tutoriales, ha completado estos pasos:
Entrenamiento de un modelo de regresión lineal
Predicciones mediante el modelo de regresión lineal
Para implementar el modelo de aprendizaje automático que ha creado, siga la parte cuatro de esta serie de
tutoriales:
Tutorial de Python: Implementación de un modelo de aprendizaje automático
Tutorial de Python: Implementación de un modelo
de regresión lineal con aprendizaje automático de
SQL
14/07/2021 • 4 minutes to read
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores de Instancia administrada de Azure SQL
En la parte cuatro de esta serie de tutoriales de cuatro partes, implementará un modelo de regresión lineal
desarrollado en Python en una base de datos de SQL Server mediante Machine Learning Services o clústeres de
macrodatos.
En la parte cuatro de esta serie de tutoriales de cuatro partes, implementará un modelo de regresión lineal
desarrollado en Python en una base de datos de SQL Server mediante Machine Learning Services.
En la parte cuatro de esta serie de tutoriales de cuatro partes, implementará un modelo de regresión lineal
desarrollado en Python en una base de datos de Azure SQL Managed Instance mediante Machine Learning
Services.
En este artículo, aprenderá a:
Crear un procedimiento almacenado que genere el modelo de aprendizaje automático
Almacenar el modelo en una tabla de base de datos
Crear un procedimiento almacenado que realice predicciones mediante el modelo
Ejecutar el modelo con datos nuevos
En la parte uno, ha aprendido a restaurar la base de datos de ejemplo.
En la parte dos, ha aprendido a cargar los datos desde una base de datos en una trama de datos de Python y a
preparar los datos en Python.
En la parte tres, ha aprendido a entrenar un modelo de aprendizaje automático de regresión lineal en Python.
Prerrequisitos
En la parte cuatro de este tutorial, se da por hecho que ha completado la parte uno y los requisitos previos.
df = rental_train_data
, @input_data_1 = N'select "RentalCount", "Year", "Month", "Day", "WeekDay", "Snow", "Holiday" from
dbo.rental_data where Year < 2015'
, @input_data_1_name = N'rental_train_data'
, @params = N'@trained_model varbinary(max) OUTPUT'
, @trained_model = @trained_model OUTPUT;
END;
GO
USE TutorialDB;
DROP TABLE IF EXISTS dbo.rental_py_models;
GO
CREATE TABLE dbo.rental_py_models (
model_name VARCHAR(30) NOT NULL DEFAULT('default model') PRIMARY KEY,
model VARBINARY(MAX) NOT NULL
);
GO
2. Guarde el modelo en la tabla como un objeto binario, con el nombre de modelo linear_model .
EXECUTE sp_execute_external_script
@language = N'Python',
@script = N'
rental_model = pickle.loads(py_model)
df = rental_score_data
# Compute error between the test predictions and the actual values.
lin_mse = mean_squared_error(lin_predictions, df[target])
#print(lin_mse)
predictions_df = pandas.DataFrame(lin_predictions)
END;
GO
--Insert the results of the predictions for test set into a table
INSERT INTO py_rental_predictions
EXEC py_predict_rentalcount 'linear_model';
Pasos siguientes
En la parte cuatro de esta serie de tutoriales, ha aprendido a:
Crear un procedimiento almacenado que genere el modelo de aprendizaje automático
Almacenar el modelo en una tabla de base de datos
Crear un procedimiento almacenado que realice predicciones mediante el modelo
Ejecutar el modelo con datos nuevos
Para más información sobre cómo usar Python en el aprendizaje automático de SQL, consulte:
Tutoriales de Python
Tutorial de Python: Clasificación de clientes por
categorías mediante la agrupación en clústeres k-
means con aprendizaje automático de SQL
14/07/2021 • 4 minutes to read
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores de Instancia administrada de Azure SQL
En esta serie de tutoriales de cuatro partes, usará Python para desarrollar e implementar un modelo de
agrupación en clústeres k-means en SQL Server Machine Learning Services o clústeres de macrodatos para
categorizar datos de clientes.
En esta serie de tutoriales de cuatro partes, usará Python para desarrollar e implementar un modelo de
agrupación en clústeres k-means en SQL Server Machine Learning Services para agrupar en clústeres datos de
clientes.
En esta serie de tutoriales de cuatro partes, usará Python para desarrollar e implementar un modelo de
agrupación en clústeres k-means en Machine Learning Services en Azure SQL Managed Instance para agrupar
en clústeres datos de clientes.
En la primera parte de esta serie, configurará los requisitos previos para el tutorial y, después, restaurará un
conjunto de datos de ejemplo en una base de datos. Más adelante en esta serie, usará estos datos para entrenar
e implementar un modelo de agrupación en clústeres en Python con aprendizaje automático de SQL.
En las partes dos y tres de esta serie, desarrollará scripts de Python en un cuaderno de Azure Data Studio para
analizar y preparar los datos y entrenar un modelo de aprendizaje automático. Después, en la parte cuatro,
ejecutará esos scripts de Python dentro de una base de datos mediante los procedimientos almacenados.
Agrupar en clústeres es organizar datos en grupos, donde los miembros de un grupo son de alguna forma
similares. Para esta serie de tutoriales, imagine que es el propietario de un negocio de venta al por menor. Usará
el algoritmo k-means para realizar la agrupación de clientes en clústeres en un conjunto de datos de compras y
devoluciones de productos. Al agrupar los clientes en clústeres, puede centrar sus actividades de marketing de
forma más eficaz al dirigirse a grupos específicos. La agrupación en clústeres k-means es un algoritmo de
aprendizaje no supervisado que analiza patrones en datos basándose en similitudes.
En este artículo, aprenderá a:
Restauración de una base de datos de ejemplo
En la parte dos, aprenderá a preparar los datos de una base de datos para realizar la agrupación en clústeres.
En la parte tres, aprenderá a crear y entrenar un modelo de agrupación en clústeres k-means en Python.
En la parte cuatro, aprenderá a crear un procedimiento almacenado en una base de datos que pueda realizar la
agrupación en clústeres en Python basándose en datos nuevos.
Prerrequisitos
SQL Server Machine Learning Services con la opción de lenguaje de Python: siga las instrucciones de
instalación en 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 con la opción de lenguaje de Python: siga las instrucciones de
instalación en la Guía de instalación para 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).
SQL Server Management Studio para restaurar la base de datos de ejemplo en Azure SQL Managed
Instance.
Azure Data Studio Usará un cuaderno en Azure Data Studio para Python y SQL. Para obtener más
información sobre los cuadernos, vea Uso de los cuadernos en Azure Data Studio.
Paquetes de Python adicionales: en los ejemplos de esta serie de tutoriales, se usan paquetes de Python
que puede que no estén instalados.
Abra un símbolo del sistema y cambie a la ruta de instalación de la versión de Python que use en
Azure Data Studio. Por ejemplo, cd %LocalAppData%\Programs\Python\Python37-32 . A continuación, ejecute
los siguientes comandos para instalar cualquiera de estos paquetes que no están ya instalados.
NOTE
Si usa Machine Learning Services en clústeres de macrodatos, consulte Restauración de una base de datos en la instancia
maestra del clúster de macrodatos de SQL Server.
USE tpcxbb_1gb;
SELECT * FROM [dbo].[customer];
USE tpcxbb_1gb;
SELECT * FROM [dbo].[customer];
Limpieza de recursos
Si no quiere continuar con este tutorial, elimine la base de datos tpcxbb_1gb.
Pasos siguientes
En la parte uno de esta serie de tutoriales, ha completado estos pasos:
Restauración de una base de datos de ejemplo
Para preparar los datos para el modelo de aprendizaje automático, siga la parte dos de esta serie de tutoriales:
Tutorial de Python: Preparación de datos para realizar la agrupación en clústeres
Tutorial de Python: Preparación de datos para
clasificar clientes por categorías con aprendizaje
automático de SQL
14/07/2021 • 3 minutes to read
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores de Instancia administrada de Azure SQL
En la parte dos de esta serie de tutoriales de cuatro partes, restaurará y preparará los datos de una base de
datos mediante Python. Más adelante en esta serie, usará estos datos para entrenar e implementar un modelo
de agrupación en clústeres en Python con SQL Server Machine Learning Services o en clústeres de macrodatos.
En la parte dos de esta serie de tutoriales de cuatro partes, restaurará y preparará los datos de una base de
datos mediante Python. Más adelante en esta serie, usará estos datos para entrenar e implementar un modelo
de agrupación en clústeres en Python con SQL Server Machine Learning Services.
En la parte dos de esta serie de tutoriales de cuatro partes, restaurará y preparará los datos de una base de
datos mediante Python. Más adelante en esta serie, usará estos datos para entrenar e implementar un modelo
de agrupación en clústeres en Python con Machine Learning Services en Azure SQL Managed Instance.
En este artículo, aprenderá a:
Separación de los clientes en distintas dimensiones mediante Python
Carga de datos de la base de datos en una trama de datos de Python
En la parte uno, ha instalado los requisitos previos y ha restaurado la base de datos de ejemplo.
En la parte tres, aprenderá a crear y entrenar un modelo de agrupación en clústeres k-means en Python.
En la parte cuatro, aprenderá a crear un procedimiento almacenado en una base de datos que pueda realizar la
agrupación en clústeres en Python basándose en datos nuevos.
Prerrequisitos
En la parte dos de este tutorial, se da por hecho que ha completado los requisitos previos de la par te uno .
Separación de clientes
Para preparar la agrupación en clústeres de los clientes, primero separe los clientes en las dimensiones
siguientes:
orderRatio = índice de devolución de pedidos (número total de pedidos con una devolución total o parcial
comparado con el número total de pedidos)
itemsRatio = índice de artículos devueltos (número total de artículos devueltos comparado con el número
de artículos comprados)
monetar yRatio = índice de importes de devoluciones (total de importes monetarios de los artículos
devueltos comparado con el importe de las compras)
frequency = frecuencia de devolución
Abra un nuevo cuaderno en Azure Data Studio y escriba el script siguiente.
En la cadena de conexión, reemplace los detalles de conexión según corresponda.
# Load packages.
import pyodbc
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from scipy.spatial import distance as sci_distance
from sklearn import cluster as sk_cluster
################################################################################################
################################################################################################
input_query = '''SELECT
ss_customer_sk AS customer,
ROUND(COALESCE(returns_count / NULLIF(1.0*orders_count, 0), 0), 7) AS orderRatio,
ROUND(COALESCE(returns_items / NULLIF(1.0*orders_items, 0), 0), 7) AS itemsRatio,
ROUND(COALESCE(returns_money / NULLIF(1.0*orders_money, 0), 0), 7) AS monetaryRatio,
COALESCE(returns_count, 0) AS frequency
FROM
(
SELECT
ss_customer_sk,
-- return order ratio
COUNT(distinct(ss_ticket_number)) AS orders_count,
-- return ss_item_sk ratio
COUNT(ss_item_sk) AS orders_items,
-- return monetary amount ratio
SUM( ss_net_paid ) AS orders_money
FROM store_sales s
GROUP BY ss_customer_sk
) orders
LEFT OUTER JOIN
(
SELECT
sr_customer_sk,
-- return order ratio
count(distinct(sr_ticket_number)) as returns_count,
-- return ss_item_sk ratio
COUNT(sr_item_sk) as returns_items,
-- return monetary amount ratio
SUM( sr_return_amt ) AS returns_money
FROM store_returns
GROUP BY sr_customer_sk ) returned ON ss_customer_sk=sr_customer_sk'''
Ahora, muestre el principio de la trama de datos para asegurarse de que sea correcta.
Rows Read: 37336, Total Rows Processed: 37336, Total Chunk Time: 0.172 seconds
Data frame: customer orderRatio itemsRatio monetaryRatio frequency
0 29727.0 0.000000 0.000000 0.000000 0
1 97643.0 0.068182 0.078176 0.037034 3
2 57247.0 0.000000 0.000000 0.000000 0
3 32549.0 0.086957 0.068657 0.031281 4
4 2040.0 0.000000 0.000000 0.000000 0
Limpieza de recursos
Si no quiere continuar con este tutorial, elimine la base de datos tpcxbb_1gb.
Pasos siguientes
En la parte dos de esta serie de tutoriales, ha completado estos pasos:
Separación de los clientes en distintas dimensiones mediante Python
Carga de datos de la base de datos en una trama de datos de Python
Para crear un modelo de aprendizaje automático que use estos datos de clientes, siga la parte tres de esta serie
de tutoriales:
Tutorial de Python: Creación de un modelo predictivo
Tutorial de Python: Creación de un modelo para
clasificar clientes con aprendizaje automático de
SQL
14/07/2021 • 5 minutes to read
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores de Instancia administrada de Azure SQL
En la parte tres de esta serie de tutoriales de cuatro partes, creará un modelo de k-means en Python para
realizar la agrupación en clústeres. En la siguiente parte de esta serie, implementará este modelo en una base de
datos con SQL Server Machine Learning Services o en clústeres de macrodatos.
En la parte tres de esta serie de tutoriales de cuatro partes, creará un modelo de k-means en Python para
realizar la agrupación en clústeres. En la siguiente parte de esta serie, implementará este modelo en una base de
datos con SQL Server Machine Learning Services.
En la parte tres de esta serie de tutoriales de cuatro partes, creará un modelo de k-means en Python para
realizar la agrupación en clústeres. En la siguiente parte de esta serie, implementará este modelo en una base de
datos con Machine Learning Services en Azure SQL Managed Instance.
En este artículo, aprenderá a:
Definición del número de clústeres para un algoritmo de k-means
Agrupación en clústeres
Análisis de los resultados
En la parte uno, ha instalado los requisitos previos y ha restaurado la base de datos de ejemplo.
En la parte dos, ha aprendido a preparar los datos de una base de datos para realizar la agrupación en clústeres.
En la parte cuatro, aprenderá a crear un procedimiento almacenado en una base de datos que pueda realizar la
agrupación en clústeres en Python basándose en datos nuevos.
Prerrequisitos
En la parte tres de este tutorial, se da por hecho que ha completado los requisitos previos de la par te uno y
que ha realizado los pasos de la par te dos .
################################################################################################
## Determine number of clusters using the Elbow method
################################################################################################
cdata = customer_data
K = range(1, 20)
KM = (sk_cluster.KMeans(n_clusters=k).fit(cdata) for k in K)
centroids = (k.cluster_centers_ for k in KM)
Según el gráfico, parece que k = 4 sería un buen valor para probar. El valor k agrupará los clientes en cuatro
clústeres.
Agrupación en clústeres
En el siguiente script de Python, usará la función KMeans del paquete sklearn.
################################################################################################
## Perform clustering using Kmeans
################################################################################################
# It looks like k=4 is a good number to use based on the elbow graph.
n_clusters = 4
Cluster0(n=31675):
-------------------
Cluster1(n=4989):
-------------------
Cluster2(n=1):
-------------------
Cluster3(n=671):
-------------------
Las cuatro medias de clústeres se proporcionan mediante las variables definidas en la parte uno:
orderRatio = índice de devolución de pedidos (número total de pedidos con una devolución total o parcial
comparado con el número total de pedidos)
itemsRatio = índice de artículos devueltos (número total de artículos devueltos comparado con el número de
artículos comprados)
monetaryRatio = índice de importes de devoluciones (total de importes monetarios de los artículos
devueltos comparado con el importe de las compras)
frequency = frecuencia de devolución
Con frecuencia, la minería de datos que usa k-means necesita un análisis más detallado de los resultados y
pasos adicionales para comprender mejor cada clúster, pero puede proporcionar pistas adecuadas. Estas son
dos formas en que se podrían interpretar estos resultados:
Parece que el clúster 0 es un grupo de clientes inactivos (todos los valores son de cero).
Parece que el clúster 3 es un grupo que destaca en términos de comportamiento de devoluciones.
El clúster 0 es claramente un conjunto de clientes inactivos. Puede que quiera dirigir sus actividades de
marketing hacia este grupo para generar interés por las compras. En el paso siguiente, consultará en la base de
datos las direcciones de correo electrónico de los clientes del clúster 0 para enviarles un correo electrónico
promocional.
Limpieza de recursos
Si no quiere continuar con este tutorial, elimine la base de datos tpcxbb_1gb.
Pasos siguientes
En la parte tres de esta serie de tutoriales, ha completado estos pasos:
Definición del número de clústeres para un algoritmo de k-means
Agrupación en clústeres
Análisis de los resultados
Para implementar el modelo de aprendizaje automático que ha creado, siga la parte cuatro de esta serie de
tutoriales:
Tutorial de Python: Implementación de un modelo de agrupación en clústeres
Tutorial de Python: Implementación de un modelo
para clasificar clientes por categorías con
aprendizaje automático de SQL
14/07/2021 • 4 minutes to read
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores de Instancia administrada de Azure SQL
En la parte cuatro de esta serie de tutoriales de cuatro partes, implementará un modelo de agrupación en
clústeres, desarrollado en Python, en una base de datos con SQL Server Machine Learning Services o en
Clústeres de macrodatos.
En la parte cuatro de esta serie de tutoriales de cuatro partes, implementará un modelo de agrupación en
clústeres, desarrollado en Python, en una base de datos mediante SQL Server Machine Learning Services.
En la parte cuatro de esta serie de tutoriales de cuatro partes, implementará un modelo de agrupación en
clústeres, desarrollado en Python, en una base de datos mediante Machine Learning Services en Azure
SQL Managed Instance.
Para realizar la agrupación en clústeres de forma periódica cuando se registren nuevos clientes, necesita llamar
al script de Python desde cualquier aplicación. Para hacerlo, puede implementar el script de Python en una base
de datos si lo coloca dentro de un procedimiento almacenado de SQL. Como el modelo se ejecuta en la base de
datos, se puede entrenar fácilmente con los datos almacenados en la base de datos.
En esta sección, moverá el código de Python que acaba de escribir en el servidor e implementará la agrupación
en clústeres.
En este artículo, aprenderá a:
Crear un procedimiento almacenado que genere el modelo
Agrupación en clústeres en el servidor
Uso de la información de agrupación en clústeres
En la parte uno, ha instalado los requisitos previos y ha restaurado la base de datos de ejemplo.
En la parte dos, ha aprendido a preparar los datos de una base de datos para realizar la agrupación en clústeres.
En la parte tres, ha aprendido a crear y entrenar un modelo de agrupación en clústeres k-means en Python.
Prerrequisitos
En la parte cuatro de esta serie de tutoriales, se da por hecho que ha completado los requisitos previos de la
par te uno y que ha realizado los pasos de la par te dos y la par te tres .
USE [tpcxbb_1gb]
USE [tpcxbb_1gb]
GO
BEGIN
DECLARE
EXEC sp_execute_external_script
@language = N'Python'
, @script = N'
import pandas as pd
from sklearn.cluster import KMeans
#We concluded in step 2 in the tutorial that 4 would be a good number of clusters
n_clusters = 4
#Perform clustering
est = KMeans(n_clusters=n_clusters,
random_state=111).fit(customer_data[["orderRatio","itemsRatio","monetaryRatio","frequency"]])
clusters = est.labels_
customer_data["cluster"] = clusters
OutputDataSet = customer_data
'
, @input_data_1 = @input_query
, @input_data_1_name = N'my_input_data'
with result sets (("Customer" int, "orderRatio" float,"itemsRatio" float,"monetaryRatio"
float,"frequency" float,"cluster" float));
float,"frequency" float,"cluster" float));
END;
GO
Agrupación en clústeres
Después de crear el procedimiento almacenado, ejecute el script siguiente para realizar la agrupación en
clústeres mediante el procedimiento.
USE [tpcxbb_1gb]
--Get email addresses of customers in cluster 0 for a promotion campaign
SELECT customer.[c_email_address], customer.c_customer_sk
FROM dbo.customer
JOIN
[dbo].[py_customer_clusters] as c
ON c.Customer = customer.c_customer_sk
WHERE c.cluster = 0
Puede cambiar el valor de c.cluster a las direcciones de correo electrónico de retorno de los clientes en otros
clústeres.
Limpieza de recursos
Cuando termine este tutorial, puede eliminar la base de datos tpcxbb_1gb.
Pasos siguientes
En la parte cuatro de esta serie de tutoriales, ha aprendido a:
Crear un procedimiento almacenado que genere el modelo
Agrupación en clústeres en el servidor
Uso de la información de agrupación en clústeres
Para más información sobre cómo usar Python en el aprendizaje automático de SQL, consulte:
Inicio rápido: Creación y ejecución de scripts de Python
Otros tutoriales de Python para aprendizaje automático de SQL
Instalación de paquetes de Python con sqlmlutils
Tutorial de Python: Predicción de tarifas de taxi de
Nueva York con clasificación binaria
14/07/2021 • 3 minutes to read
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores de Instancia administrada de Azure SQL
En esta serie de tutoriales de cinco partes para programadores de SQL, obtendrá información sobre la
integración de Python en SQL Server Machine Learning Services o en Clústeres de macrodatos.
En esta serie de tutoriales de cinco partes para programadores de SQL, obtendrá información sobre la
integración de Python en SQL Server Machine Learning Services.
En esta serie de tutoriales de cinco partes para programadores de SQL, obtendrá información sobre la
integración de Python en Machine Learning Services en Azure SQL Managed Instance.
Creará e implementará una solución de aprendizaje automático basada en Python mediante una base de datos
de ejemplo en SQL Server. Se usará T-SQL, Azure Data Studio, o SQL Server Management Studio, y una
instancia del motor de base de datos con el aprendizaje automático de SQL y la compatibilidad con el lenguaje
Python.
En esta serie de tutoriales se presentan las funciones de Python usadas en un flujo de trabajo de modelado de
datos. Algunas de las partes son la exploración de datos, la creación y el entrenamiento de un modelo de
clasificación binaria, y la implementación del modelo. Usará datos de ejemplo de la Comisión de taxis y
limusinas de la Ciudad de Nueva York. El modelo que se va a compilar predice si es probable que un trayecto
acabe en propina en función de la hora del día, la distancia recorrida y la ubicación de origen.
En la primera parte de esta serie, instalará los requisitos previos y restaurará la base de datos de ejemplo. En las
partes dos y tres, desarrollará scripts de Python para preparar sus datos y entrenar un modelo de Machine
Learning. Después, en las partes cuatro y cinco, ejecutará esos scripts de Python en la base de datos con
procedimientos almacenados en T-SQL.
En este artículo, hará lo siguiente:
Requisitos previos de instalación
Restauración de la base de datos de ejemplo
En la parte dos, explorará los datos de ejemplo y generará algunos trazados.
En la tercera, aprenderá a crear características a partir de datos sin procesar mediante una función de Transact-
SQL. Después, llamaremos a esa función desde un procedimiento almacenado para crear una tabla que contiene
los valores de las características.
En la parte cuatro, cargará los módulos y llamará a las funciones necesarias para crear y entrenar el modelo
mediante un procedimiento almacenado de SQL Server.
En la parte cinco, aprenderá a poner en marcha los modelos entrenados y guardados en la parte cuatro.
NOTE
Este tutorial está disponible tanto en R como en Python. Para la versión de R, consulte Tutorial de R: Predicción de tarifas
de taxi de Nueva York con clasificación binaria.
Requisitos previos
Instalar SQL Server Machine Learning Services con Python
Conceder permisos para la ejecución de scripts de Python y R
Restaurar la base de datos de demostración de taxis de Nueva York
Todas las tareas pueden realizarse mediante procedimientos almacenados de Transact-SQL de Azure Data Studio
o Management Studio.
En esta serie de tutoriales se supone que está familiarizado con las operaciones básicas de base de datos, como
la creación de bases de datos y tablas, la importación de datos y la escritura de consultas SQL. No da por
sentado que conoce Python; se proporciona todo el código de Python.
Pasos siguientes
En este artículo:
Instaló los requisitos previos
Restauró la base de datos de ejemplo
Tutorial de Python: Exploración y visualización de datos
Tutorial de Python: Explorar y visualizar datos
14/07/2021 • 5 minutes to read
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores de Instancia administrada de Azure SQL
En la parte dos de esta serie de tutoriales de cinco partes, explorará los datos de ejemplo y generará algunos
trazados. Más adelante, aprenderá a serializar objetos gráficos en Python y, después, a deserializarlos y a crear
trazados.
En este artículo, hará lo siguiente:
Revisar el código de ejemplo
Creación de trazados con Python en T-SQL
En la parte uno, ha instalado los requisitos previos y ha restaurado la base de datos de ejemplo.
En la tercera, aprenderá a crear características a partir de datos sin procesar mediante una función de Transact-
SQL. Después, llamaremos a esa función desde un procedimiento almacenado para crear una tabla que contiene
los valores de las características.
En la parte cuatro, cargará los módulos y llamará a las funciones necesarias para crear y entrenar el modelo
mediante un procedimiento almacenado de SQL Server.
En la parte cinco, aprenderá a poner en marcha los modelos entrenados y guardados en la parte cuatro.
fig_handle = plt.figure()
plt.hist(InputDataSet.tipped)
plt.xlabel("Tipped")
plt.ylabel("Counts")
plt.title("Histogram, Tipped")
plot0 = pd.DataFrame(data =[pickle.dumps(fig_handle)], columns =["plot"])
plt.clf()
plt.hist(InputDataSet.tip_amount)
plt.xlabel("Tip amount ($)")
plt.ylabel("Counts")
plt.title("Histogram, Tip amount")
plot1 = pd.DataFrame(data =[pickle.dumps(fig_handle)], columns =["plot"])
plt.clf()
plt.hist(InputDataSet.fare_amount)
plt.xlabel("Fare amount ($)")
plt.ylabel("Counts")
plt.title("Histogram, Fare amount")
plot2 = pd.DataFrame(data =[pickle.dumps(fig_handle)], columns =["plot"])
plt.clf()
2. Ahora, ejecute el procedimiento almacenado sin argumentos para generar un trazado a partir de los
datos codificados de forma rígida como la consulta de entrada.
EXEC [dbo].[PyPlotMatplotlib]
4. Desde un cliente de Python, ahora puede conectarse a la instancia de SQL Server que generó los objetos
de trazado binario y ver los trazados.
Para ello, ejecute el siguiente código de Python, reemplazando el nombre del servidor, el nombre de la
base de datos y las credenciales según corresponda (para la autenticación de Windows, reemplace los
parámetros UID y PWD por Trusted_Connection=True ). Asegúrese de que la versión de Python es la
misma en el cliente y en el servidor. Asegúrese también de que las bibliotecas de Python en el cliente (por
ejemplo, matplotlib) tienen la misma versión o una versión superior de las bibliotecas instaladas en el
servidor.
%matplotlib notebook
import pyodbc
import pickle
import os
cnxn = pyodbc.connect('DRIVER=SQL Server;SERVER={SERVER_NAME};DATABASE={DB_NAME};UID={USER_NAME};PWD=
{PASSWORD}')
cursor = cnxn.cursor()
cursor.execute("EXECUTE [dbo].[PyPlotMatplotlib]")
tables = cursor.fetchall()
for i in range(0, len(tables)):
fig = pickle.loads(tables[i][0])
fig.savefig(str(i)+'.png')
print("The plots are saved in directory: ",os.getcwd())
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores de Instancia administrada de Azure SQL
En la parte tres de esta serie de tutoriales de cinco partes, aprenderá a crear características a partir de datos sin
procesar mediante una función Transact-SQL. Después, llamará a esa función desde un procedimiento
almacenado de SQL para crear una tabla que contenga los valores de las características.
El proceso de caracterización, la creación de características a partir de los datos sin procesar, puede ser un paso
crítico en el modelado de análisis avanzados.
En este artículo, hará lo siguiente:
Modificará una función personalizada para calcular la distancia de la carrera
Guardará las características mediante otra función personalizada
En la parte uno, ha instalado los requisitos previos y ha restaurado la base de datos de ejemplo.
En la parte dos, ha explorado los datos de ejemplo y ha generado algunos trazados.
En la parte cuatro, cargará los módulos y llamará a las funciones necesarias para crear y entrenar el modelo
mediante un procedimiento almacenado de SQL Server.
En la parte cinco, aprenderá a poner en marcha los modelos entrenados y guardados en la parte cuatro.
Definir la función
Los valores de distancia notificados en los datos originales se basan en la distancia notificada del taxímetro y no
representan necesariamente la distancia geográfica o la distancia recorrida. Por tanto, debe calcular la distancia
directa entre los puntos de origen y destino, usando las coordenadas disponibles en el conjunto de datos de
origen NYC Taxi. Puede hacerlo mediante la fórmula Haversine en un función personalizada de Transact-SQL .
Usará una función personalizada de T-SQL, fnCalculateDistance, para calcular la distancia usando la fórmula
Haversine, y una segunda función personalizada de T-SQL, fnEngineerFeatures, para crear una tabla que
contiene todas las características.
Cálculo de la distancia del trayecto con fnCalculateDistance
1. La función fnCalculateDistance se incluye en la base de datos de ejemplo. Tómese un minuto para revisar
el código.
2. En Management Studio, expanda Programación , expanda Funciones y, después, Funciones
escalares . Haga clic con el botón derecho en fnCalculateDistance y seleccione Modificar para abrir el
script de Transact-SQL en una nueva ventana de consulta.
CREATE FUNCTION [dbo].[fnCalculateDistance] (@Lat1 float, @Long1 float, @Lat2 float, @Long2 float)
-- User-defined function that calculates the direct distance between two geographical coordinates
RETURNS float
AS
BEGIN
DECLARE @distance decimal(28, 10)
-- Convert to radians
SET @Lat1 = @Lat1 / 57.2958
SET @Long1 = @Long1 / 57.2958
SET @Lat2 = @Lat2 / 57.2958
SET @Long2 = @Long2 / 57.2958
-- Calculate distance
SET @distance = (SIN(@Lat1) * SIN(@Lat2)) + (COS(@Lat1) * COS(@Lat2) * COS(@Long2 - @Long1))
--Convert to miles
IF @distance <> 0
BEGIN
SET @distance = 3958.75 * ATAN(SQRT(1 - POWER(@distance, 2)) / @distance);
END
RETURN @distance
END
GO
Notas:
La función es una función escalar y devuelve un único valor de datos de un tipo predefinido.
Toma los valores de latitud y longitud como entradas, obtenidos de las ubicaciones de origen y destino de los
viajes. La fórmula Haversine convierte ubicaciones en radianes y usa esos valores para calcular la distancia
directa en millas entre las dos ubicaciones.
Para agregar el valor calculado a una tabla y poder usarlo para entrenar el modelo, deberá usar otra función,
fnEngineerFeatures.
Guardado de las características mediante fnEngineerFeatures
1. Dedique un minuto a revisar el código de la función T-SQL personalizada, fnEngineerFeatures, que se
incluye en la base de datos de ejemplo.
Esta función es una función con valores de tabla que toma varias columnas como entradas y genera una
tabla con varias columnas de características. El propósito de esta función es crear un conjunto de
características para usar en la creación de un modelo. La función fnEngineerFeatures llama a la función
de T-SQL creada anteriormente, fnCalculateDistance, para obtener la distancia directa entre las
ubicaciones de origen y destino.
CREATE FUNCTION [dbo].[fnEngineerFeatures] (
@passenger_count int = 0,
@trip_distance float = 0,
@trip_time_in_secs int = 0,
@pickup_latitude float = 0,
@pickup_longitude float = 0,
@dropoff_latitude float = 0,
@dropoff_longitude float = 0)
RETURNS TABLE
AS
RETURN
(
-- Add the SELECT statement with parameter references here
SELECT
@passenger_count AS passenger_count,
@trip_distance AS trip_distance,
@trip_time_in_secs AS trip_time_in_secs,
[dbo].[fnCalculateDistance](@pickup_latitude, @pickup_longitude, @dropoff_latitude,
@dropoff_longitude) AS direct_distance
)
GO
2. Para comprobar que esta función funciona, puede usarla para calcular la distancia geográfica de los viajes
en los que la distancia medida era 0 pero las ubicaciones de origen y destino eran diferentes.
Como puede ver, la distancia notificada por el taxímetro no siempre se corresponde con la distancia
geográfica. Por eso es importante la ingeniería de características.
En la parte siguiente, aprenderá a usar estas características de datos para crear y entrenar un modelo de
aprendizaje automático con Python.
Pasos siguientes
En este artículo:
Se modificó una función personalizada para calcular la distancia de la carrera
Se guardaron las características mediante otra función personalizada
Tutorial de Python: Entrenar y guardar un modelo de Python mediante T-SQL
Tutorial de Python: Entrenar y guardar un modelo
de Python mediante T-SQL
14/07/2021 • 6 minutes to read
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores de Instancia administrada de Azure SQL
En la cuarta parte de esta serie de tutoriales de cinco partes, aprenderá a entrenar un modelo de Machine
Learning usando los paquetes de Python scikit-learn y revoscalepy . Estas bibliotecas de Python ya están
instaladas con el aprendizaje automático de SQL Server.
Cargará los módulos y llamará a las funciones necesarias para crear y entrenar el modelo mediante un
procedimiento almacenado de SQL Server. El modelo requiere las características de datos que ha diseñado en
partes anteriores de esta serie de tutoriales. Por último, guardará el modelo entrenado en una tabla SQL Server.
En este artículo, hará lo siguiente:
Crear y entrenar un modelo mediante un procedimiento almacenado de SQL
Guardar el modelo entrenado en una tabla SQL
En la parte uno, ha instalado los requisitos previos y ha restaurado la base de datos de ejemplo.
En la parte dos, ha explorado los datos de ejemplo y ha generado algunos trazados.
En la tres, aprendió a crear características a partir de datos sin procesar mediante una función de Transact-SQL.
Después, llamó a esa función desde un procedimiento almacenado para crear una tabla que contiene los valores
de las características.
En la parte cinco, aprenderá a poner en marcha los modelos entrenados y guardados en la parte cuatro.
2. Para dividir los datos mediante una división personalizada, ejecute el procedimiento almacenado y
escriba un entero que represente el porcentaje de datos asignados al conjunto de entrenamiento. Por
ejemplo, la siguiente instrucción asignaría el 60 % de los datos al conjunto de entrenamiento.
EXEC PyTrainTestSplit 60
GO
SKLalgo = LogisticRegression()
logitObj = SKLalgo.fit(X, y)
##Serialize model
trained_model = pickle.dumps(logitObj)
',
@input_data_1 = N'
select tipped, fare_amount, passenger_count, trip_time_in_secs, trip_distance,
dbo.fnCalculateDistance(pickup_latitude, pickup_longitude, dropoff_latitude, dropoff_longitude) as
direct_distance
from nyctaxi_sample_training
',
@input_data_1_name = N'InputDataSet',
@params = N'@trained_model varbinary(max) OUTPUT',
@trained_model = @trained_model OUTPUT;
;
END;
GO
2. Ejecute estas instrucciones SQL para insertar el modelo entrenado en la tabla nyc_taxi_models.
Es posible que el procesamiento de los datos y el ajuste del modelo tarde unos minutos. Los mensajes
que se canalicen al flujo stdout de Python se muestran en la ventana Mensajes de Management Studio.
Por ejemplo:
3. Abra la tabla nyc_taxi_models. Puede ver que se ha agregado una fila nueva, que contiene el modelo
serializado en la columna modelo.
SciKit_model
0x800363736B6C6561726E2E6C696E6561....
TrainTipPredictionModelRxPy
Este procedimiento almacenado usa el nuevo paquete revoscalepy , que es un nuevo paquete de Python.
Contiene objetos, transformaciones y algoritmos similares a los proporcionados para el paquete RevoScaleR
del lenguaje R.
Al usar revoscalepy , puede crear contextos de proceso remotos, trasladar datos entre contextos de proceso,
transformar datos y entrenar modelos predictivos mediante algoritmos populares, como regresión logística y
lineal, árboles de decisión, etc. Para más información, vea Módulo revoscalepy en SQL Server y Referencia de
funciones de revoscalepy.
1. En Management Studio, abra una nueva ventana Consulta y ejecute esta instrucción para crear el
procedimiento almacenado TrainTipPredictionModelRxPy. Como el procedimiento almacenado ya incluye
una definición de los datos de entrada, no es necesario proporcionar una consulta de entrada.
## Create a logistic regression model using rx_logit function from revoscalepy package
logitObj = rx_logit("tipped ~ passenger_count + trip_distance + trip_time_in_secs + direct_distance",
data = InputDataSet);
## Serialize model
trained_model = pickle.dumps(logitObj)
',
@input_data_1 = N'
select tipped, fare_amount, passenger_count, trip_time_in_secs, trip_distance,
dbo.fnCalculateDistance(pickup_latitude, pickup_longitude, dropoff_latitude, dropoff_longitude) as
direct_distance
from nyctaxi_sample_training
',
@input_data_1_name = N'InputDataSet',
@params = N'@trained_model varbinary(max) OUTPUT',
@trained_model = @trained_model OUTPUT;
;
END;
GO
Este procedimiento almacenado realiza estos pasos como parte del entrenamiento del modelo:
La consulta SELECT aplica la función escalar personalizada fnCalculateDistance para calcular la
distancia directa entre las ubicaciones de origen y de destino. Los resultados de la consulta se
almacenan en la variable de entrada predeterminada de Python, InputDataset .
La variable binaria tipped se usa como la etiqueta o la columna de resultados y el modelo se ajusta
mediante estas columnas específicas: passenger_count, trip_distance, trip_time_in_secs y
direct_distance.
El modelo entrenado se serializa y se almacena en la variable de Python logitObj . Al agregar la
palabra clave OUTPUT de T-SQL, puede agregar la variable como un resultado del procedimiento
almacenado. En el paso siguiente, esa variable se usa para insertar el código binario del modelo en
una tabla de base de datos nyc_taxi_models. Este mecanismo facilita el almacenamiento y la
reutilización de modelos.
2. Ejecute el procedimiento almacenado como se indica aquí para insertar el modelo entrenado
revoscalepy en la tabla nyc_taxi_models.
DECLARE @model VARBINARY(MAX);
EXEC TrainTipPredictionModelRxPy @model OUTPUT;
INSERT INTO nyc_taxi_models (name, model) VALUES('revoscalepy_model', @model);
Es posible que el procesamiento de los datos y el ajuste del modelo tarden un rato. Los mensajes que se
canalicen al flujo stdout de Python se muestran en la ventana Mensajes de Management Studio. Por
ejemplo:
3. Abra la tabla nyc_taxi_models. Puede ver que se ha agregado una fila nueva, que contiene el modelo
serializado en la columna modelo.
revoscalepy_model
0x8003637265766F7363616c....
En la siguiente parte de este tutorial, usará los modelos entrenados para crear predicciones.
Pasos siguientes
En este artículo:
Creó y entrenó un modelo mediante un procedimiento almacenado de SQL
Guardó el modelo entrenado en una tabla SQL
Tutorial de Python: Ejecución de predicciones con Python insertado en un procedimiento almacenado
Tutorial de Python: Ejecución de predicciones con
Python insertado en un procedimiento almacenado
14/07/2021 • 9 minutes to read
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores de Instancia administrada de Azure SQL
En la parte cinco de esta serie de tutoriales de cinco partes, aprenderá a poner en marcha los modelos
entrenados y guardados en la parte anterior.
En este escenario, por operacionalización se entiende implementar el modelo en producción para su puntuación.
La integración con SQL Server hace que esto sea bastante sencillo, ya que se puede insertar código de Python
en un procedimiento almacenado. Para obtener predicciones del modelo en función de nuevas entradas, basta
con llamar al procedimiento almacenado desde una aplicación y pasar los nuevos datos.
En esta parte del tutorial se muestran dos métodos para crear predicciones basadas en un modelo de Python:
puntuación por lotes y puntuación fila por fila.
Puntuación por lotes: para proporcionar varias filas de datos de entrada, pase una consulta SELECT como
argumento al procedimiento almacenado. El resultado es una tabla de observaciones correspondientes a los
casos de entrada.
Puntuación individual: Pase un conjunto de valores de parámetros individuales como entrada. El
procedimiento almacenado devuelve una sola fila o valor.
Todo el código de Python necesario para la puntuación se facilita como parte de los procedimientos
almacenados.
En este artículo, hará lo siguiente:
Crear y usar procedimientos almacenados para la puntuación por lotes
Crear y usar procedimientos almacenados para puntuar una sola fila
En la parte uno, ha instalado los requisitos previos y ha restaurado la base de datos de ejemplo.
En la parte dos, ha explorado los datos de ejemplo y ha generado algunos trazados.
En la tres, aprendió a crear características a partir de datos sin procesar mediante una función de Transact-SQL.
Después, llamó a esa función desde un procedimiento almacenado para crear una tabla que contiene los valores
de las características.
En la parte cuatro, cargó los módulos y llamó a las funciones necesarias para crear y entrenar el modelo
mediante un procedimiento almacenado de SQL Server.
mod = pickle.loads(lmodel2)
X = InputDataSet[["passenger_count", "trip_distance", "trip_time_in_secs", "direct_distance"]]
y = numpy.ravel(InputDataSet[["tipped"]])
probArray = mod.predict_proba(X)
probList = []
for i in range(len(probArray)):
probList.append((probArray[i])[1])
probArray = numpy.asarray(probList)
fpr, tpr, thresholds = metrics.roc_curve(y, probArray)
aucResult = metrics.auc(fpr, tpr)
print ("AUC on testing data is: " + str(aucResult))
mod = pickle.loads(lmodel2)
X = InputDataSet[["passenger_count", "trip_distance", "trip_time_in_secs", "direct_distance"]]
y = numpy.ravel(InputDataSet[["tipped"]])
probArray = rx_predict(mod, X)
probList = probArray["tipped_Pred"].values
probArray = numpy.asarray(probList)
fpr, tpr, thresholds = metrics.roc_curve(y, probArray)
aucResult = metrics.auc(fpr, tpr)
print ("AUC on testing data is: " + str(aucResult))
El procedimiento almacenado devuelve las probabilidades previstas de cada trayecto que se pasaron
como parte de la consulta de entrada.
Si usa SSMS (SQL Server Management Studio) para ejecutar las consultas, las probabilidades aparecerán
como una tabla en el panel Resultados . El panel Mensajes muestra la métrica de precisión (AUC, o área
en curva) con un valor aproximado de 0,56.
2. Para usar el modelo revoscalepy para la puntuación, llame al procedimiento almacenado
PredictTipRxPy , pasando como entradas el nombre del modelo y la cadena de consulta.
NOTE
Si se llama al procedimiento almacenado desde una aplicación externa, es importante facilitar todas las características de
entrada que el modelo de Python requiere. Para no cometer errores, puede que tenga que convertir los datos de entrada
en un tipo de datos de Python, además de validar el tipo y la longitud de los datos.
PredictTipSingleModeSciKitPy
Dedique un minuto a revisar el código del procedimiento almacenado que realiza la puntuación con el modelo
scikit-learn .
DROP PROCEDURE IF EXISTS PredictTipSingleModeSciKitPy;
GO
PredictTipSingleModeRxPy
El siguiente procedimiento almacenado realiza la puntuación mediante el modelo revoscalepy .
DROP PROCEDURE IF EXISTS PredictTipSingleModeRxPy;
GO
probArray = rx_predict(mod, X)
probList = []
probList = probArray["tipped_Pred"].values
2. Ejecute esta instrucción para generar una puntuación mediante el modelo scikit-learn :
La salida de ambos procedimientos es la probabilidad de que se abone una propina por el trayecto en taxi,
dados los parámetros o características especificados.
Conclusiones
En esta serie de tutoriales, ha aprendido a trabajar con código de Python insertado en procedimientos
almacenados. La integración con Transact-SQL hace mucho más fácil la implementación de modelos de Python
para la predicción y la incorporación del reciclaje de modelos como parte de un flujo de trabajo de datos
empresarial.
Pasos siguientes
En este artículo:
Creó y usó procedimientos almacenados para la puntuación por lotes
Creó y usó procedimientos almacenados para puntuar una sola fila
Para más información sobre Python, consulte Extensión de Python en SQL Server.
Usar Python con revoscalepy para crear un modelo
que se ejecute de forma remota en SQL Server
14/07/2021 • 7 minutes to read
Prerrequisitos
Como datos de ejemplo de este ejercicio, se usa la base de datos flightdata .
Necesita un IDE para ejecutar el código de ejemplo de este artículo y el IDE debe estar vinculado al archivo
ejecutable de Python.
Para practicar un cambio de contexto de proceso, necesita una estación de trabajo local y una instancia del
motor de base de datos de SQL Server con Machine Learning Services y Python habilitados.
TIP
Si no tiene dos equipos, puede instalar las aplicaciones pertinentes que le permitan simular un contexto de proceso
remoto en un equipo físico. En primer lugar, una instalación de SQL Server Machine Learning Services funciona como
instancia "remota". En segundo lugar, la instalación de las bibliotecas de cliente de Python funciona como cliente. En el
mismo equipo, tendrá dos copias de la misma distribución de Python y las bibliotecas de Python de Microsoft. Para
completar el ejercicio correctamente, tendrá que realizar un seguimiento de las rutas de acceso de archivo y de la copia de
Python.exe que se utiliza.
NOTE
Para ver una demostración de este ejemplo en ejecución desde la línea de comandos, consulte este vídeo: Análisis
avanzado de SQL Server 2017 con Python.
Código de ejemplo
from revoscalepy import RxComputeContext, RxInSqlServer, RxSqlServerData
from revoscalepy import rx_lin_mod, rx_predict, rx_summary
from revoscalepy import RxOptions, rx_import
import os
def test_linmod_sql():
sql_server = os.getenv('PYTEST_SQL_SERVER', '.')
data_source = RxSqlServerData(
sql_query = "select top 10 * from airlinedemosmall",
connection_string = sql_connection_string,
column_info = {
"ArrDelay" : { "type" : "integer" },
"DayOfWeek" : {
"type" : "factor",
"levels" : [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ]
}
})
sql_compute_context = RxInSqlServer(
connection_string = sql_connection_string,
num_tasks = 4,
auto_cleanup = False
)
#
# Run linmod locally
#
linmod_local = rx_lin_mod("ArrDelay ~ DayOfWeek", data = data_source)
#
# Run linmod remotely
#
linmod = rx_lin_mod("ArrDelay ~ DayOfWeek", data = data_source, compute_context = sql_compute_context)
# Predict results
#
predict = rx_predict(linmod, data = rx_import(input_data = data_source))
summary = rx_summary("ArrDelay ~ DayOfWeek", data = data_source, compute_context = sql_compute_context)
Pasos siguientes
Estos tutoriales y ejemplos adicionales de Python muestran escenarios de un extremo a otro con orígenes de
datos más complejos, así como el uso de contextos de proceso remotos.
Python para desarrolladores de SQL en base de datos
Compilación de un modelo predictivo con Python y SQL Server
Tutoriales de R para aprendizaje automático de SQL
14/07/2021 • 2 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
En este artículo se describen los tutoriales e inicios rápidos de R para Machine Learning Services en SQL Server
y en clústeres de macrodatos.
En este artículo se describen los tutoriales e inicios rápidos de R para SQL Server Machine Learning Services.
En este artículo se describen los tutoriales e inicios rápidos de R para SQL Server 2016 R Services.
En este artículo se describen los tutoriales e inicios rápidos de Python para Machine Learning Services en Azure
SQL Managed Instance.
Tutoriales de R
T UTO RIA L DESC RIP C IÓ N
Predecir el alquiler de esquíes con el árbol de decisión Use R y un modelo de árbol de decisión para predecir el
número de alquileres de esquíes en el futuro. Use cuadernos
en Azure Data Studio para preparar los datos y entrenar el
modelo y T-SQL para la implementación de modelo.
Categorización de clientes con agrupación en clústeres k- Use R para desarrollar e implementar un modelo de
means agrupación en clústeres k-means para clasificar a los clientes
en categorías. Use cuadernos en Azure Data Studio para
preparar los datos y entrenar el modelo y T-SQL para la
implementación de modelo.
Análisis de R en base de datos para científicos de datos Los desarrolladores de R que no conozcan el aprendizaje
automático de SQL descubrirán en este tutorial cómo
realizar tareas comunes de ciencia de datos en SQL. Cargue
y visualice datos, entrene y guarde un modelo en una base
de datos y, luego, úselo para realizar análisis predictivos.
Análisis de R en base de datos para desarrolladores de SQL Compile e implemente una solución de R completa usando
únicamente herramientas de SQL. Este tutorial se centra en
el paso de una solución a producción. Obtendrá información
sobre cómo ajustar el código de R en un procedimiento
almacenado, guardar un modelo de R en una base de datos
y realizar llamadas con parámetros al modelo de R para la
predicción.
Predecir el alquiler de esquíes con el árbol de decisión Use R y un modelo de árbol de decisión para predecir el
número de alquileres de esquíes en el futuro. Use cuadernos
en Azure Data Studio para preparar los datos y entrenar el
modelo y T-SQL para la implementación de modelo.
T UTO RIA L DESC RIP C IÓ N
Categorización de clientes con agrupación en clústeres k- Use R para desarrollar e implementar un modelo de
means agrupación en clústeres k-means para clasificar a los clientes
en categorías. Use cuadernos en Azure Data Studio para
preparar los datos y entrenar el modelo y T-SQL para la
implementación de modelo.
Inicios rápidos de R
Si no está familiarizado con el aprendizaje automático de SQL, puede probar también los inicios rápidos de R.
Ejecución de scripts de R simples Conozca los conceptos básicos sobre cómo llamar a R en T-
SQL con sp_execute_external_script.
Objetos y estructuras de datos con R Muestra cómo SQL utiliza R para administrar estructuras de
datos.
Creación y puntuación de un modelo predictivo en R Explica cómo crear, entrenar y usar un modelo de R para
hacer predicciones a partir de nuevos datos.
Pasos siguientes
Extensión de R en SQL Server
Tutorial: Desarrollo de un modelo predictivo en R
con el aprendizaje automático de SQL
14/07/2021 • 3 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
En esta serie de tutoriales de cuatro partes, usará R y un modelo de Machine Learning en SQL Server Machine
Learning Services o en clústeres de macrodatos para predecir el número de alquileres de esquíes.
En esta serie de tutoriales de cuatro partes, usará R y un modelo de Machine Learning en SQL Server Machine
Learning Services para predecir el número de alquileres de esquíes.
En esta serie de tutoriales de cuatro partes, usará R y un modelo de Machine Learning en SQL Server R Services
para predecir el número de alquileres de esquíes.
En esta serie de tutoriales de cuatro partes, usará R y un modelo de Machine Learning en Machine Learning
Services en Azure SQL Managed Instance para predecir el número de alquileres de esquíes.
Imagine que es el propietario de una empresa de alquiler de esquíes y quiere predecir el número de alquileres
que tendrá en una fecha futura. Esta información le ayudará a preparar las existencias, el personal y las
instalaciones.
En la primera parte de esta serie, configurará los requisitos previos. En las partes dos y tres, desarrollará scripts
de R en un cuaderno para preparar sus datos y entrenar un modelo de Machine Learning. Luego, en la tercera
parte, ejecutará esos scripts de R en una base de datos mediante procedimientos almacenados de T-SQL.
En este artículo, aprenderá a:
Restauración de una base de datos de ejemplo
En la parte dos, aprenderá a cargar los datos desde una base de datos en una trama de datos de Python y a
preparar los datos en R.
En la parte tres, aprenderá a entrenar un modelo de Machine Learning en R.
En la parte cuatro, aprenderá a almacenar el modelo en una base de datos y, luego, a crear procedimientos
almacenados a partir de los scripts de R desarrollados en las partes dos y tres. Los procedimientos almacenados
se ejecutarán en el servidor para realizar predicciones basándose en datos nuevos.
Prerrequisitos
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).
SQL Server Management Studio para restaurar la base de datos de ejemplo en Azure SQL Managed
Instance.
IDE de R: en este tutorial se usa RStudio Desktop.
RODBC: este controlador se usa en los scripts de R que va a desarrollar en este tutorial. Si aún no está
instalado, instálelo con el comando install.packages("RODBC") de R. Para obtener más información sobre
RODBC, vea CRAN: paquete RODBC.
Herramienta de consultas SQL: en este tutorial, se da por hecho que usa Azure Data Studio. Para más
información, vea Uso de cuadernos en Azure Data Studio.
NOTE
Si usa Machine Learning Services en clústeres de macrodatos, consulte Restauración de una base de datos en la instancia
maestra del clúster de macrodatos de SQL Server.
USE TutorialDB;
SELECT * FROM [dbo].[rental_data];
USE TutorialDB;
SELECT * FROM [dbo].[rental_data];
Limpieza de recursos
Si no quiere continuar con este tutorial, elimine la base de datos TutorialDB.
Pasos siguientes
En la parte uno de esta serie de tutoriales, ha completado estos pasos:
Instalación de los requisitos previos
Restauración de una base de datos de ejemplo
Para preparar los datos para el modelo de aprendizaje automático, siga la parte dos de esta serie de tutoriales:
Preparación de los datos para entrenar un modelo predictivo en R
Tutorial: Preparación de los datos para entrenar un
modelo predictivo en R con el aprendizaje
automático de SQL
14/07/2021 • 4 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
En la segunda parte de esta serie de tutoriales de cuatro partes, preparará los datos de una base de datos
mediante R. Más adelante en la serie, usará estos datos para entrenar e implementar un modelo predictivo en R
con SQL Server Machine Learning Services o con clústeres de macrodatos.
En la parte uno de esta serie de tutoriales de tres partes, importará y preparará los datos de una base de datos
de Azure SQL mediante R. Más adelante en la serie, usará estos datos para entrenar e implementar un modelo
de Machine Learning predictivo en R con SQL Server Machine Learning Services.
En la parte dos de esta serie de tutoriales de cuatro partes, preparará los datos de una base de datos mediante
R. Más adelante en la serie, usará estos datos para entrenar e implementar un modelo predictivo en R con
SQL Server R Services.
En la parte dos de esta serie de tutoriales de cuatro partes, preparará los datos de una base de datos mediante
R. Más adelante en la serie, usará estos datos para entrenar e implementar un modelo predictivo en R con
Machine Learning Services en Azure SQL Managed Instance.
En este artículo, aprenderá a:
Restaurar una base de datos de ejemplo en una base de datos
Cargar los datos de la base de datos en una trama de datos de R
Preparar los datos en R mediante la identificación de algunas columnas como de categoría
En la parte uno, ha aprendido a restaurar la base de datos de ejemplo.
En la parte tres, aprenderá a entrenar un modelo de Machine Learning en R.
En la parte cuatro, aprenderá a almacenar el modelo en una base de datos y, luego, a crear procedimientos
almacenados a partir de los scripts de R desarrollados en las partes dos y tres. Los procedimientos almacenados
se ejecutarán en el servidor para realizar predicciones basándose en datos nuevos.
Prerrequisitos
En la segunda parte de este tutorial se da por hecho que ha realizado la primera par te y que satisface sus
requisitos previos.
ch <- odbcDriverConnect(connStr)
#Take a look at the structure of the data and the top rows
head(rentaldata)
str(rentaldata)
Limpieza de recursos
Si no quiere continuar con este tutorial, elimine la base de datos TutorialDB.
Pasos siguientes
En la parte dos de la serie de tutoriales, ha aprendido a:
Carga de los datos de ejemplo en una trama de datos de R
Preparar los datos en R mediante la identificación de algunas columnas como de categoría
Para crear un modelo de aprendizaje automático que use datos de la base de datos TutorialDB, siga la parte tres
de esta serie de tutoriales:
Creación de un modelo predictivo en R con el aprendizaje automático de SQL
Tutorial: Creación de un modelo predictivo en R con
el aprendizaje automático de SQL
14/07/2021 • 4 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
En la parte tres de esta serie de tutoriales de cuatro partes, entrenará un modelo predictivo en R. En la siguiente
parte de esta serie, implementará este modelo en una base de datos de SQL Server con Machine Learning
Services o en clústeres de macrodatos.
En la parte tres de esta serie de tutoriales de cuatro partes, entrenará un modelo predictivo en R. En la siguiente
parte de esta serie, implementará este modelo en una base de datos de SQL Server con Machine Learning
Services.
En la parte tres de esta serie de tutoriales de cuatro partes, entrenará un modelo predictivo en R. En la siguiente
parte de esta serie, implementará este modelo en una base de datos con SQL Server R Services.
En la parte tres de esta serie de tutoriales de cuatro partes, entrenará un modelo predictivo en R. En la siguiente
parte de esta serie, implementará este modelo en una base de datos de Azure SQL Managed Instance con
Machine Learning Services.
En este artículo, aprenderá a:
Entrenar dos modelos de aprendizaje automático
Hacer predicciones a partir de ambos modelos
Comparar los resultados para elegir el modelo más preciso
En la parte uno, ha aprendido a restaurar la base de datos de ejemplo.
En la parte dos, ha obtenido información sobre cómo cargar los datos desde una base de datos en una trama de
datos de Python y a preparar los datos en R.
En la parte cuatro, aprenderá a almacenar el modelo en una base de datos y, luego, a crear procedimientos
almacenados a partir de los scripts de Python desarrollados en las partes dos y tres. Los procedimientos
almacenados se ejecutarán en el servidor para realizar predicciones basándose en datos nuevos.
Prerrequisitos
En la parte tres de esta serie de tutoriales, se da por hecho que ha completado los requisitos previos de la par te
uno y que ha realizado los pasos de la par te dos .
#Use the RentalCount column to check the quality of the prediction against actual values
actual_counts <- test_data$RentalCount;
#Model 1: Use lm to create a linear regression model, trained with the training data set
model_lm <- lm(RentalCount ~ Month + Day + WeekDay + Snow + Holiday, data = train_data);
#Model 2: Use rpart to create a decision tree model, trained with the training data set
library(rpart);
model_rpart <- rpart(RentalCount ~ Month + Day + WeekDay + Snow + Holiday, data = train_data);
#Use both models to make predictions using the test data set.
predict_lm <- predict(model_lm, test_data)
predict_lm <- data.frame(RentalCount_Pred = predict_lm, RentalCount = test_data$RentalCount,
Year = test_data$Year, Month = test_data$Month,
Day = test_data$Day, Weekday = test_data$WeekDay,
Snow = test_data$Snow, Holiday = test_data$Holiday)
#To verify it worked, look at the top rows of the two prediction data sets.
head(predict_lm);
head(predict_rpart);
Parece que el modelo de árbol de decisión es el más preciso de los dos modelos.
Limpieza de recursos
Si no quiere continuar con este tutorial, elimine la base de datos TutorialDB.
Pasos siguientes
En la tercera parte de la serie de tutoriales, ha aprendido a:
Entrenar dos modelos de aprendizaje automático
Hacer predicciones a partir de ambos modelos
Comparar los resultados para elegir el modelo más preciso
Para implementar el modelo de aprendizaje automático que ha creado, siga la parte cuatro de esta serie de
tutoriales:
Implementación de un modelo predictivo en R con el aprendizaje automático de SQL
Tutorial: Implementación de un modelo predictivo
en R con el aprendizaje automático de SQL
14/07/2021 • 4 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
En la parte cuatro de esta serie de tutoriales de cuatro partes, implementará un modelo de aprendizaje
automático desarrollado en R en SQL Server Machine Learning Services o en Clústeres de macrodatos.
En la parte cuatro de esta serie de tutoriales de cuatro partes, implementará un modelo de aprendizaje
automático desarrollado en R en SQL Server con Machine Learning Services.
En la parte cuatro de esta serie de tutoriales de cuatro partes, implementará un modelo de Machine Learning
desarrollado en R en SQL Server con SQL Server R Services.
En la parte cuatro de esta serie de tutoriales de cuatro partes, implementará un modelo de Machine Learning
desarrollado en R en Azure SQL Managed Instance con Machine Learning Services.
En este artículo, aprenderá a:
Crear un procedimiento almacenado que genere el modelo de aprendizaje automático
Almacenar el modelo en una tabla de base de datos
Crear un procedimiento almacenado que realice predicciones mediante el modelo
Ejecutar el modelo con datos nuevos
En la parte uno, ha aprendido a restaurar la base de datos de ejemplo.
En la parte dos, aprendió a importar una base de datos de ejemplo y, luego, a preparar los datos para su uso en
el entrenamiento de un modelo predictivo en R.
En la parte tres, aprendió a crear y entrenar varios modelos de Machine Learning en R y, luego, elegir el más
preciso.
Prerrequisitos
En la parte cuatro de este tutorial se da por hecho que ha completado los requisitos previos de la par te uno y
que ha realizado los pasos de la par te dos y la par te tres .
#Create a dtree model and train it using the training data set
library(rpart);
model_dtree <- rpart(RentalCount ~ Month + Day + WeekDay + Snow + Holiday, data = rental_train_data);
#Serialize the model before saving it to the database table
trained_model <- as.raw(serialize(model_dtree, connection=NULL));
'
, @input_data_1 = N'
SELECT RentalCount
, Year
, Month
, Day
, WeekDay
, Snow
, Holiday
FROM dbo.rental_data
WHERE Year < 2015
'
, @input_data_1_name = N'rental_train_data'
, @params = N'@trained_model varbinary(max) OUTPUT'
, @trained_model = @trained_model OUTPUT;
END;
GO
USE TutorialDB;
DROP TABLE IF EXISTS rental_models;
GO
CREATE TABLE rental_models (
model_name VARCHAR(30) NOT NULL DEFAULT('default model') PRIMARY KEY
, model VARBINARY(MAX) NOT NULL
);
GO
SELECT *
FROM rental_models;
-- Use the predict_rentalcount_new stored procedure with the model name and a set of features to predict the
rental count
EXECUTE dbo.predict_rentalcount_new @model_name = 'DTree'
, @input_query = '
SELECT CONVERT(INT, 3) AS Month
, CONVERT(INT, 24) AS Day
, CONVERT(INT, 4) AS WeekDay
, CONVERT(INT, 1) AS Snow
, CONVERT(INT, 1) AS Holiday
';
GO
Ha creado, entrenado e implementado correctamente un modelo en una base de datos. Después, ha usado el
modelo en un procedimiento almacenado para predecir valores basándose en datos nuevos.
Limpieza de recursos
Cuando termine de usar la base de datos TutorialDB, elimínela del servidor.
Pasos siguientes
En la cuarta parte de la serie de tutoriales, ha aprendido a:
Crear un procedimiento almacenado que genere el modelo de aprendizaje automático
Almacenar el modelo en una tabla de base de datos
Crear un procedimiento almacenado que realice predicciones mediante el modelo
Ejecutar el modelo con datos nuevos
Para más información sobre cómo usar R en Machine Learning Services, vea:
Ejecución de scripts de R simples
Estructuras de datos, tipos y objetos de R
Funciones de R
Tutorial: Desarrollo de un modelo de agrupación en
clústeres en R con el aprendizaje automático de
SQL
14/07/2021 • 4 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
En esta serie de tutoriales de cuatro partes, usará R para desarrollar e implementar un modelo de agrupación en
clústeres k-means en SQL Server Machine Learning Services o clústeres de macrodatos para categorizar datos
de clientes.
En esta serie de tutoriales de cuatro partes, usará R para desarrollar e implementar un modelo de agrupación en
clústeres k-means en SQL Server Machine Learning Services para agrupar en clústeres datos de clientes.
En esta serie de tutoriales de cuatro partes, usará R para desarrollar e implementar un modelo de agrupación en
clústeres k-means en SQL Server R Services para agrupar en clústeres datos de clientes.
En esta serie de tutoriales de cuatro partes, usará R para desarrollar e implementar un modelo de agrupación en
clústeres k-means en Machine Learning Services en Azure SQL Managed Instance para agrupar en clústeres
datos de clientes.
En la primera parte de esta serie, configurará los requisitos previos para el tutorial y, después, restaurará un
conjunto de datos de ejemplo en una base de datos. En las partes dos y tres, desarrollará scripts de R en un
cuaderno de Azure Data Studio para analizar y preparar los datos de ejemplo y entrenar un modelo de Machine
Learning. Luego, en la parte cuatro, ejecutará esos scripts de R en una base de datos mediante procedimientos
almacenados.
Agrupar en clústeres es organizar datos en grupos, donde los miembros de un grupo son de alguna forma
similares. Para esta serie de tutoriales, imagine que es el propietario de un negocio de venta al por menor. Usará
el algoritmo k-means para realizar la agrupación de clientes en clústeres en un conjunto de datos de compras y
devoluciones de productos. Al agrupar los clientes en clústeres, puede centrar sus actividades de marketing de
forma más eficaz al dirigirse a grupos específicos. La agrupación en clústeres k-means es un algoritmo de
aprendizaje no supervisado que analiza patrones en datos basándose en similitudes.
En este artículo, aprenderá a:
Restauración de una base de datos de ejemplo
En la parte dos, aprenderá a preparar los datos de una base de datos para realizar la agrupación en clústeres.
En la parte tres, aprenderá a crear y entrenar un modelo de agrupación en clústeres k-means en R.
En la parte cuatro, aprenderá a crear un procedimiento almacenado en una base de datos que pueda realizar la
agrupación en clústeres en R basándose en datos nuevos.
Prerrequisitos
SQL Server Machine Learning Services con la opción de lenguaje de Python: siga las instrucciones de
instalación en 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 con la opción de lenguaje de R: siga las instrucciones de instalación
en la Guía de instalación para 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).
SQL Server Management Studio para restaurar la base de datos de ejemplo en Azure SQL Managed
Instance.
Azure Data Studio Usará un cuaderno en Azure Data Studio para SQL. Para obtener más información
sobre los cuadernos, vea Uso de los cuadernos en Azure Data Studio.
IDE de R: en este tutorial se usa RStudio Desktop.
RODBC: este controlador se usa en los scripts de R que va a desarrollar en este tutorial. Si aún no está
instalado, instálelo con el comando install.packages("RODBC") de R. Para obtener más información sobre
RODBC, vea CRAN: paquete RODBC.
NOTE
Si usa Machine Learning Services en clústeres de macrodatos, consulte Restauración de una base de datos en la instancia
maestra del clúster de macrodatos de SQL Server.
USE tpcxbb_1gb;
SELECT * FROM [dbo].[customer];
USE tpcxbb_1gb;
SELECT * FROM [dbo].[customer];
Limpieza de recursos
Si no quiere continuar con este tutorial, elimine la base de datos tpcxbb_1gb.
Pasos siguientes
En la parte uno de esta serie de tutoriales, ha completado estos pasos:
Instalación de los requisitos previos
Restauración de una base de datos de ejemplo
Para preparar los datos para el modelo de aprendizaje automático, siga la parte dos de esta serie de tutoriales:
Preparación de datos para realizar la agrupación en clústeres
Tutorial: Preparación de datos para realizar la
agrupación en clústeres en R con el aprendizaje
automático de SQL
14/07/2021 • 3 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
En la parte dos de esta serie de tutoriales de cuatro partes, preparará los datos de una base de datos para
realizar la agrupación en clústeres en R con SQL Server Machine Learning Services o en Clústeres de
macrodatos.
En la parte dos de esta serie de tutoriales de cuatro partes, preparará los datos de una base de datos para
realizar la agrupación en clústeres en R con SQL Server Machine Learning Services.
En la parte dos de esta serie de tutoriales de cuatro partes, preparará los datos de una base de datos para
realizar la agrupación en clústeres en R con SQL Server 2016 R Services.
En la parte dos de esta serie de tutoriales de cuatro partes, preparará los datos de una base de datos para
realizar la agrupación en clústeres en R con Machine Learning Services en Azure SQL Managed Instance.
En este artículo, aprenderá a:
Separar clientes en diferentes dimensiones mediante R
Cargar los datos de la base de datos en una trama de datos de R
En la parte uno, ha instalado los requisitos previos y ha restaurado la base de datos de ejemplo.
En la parte tres, aprenderá a crear y entrenar un modelo de agrupación en clústeres k-means en R.
En la parte cuatro, descubrirá cómo crear un procedimiento almacenado en una base de datos que pueda
realizar la agrupación en clústeres en R basándose en datos nuevos.
Prerrequisitos
En la parte dos de este tutorial, se da por hecho que ha completado la par te uno .
Separación de clientes
Cree un archivo de RScript en RStudio y ejecute el siguiente script. En la consulta SQL, está dividiendo a los
clientes entre las dimensiones siguientes:
orderRatio = índice de devolución de pedidos (número total de pedidos con una devolución total o parcial
comparado con el número total de pedidos)
itemsRatio = índice de artículos devueltos (número total de artículos devueltos comparado con el número
de artículos comprados)
monetar yRatio = índice de importes de devoluciones (total de importes monetarios de los artículos
devueltos comparado con el importe de las compras)
frequency = frecuencia de devolución
En la función connStr , reemplace Ser verName por su propia información de conexión.
# Define the connection string to connect to the tpcxbb_1gb database
library(RODBC)
ch <- odbcDriverConnect(connStr)
Limpieza de recursos
Si no quiere continuar con este tutorial, elimine la base de datos tpcxbb_1gb.
Pasos siguientes
En la parte dos de la serie de tutoriales, ha aprendido a:
Separar clientes en diferentes dimensiones mediante R
Cargar los datos de la base de datos en una trama de datos de R
Para crear un modelo de aprendizaje automático que use estos datos de clientes, siga la parte tres de esta serie
de tutoriales:
Creación de un modelo predictivo en R con el aprendizaje automático de SQL
Tutorial: Creación de un modelo de agrupación en
clústeres en R con el aprendizaje automático de
SQL
14/07/2021 • 4 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
En la parte tres de esta serie de tutoriales de cuatro partes, creará un modelo de k-means en R para realizar la
agrupación en clústeres. En la siguiente parte de esta serie, implementará este modelo en una base de datos con
SQL Server Machine Learning Services o en clústeres de macrodatos.
En la parte tres de esta serie de tutoriales de cuatro partes, creará un modelo de k-means en R para realizar la
agrupación en clústeres. En la siguiente parte de esta serie, implementará este modelo en una base de datos con
SQL Server Machine Learning Services.
En la parte tres de esta serie de tutoriales de cuatro partes, creará un modelo de k-means en R para realizar la
agrupación en clústeres. En la siguiente parte de esta serie, implementará este modelo en una base de datos
SQL con SQL Server R Services.
En la parte tres de esta serie de tutoriales de cuatro partes, creará un modelo de k-means en R para realizar la
agrupación en clústeres. En la siguiente parte de esta serie, implementará este modelo en una base de datos con
Machine Learning Services en Azure SQL Managed Instance.
En este artículo, aprenderá a:
Definición del número de clústeres para un algoritmo de k-means
Agrupación en clústeres
Análisis de los resultados
En la parte uno, ha instalado los requisitos previos y ha restaurado la base de datos de ejemplo.
En la parte dos, ha aprendido a preparar los datos de una base de datos para realizar la agrupación en clústeres.
En la parte cuatro, aprenderá a crear un procedimiento almacenado en una base de datos que pueda realizar la
agrupación en clústeres en R basándose en datos nuevos.
Prerrequisitos
En la parte tres de esta serie de tutoriales, se da por hecho que ha completado los requisitos previos de la
par te uno y que ha realizado los pasos de la par te dos .
# Determine number of clusters by using a plot of the within groups sum of squares,
# by number of clusters extracted.
wss <- (nrow(customer_data) - 1) * sum(apply(customer_data, 2, var))
for (i in 2:20)
wss[i] <- sum(kmeans(customer_data, centers = i)$withinss)
plot(1:20, wss, type = "b", xlab = "Number of Clusters", ylab = "Within groups sum of squares")
Según el gráfico, parece que k = 4 sería un buen valor para probar. El valor k agrupará los clientes en cuatro
clústeres.
Agrupación en clústeres
En el siguiente script de R, usará la función kmeans para realizar la agrupación en clústeres.
# Output table to hold the customer group mappings.
# Generate clusters using Kmeans and output key / cluster to a table
# called return_cluster
itemsRatio=customer_data$itemsRatio,monetaryRatio=customer_data$monetaryRatio,frequency=customer_data$freque
ncy)
head(customer_cluster_check)
$centers
orderRatio itemsRatio monetaryRatio frequency
1 0.621835791 0.1701519 0.35510836 1.009025
2 0.074074074 0.0000000 0.05886575 2.363248
3 0.004807692 0.0000000 0.04618708 5.050481
4 0.000000000 0.0000000 0.00000000 0.000000
$totss
[1] 40191.83
$withinss
[1] 19867.791 215.714 660.784 0.000
$tot.withinss
[1] 20744.29
$betweenss
[1] 19447.54
$size
[1] 4543 702 416 31675
$iter
[1] 3
$ifault
[1] 0
Las cuatro medias de clústeres se proporcionan mediante las variables definidas en la parte dos:
orderRatio = índice de devolución de pedidos (número total de pedidos con una devolución total o parcial
comparado con el número total de pedidos)
itemsRatio = índice de artículos devueltos (número total de artículos devueltos comparado con el número de
artículos comprados)
monetaryRatio = índice de importes de devoluciones (total de importes monetarios de los artículos
devueltos comparado con el importe de las compras)
frequency = frecuencia de devolución
Con frecuencia, la minería de datos que usa k-means necesita un análisis más detallado de los resultados y
pasos adicionales para comprender mejor cada clúster, pero puede proporcionar pistas adecuadas. Estas son
dos formas en que se podrían interpretar estos resultados:
El clúster 1 (el clúster más grande) parece estar constituido por un grupo de clientes que no están activos
(todos los valores son cero).
Parece que el clúster 3 es un grupo que destaca en términos de comportamiento de devoluciones.
Limpieza de recursos
Si no quiere continuar con este tutorial, elimine la base de datos tpcxbb_1gb.
Pasos siguientes
En la tercera parte de la serie de tutoriales, ha aprendido a:
Definición del número de clústeres para un algoritmo de k-means
Agrupación en clústeres
Análisis de los resultados
Para implementar el modelo de aprendizaje automático que ha creado, siga la parte cuatro de esta serie de
tutoriales:
Implementación de un modelo de agrupación en clústeres en R con el aprendizaje automático de SQL
Tutorial: Implementación de un modelo de
agrupación en clústeres en R con el aprendizaje
automático de SQL
14/07/2021 • 5 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
En la parte cuatro de esta serie de tutoriales de cuatro partes, implementará un modelo de agrupación en
clústeres, desarrollado en R, en una base de datos con SQL Server Machine Learning Services o en Clústeres de
macrodatos.
En la parte cuatro de esta serie de tutoriales de cuatro partes, implementará un modelo de agrupación en
clústeres, desarrollado en R, en una base de datos mediante SQL Server Machine Learning Services.
En la parte cuatro de esta serie de tutoriales de cuatro partes, implementará un modelo de agrupación en
clústeres, desarrollado en R, en una base de datos mediante SQL Server R Services.
En la parte cuatro de esta serie de tutoriales de cuatro partes, implementará un modelo de agrupación en
clústeres, desarrollado en R, en una base de datos mediante Machine Learning Services en Azure SQL Managed
Instance.
Para realizar la agrupación en clústeres de forma periódica cuando se registren nuevos clientes, necesita llamar
al script de R desde cualquier aplicación. Para hacerlo, puede implementar el script de R en una base de datos si
lo coloca dentro de un procedimiento almacenado de SQL. Como el modelo se ejecuta en la base de datos, se
puede entrenar fácilmente con los datos almacenados en la base de datos.
En este artículo, aprenderá a:
Crear un procedimiento almacenado que genere el modelo
Agrupación en clústeres
Uso de la información de agrupación en clústeres
En la parte uno, ha instalado los requisitos previos y ha restaurado la base de datos de ejemplo.
En la parte dos, ha aprendido a preparar los datos de una base de datos para realizar la agrupación en clústeres.
En la parte tres, ha aprendido a crear y entrenar un modelo de agrupación en clústeres k-means en R.
Prerrequisitos
En la parte cuatro de esta serie de tutoriales, se da por hecho que ha completado los requisitos previos de la
par te uno y que ha realizado los pasos de la par te dos y la par te tres .
USE [tpcxbb_1gb]
DROP PROC IF EXISTS generate_customer_return_clusters;
GO
CREATE procedure [dbo].[generate_customer_return_clusters]
AS
/*
This procedure uses R to classify customers into different groups
based on their purchase & return history.
*/
BEGIN
DECLARE @duration FLOAT
, @instance_name NVARCHAR(100) = @@SERVERNAME
, @database_name NVARCHAR(128) = db_name()
-- Input query to generate the purchase history & return metrics
, @input_query NVARCHAR(MAX) = N'
SELECT ss_customer_sk AS customer,
round(CASE
WHEN (
(orders_count = 0)
OR (returns_count IS NULL)
OR (orders_count IS NULL)
OR ((returns_count / orders_count) IS NULL)
)
THEN 0.0
ELSE (cast(returns_count AS NCHAR(10)) / orders_count)
END, 7) AS orderRatio,
round(CASE
WHEN (
(orders_items = 0)
OR (returns_items IS NULL)
OR (orders_items IS NULL)
OR ((returns_items / orders_items) IS NULL)
)
THEN 0.0
ELSE (cast(returns_items AS NCHAR(10)) / orders_items)
END, 7) AS itemsRatio,
round(CASE
WHEN (
(orders_money = 0)
OR (returns_money IS NULL)
OR (orders_money IS NULL)
OR ((returns_money / orders_money) IS NULL)
)
THEN 0.0
ELSE (cast(returns_money AS NCHAR(10)) / orders_money)
END, 7) AS monetaryRatio,
round(CASE
WHEN (returns_count IS NULL)
THEN 0.0
ELSE returns_count
END, 0) AS frequency
FROM (
SELECT ss_customer_sk,
-- return order ratio
COUNT(DISTINCT (ss_ticket_number)) AS orders_count,
-- return ss_item_sk ratio
COUNT(ss_item_sk) AS orders_items,
-- return monetary amount ratio
SUM(ss_net_paid) AS orders_money
FROM store_sales s
GROUP BY ss_customer_sk
) orders
LEFT OUTER JOIN (
SELECT sr_customer_sk,
-- return order ratio
count(DISTINCT (sr_ticket_number)) AS returns_count,
count(DISTINCT (sr_ticket_number)) AS returns_count,
-- return ss_item_sk ratio
COUNT(sr_item_sk) AS returns_items,
-- return monetary amount ratio
SUM(sr_return_amt) AS returns_money
FROM store_returns
GROUP BY sr_customer_sk
) returned ON ss_customer_sk = sr_customer_sk
'
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N'
# Define the connection string
ch <- odbcDriverConnect(connStr);
sqlDrop(ch, "customer_return_clusters")
itemsRatio=customer_data$itemsRatio,monetaryRatio=customer_data$monetaryRatio,frequency=customer_data$freque
ncy)
## clean up
odbcClose(ch)
'
, @input_data_1 = N''
, @params = N'@instance_name nvarchar(100), @database_name nvarchar(128), @input_query nvarchar(max),
@duration float OUTPUT'
, @instance_name = @instance_name
, @database_name = @database_name
, @input_query = @input_query
, @duration = @duration OUTPUT;
END;
GO
Agrupación en clústeres
Ahora que ha creado el procedimiento almacenado, ejecute el siguiente script para realizar la agrupación en
clústeres.
--Empty table of the results before running the stored procedure
TRUNCATE TABLE customer_return_clusters;
Compruebe que funciona y que realmente tenemos la lista de los clientes y sus asignaciones de clúster.
USE [tpcxbb_1gb]
--Get email addresses of customers in cluster 0 for a promotion campaign
SELECT customer.[c_email_address], customer.c_customer_sk
FROM dbo.customer
JOIN
[dbo].[customer_clusters] as c
ON c.Customer = customer.c_customer_sk
WHERE c.cluster = 0
Puede cambiar el valor de c.cluster a las direcciones de correo electrónico de retorno de los clientes en otros
clústeres.
Limpieza de recursos
Cuando termine este tutorial, puede eliminar la base de datos tpcxbb_1gb.
Pasos siguientes
En la parte cuatro de la serie de tutoriales, ha aprendido a:
Crear un procedimiento almacenado que genere el modelo
Realización de la agrupación en clústeres con aprendizaje automático de SQL
Uso de la información de agrupación en clústeres
Para más información sobre cómo usar R en Machine Learning Services, vea:
Ejecución de scripts de R simples
Estructuras de datos, tipos y objetos de R
Funciones de R
Tutorial de R: Predicción de tarifas de taxi de Nueva
York con clasificación binaria
14/07/2021 • 4 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
En esta serie de tutoriales de cinco partes para programadores de SQL, obtendrá información sobre la
integración de R en SQL Server Machine Learning Services o en Clústeres de macrodatos.
En esta serie de tutoriales de cinco partes para programadores de SQL, obtendrá información sobre la
integración de R en SQL Server Machine Learning Services.
En esta serie de tutoriales de cinco partes para programadores de SQL, obtendrá información sobre la
integración de R en SQL Server 2016 R Services.
En esta serie de tutoriales de cinco partes para programadores de SQL, obtendrá información sobre la
integración de R en Machine Learning Services en Azure SQL Managed Instance.
Creará e implementará una solución de aprendizaje automático basada en R mediante una base de datos de
ejemplo en SQL Server. Se usará T-SQL, Azure Data Studio, o SQL Server Management Studio, y una instancia
del motor de base de datos con el aprendizaje automático de SQL y la compatibilidad con el lenguaje R.
En esta serie de tutoriales se presentan las funciones de R usadas en un flujo de trabajo de modelado de datos.
Algunas de las partes son la exploración de datos, la creación y el entrenamiento de un modelo de clasificación
binaria, y la implementación del modelo. Usará datos de ejemplo de la Comisión de taxis y limusinas de la
Ciudad de Nueva York. El modelo que se va a compilar predice si es probable que un trayecto acabe en propina
en función de la hora del día, la distancia recorrida y la ubicación de origen.
En la primera parte de esta serie, instalará los requisitos previos y restaurará la base de datos de ejemplo. En las
partes dos y tres, desarrollará scripts de R para preparar sus datos y entrenar un modelo de Machine Learning.
Después, en las partes cuatro y cinco, ejecutará esos scripts de R en la base de datos con procedimientos
almacenados en T-SQL.
En este artículo, hará lo siguiente:
Requisitos previos de instalación
Restauración de la base de datos de ejemplo
En la parte dos, explorará los datos de ejemplo y generará algunos trazados.
En la tercera, aprenderá a crear características a partir de datos sin procesar mediante una función de Transact-
SQL. Después, llamaremos a esa función desde un procedimiento almacenado para crear una tabla que contiene
los valores de las características.
En la parte cuatro, cargará los módulos y llamará a las funciones necesarias para crear y entrenar el modelo
mediante un procedimiento almacenado de SQL Server.
En la parte cinco, aprenderá a poner en marcha los modelos entrenados y guardados en la parte cuatro.
NOTE
Este tutorial está disponible tanto en R como en Python. Para obtener la versión de Python, consulte Tutorial de Python:
Predicción de tarifas de taxi de Nueva York con clasificación binaria.
Prerrequisitos
Instalar SQL Server 2016 R Services
Instalar SQL Server Machine Learning Services con R habilitado
Instalar bibliotecas de R
Conceder permisos para la ejecución de scripts de Python y R
A partir de SQL Server 2019, el mecanismo de aislamiento requiere que se proporcionen los permisos
adecuados para el directorio donde se almacena el archivo de trazado. Para más información sobre cómo
establecer estos permisos, consulte la sección sobre los permisos de archivo en SQL Server 2019 en
Windows: Cambios de aislamiento para Machine Learning Services.
Restaurar la base de datos de demostración de taxis de Nueva York
Todas las tareas pueden realizarse mediante procedimientos almacenados de Transact-SQL de Azure Data Studio
o Management Studio.
En este tutorial se supone que está familiarizado con las operaciones básicas de base de datos, como la creación
de bases de datos y tablas, la importación de datos y la escritura de consultas SQL. No se da por sentado que
conoce R; se proporciona todo el código de R.
Pasos siguientes
En este artículo:
Instaló los requisitos previos
Restauró la base de datos de ejemplo
Tutorial de R: Exploración y visualización de datos
Tutorial de R: Explorar y visualizar datos
14/07/2021 • 11 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
En la parte dos de esta serie de tutoriales de cinco partes, explorará los datos de ejemplo y generará algunos
trazados. Más adelante, aprenderá a serializar objetos gráficos en Python y, después, a deserializarlos y a crear
trazados.
En la parte dos de este tutorial de cinco partes, revisará los datos de ejemplo y, luego, generará algunos
trazados mediante las funciones genéricas barplot y hist en R base.
Uno de los objetivos clave de este artículo es mostrar cómo llamar a las funciones de R desde Transact-SQL en
los procedimientos almacenados y guardar los resultados en formatos de archivo de aplicación:
Cree un procedimiento almacenado mediante barplot para generar un trazado de R como datos varbinary.
Use bcp para exportar el flujo binario a un archivo de imagen.
Cree un procedimiento almacenado mediante hist para generar un trazado y guardar los resultados como
archivos JPG y PDF.
NOTE
Dado que la visualización es una herramienta muy eficaz para comprender la distribución y la forma de datos, R
proporciona una variedad de funciones y paquetes para generar histogramas, gráficos de dispersión, gráficos de cuadros y
otros gráficos de exploración de datos. R normalmente crea imágenes con un dispositivo de R para la salida gráfica, que
puede capturar y almacenar como un tipo de datos varbinar y para la representación en la aplicación. También puede
guardar las imágenes en cualquiera de los formatos de archivo admitidos (.JPG, .PDF, etc.).
N O M B RE DE C O L UM N A DERIVA DA REGL A
Use la función barplot de R para crear el trazado. Este paso representa un histograma en función de los datos
de una consulta Transact-SQL. Puede ajustar esta función en un procedimiento almacenado, RPlotHistogram .
1. En SQL Server Management Studio, en el Explorador de objetos, haga clic con el botón derecho en la
base de datos NYCTaxi_Sample y seleccione Nueva consulta . O en Azure Data Studio, seleccione
Nuevo cuaderno en el menú Archivo y conéctese a la base de datos.
2. Pegue el siguiente script para crear un procedimiento almacenado que trace el histograma. Este ejemplo
se denomina RPlotHistogram .
Entre los puntos clave que se deben comprender en este script se incluyen los siguientes:
La variable @query define el texto de consulta ( 'SELECT tipped FROM nyctaxi_sample' ), que se pasa al
script de R como argumento para la variable de entrada de script @input_data_1 . En el caso de los scripts
de R que se ejecutan como procesos externos, debe tener una asignación de uno a uno entre las entradas
del script y las entradas en el procedimiento almacenado del sistema sp_execute_external_script que
inicia la sesión de R en SQL Server.
Dentro del script de R, se define una variable ( image_file ) para almacenar la imagen.
Se llama a la función barplot para generar el trazado.
El dispositivo de R está establecido en desactivado porque está ejecutando este comando como un
script externo en SQL Server. Normalmente en R, al enviar un comando de trazado de alto nivel, R abre
una ventana de gráficos, denominada dispositivo. Puede desactivar el dispositivo si está escribiendo en
un archivo o controlando el resultado de otra manera.
El objeto de gráficos de R se serializa en un data.frame de R para la salida.
Ejecute el procedimiento almacenado y use bcp para exportar datos binarios a un archivo de imagen
El procedimiento almacenado devuelve la imagen como una secuencia de datos varbinary, que, evidentemente,
no puede ver directamente. En cambio, puede usar la utilidad bcp para obtener los datos varbinary y guardarlos
como un archivo de imagen en un equipo cliente.
1. En Management Studio, ejecute la instrucción siguiente:
EXEC [dbo].[RPlotHistogram]
Resultados
plot 0xFFD8FFE000104A4649...
2. Abra un símbolo del sistema de PowerShell y ejecute el siguiente comando con el nombre de instancia, el
nombre de la base de datos, el nombre de usuario y las credenciales adecuados como argumentos. Para
aquellos que usan identidades de Windows, puede reemplazar -U y -P con -T .
bcp "exec RPlotHistogram" queryout "plot.jpg" -S <SQL Server instance name> -d NYCTaxi_Sample -U
<user name> -P <password> -T
NOTE
Los modificadores de comandos bcp distinguen mayúsculas de minúsculas.
3. Si la conexión es correcta, se le pedirá que escriba más información sobre el formato de archivo de
gráficos.
Pulse ENTRAR en cada aviso para aceptar los valores predeterminados, excepto estos cambios:
En prefix-length of field plot , escriba 0.
Escriba Y si quiere guardar los parámetros de salida para un uso posterior.
Resultados
Starting copy...
1 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total : 3922 Average : (0.25 rows per sec.)
TIP
Si guarda la información de formato en archivo (bcp.fmt), la utilidad bcp genera una definición de formato que
puede aplicar a los comandos similares en el futuro sin tener que cambiar las opciones de formato de archivo de
gráficos. Para usar el archivo de formato, agregue -f bcp.fmt al final de cualquier línea de comandos después
del argumento de la contraseña.
# Open a jpeg file and output histogram of tipped variable in that file.
dest_filename = tempfile(pattern = ''rHistogram_Tipped_'', tmpdir = mainDir)
dest_filename = paste(dest_filename, ''.jpg'',sep="")
print(dest_filename, quote=FALSE);
jpeg(filename=dest_filename);
hist(InputDataSet$tipped, col = ''lightgreen'', xlab=''Tipped'',
ylab = ''Counts'', main = ''Histogram, Tipped'');
dev.off();
# Open a pdf file and output histograms of tip amount and fare amount.
# Outputs two plots in one row
dest_filename = tempfile(pattern = ''rHistograms_Tip_and_Fare_Amount_'', tmpdir = mainDir)
dest_filename = paste(dest_filename, ''.pdf'',sep="")
print(dest_filename, quote=FALSE);
pdf(file=dest_filename, height=4, width=7);
par(mfrow=c(1,2));
hist(InputDataSet$tip_amount, col = ''lightgreen'',
xlab=''Tip amount ($)'',
ylab = ''Counts'',
main = ''Histogram, Tip amount'', xlim = c(0,40), 100);
hist(InputDataSet$fare_amount, col = ''lightgreen'',
xlab=''Fare amount ($)'',
ylab = ''Counts'',
main = ''Histogram,
Fare amount'',
xlim = c(0,100), 100);
dev.off();
# Open a pdf file and output an xyplot of tip amount vs. fare amount using lattice;
# Only 10,000 sampled observations are plotted here, otherwise file is large.
dest_filename = tempfile(pattern = ''rXYPlots_Tip_vs_Fare_Amount_'', tmpdir = mainDir)
dest_filename = paste(dest_filename, ''.pdf'',sep="")
print(dest_filename, quote=FALSE);
pdf(file=dest_filename, height=4, width=4);
plot(tip_amount ~ fare_amount,
data = InputDataSet[sample(nrow(InputDataSet), 10000), ],
ylim = c(0,50),
xlim = c(0,150),
cex=.5,
pch=19,
col=''darkgreen'',
main = ''Tip amount by Fare amount'',
xlab=''Fare Amount ($)'',
ylab = ''Tip Amount ($)'');
dev.off();',
@input_data_1 = @query
END
Entre los puntos clave que se deben comprender en este script se incluyen los siguientes:
El resultado de la consulta SELECT en el procedimiento almacenado se almacena en la trama de datos
predeterminada de R, InputDataSet . Se puede llamar a varias funciones de trazado de R para generar los
archivos de gráficos reales. La mayoría de los scripts insertados de R representan las opciones de estas
funciones de gráficos, como plot o hist .
El dispositivo de R está establecido en desactivado porque está ejecutando este comando como un
script externo en SQL Server. Normalmente en R, al enviar un comando de trazado de alto nivel, R abre
una ventana de gráficos, denominada dispositivo. Puede desactivar el dispositivo si está escribiendo en
un archivo o controlando el resultado de otra manera.
Todos los archivos se guardan en la carpeta local C:\temp\Plots. La carpeta de destino se define mediante
los argumentos proporcionados para el script de R como parte del procedimiento almacenado. Para
generar los archivos en una carpeta diferente, cambie el valor de la variable mainDir en el script
insertado de R en el procedimiento almacenado. También puede modificar el script para generar
diferentes formatos, más archivos, etc.
Ejecutar el procedimiento almacenado
Ejecute la siguiente instrucción para exportar datos de trazados binarios a formatos de archivo JPEG y PDF.
EXEC RPlotHist
Resultados
C:\temp\plots\rHistograms_Tip_and_Fare_Amount_1888441e542c.pdf[1]
C:\temp\plots\rXYPlots_Tip_vs_Fare_Amount_18887c9d517b.pdf
Los números de los nombres de archivo se generan de forma aleatoria para asegurarse de que no recibe un
error al intentar escribir en un archivo existente.
Ver salida
Para ver el trazado, abra la carpeta de destino y revise los archivos creados por el código R en el procedimiento
almacenado.
1. Vaya a la carpeta indicada en el mensaje STDOUT (en el ejemplo, es C:\temp\plots).
2. Abra rHistogram_Tipped.jpg para mostrar el número de viajes que obtuvieron una propina frente a los
que no obtuvieron propina (este histograma es similar al que ya generó en el paso anterior).
3. Abra rHistograms_Tip_and_Fare_Amount.pdf para ver la distribución de las cantidades de las propinas,
trazadas con respecto a los importes de las tarifas.
4. Abra rXYPlots_Tip_vs_Fare_Amount.pdf para ver un gráfico de dispersión con el importe de la tarifa en el
eje x y la cantidad de la propina en el eje y.
Pasos siguientes
En este artículo:
Revisó los datos de ejemplo
Creó trazados con R en T-SQL
Generó trazados en varios formatos de archivo
Tutorial de R: Creación de características de datos
Tutorial de R: Crear características de datos
14/07/2021 • 4 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
En la parte tres de esta serie de tutoriales de cinco partes, aprenderá a crear características a partir de datos sin
procesar mediante una función Transact-SQL. Después, llamará a esa función desde un procedimiento
almacenado de SQL para crear una tabla que contenga los valores de las características.
En este artículo, hará lo siguiente:
Modificará una función personalizada para calcular la distancia de la carrera
Guardará las características mediante otra función personalizada
En la parte uno, ha instalado los requisitos previos y ha restaurado la base de datos de ejemplo.
En la parte dos, revisó los datos de ejemplo y generó algunos trazados.
En la parte cuatro, cargará los módulos y llamará a las funciones necesarias para crear y entrenar el modelo
mediante un procedimiento almacenado de SQL Server.
En la parte cinco, aprenderá a poner en marcha los modelos entrenados y guardados en la parte cuatro.
En la parte cinco, aprenderá a poner en marcha los modelos entrenados y guardados en la parte cuatro.
CREATE FUNCTION [dbo].[fnCalculateDistance] (@Lat1 float, @Long1 float, @Lat2 float, @Long2 float)
-- User-defined function that calculates the direct distance between two geographical coordinates.
RETURNS float
AS
BEGIN
DECLARE @distance decimal(28, 10)
-- Convert to radians
SET @Lat1 = @Lat1 / 57.2958
SET @Long1 = @Long1 / 57.2958
SET @Lat2 = @Lat2 / 57.2958
SET @Long2 = @Long2 / 57.2958
-- Calculate distance
SET @distance = (SIN(@Lat1) * SIN(@Lat2)) + (COS(@Lat1) * COS(@Lat2) * COS(@Long2 - @Long1))
--Convert to miles
IF @distance <> 0
BEGIN
SET @distance = 3958.75 * ATAN(SQRT(1 - POWER(@distance, 2)) / @distance);
END
RETURN @distance
END
GO
La función es una función escalar y devuelve un único valor de datos de un tipo predefinido.
Toma los valores de latitud y longitud como entradas, obtenidos de las ubicaciones de origen y
destino de los viajes. La fórmula Haversine convierte ubicaciones en radianes y usa esos valores
para calcular la distancia directa en millas entre las dos ubicaciones.
)
GO
Esta función es una función con valores de tabla que toma varias columnas como entradas y
genera una tabla con varias columnas de características.
El propósito de esta función es crear características para usarlas en la creación de un modelo.
2. Para comprobar que esta función funciona, úsela para calcular la distancia geográfica de los trayectos en
los que la distancia medida era 0, pero las ubicaciones de origen y destino eran diferentes.
Como puede ver, la distancia notificada por el taxímetro no siempre se corresponde con la distancia
geográfica. Por eso es tan importante la ingeniería de características. Estas características de datos se
pueden usar para entrenar un modelo de Machine Learning con R.
Pasos siguientes
En este artículo:
Se modificó una función personalizada para calcular la distancia de la carrera
Se guardaron las características mediante otra función personalizada
Tutorial de R: Entrenamiento y guardado del modelo
Tutorial de R: Entrenamiento y guardado del
modelo
14/07/2021 • 3 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
En la parte cuatro de esta serie de tutoriales de cinco partes, aprenderá a entrenar un modelo de Machine
Learning mediante R. Deberá entrenar el modelo con las características de datos que creó en la parte anterior y
después guardar el modelo entrenado en una tabla de SQL Server. En este caso, los paquetes de R ya se han
instalado con R Services (en bases de datos), por lo que todo se puede hacer desde SQL.
En este artículo, hará lo siguiente:
Crear y entrenar un modelo mediante un procedimiento almacenado de SQL
Guardar el modelo entrenado en una tabla SQL
En la parte uno, ha instalado los requisitos previos y ha restaurado la base de datos de ejemplo.
En la parte dos, revisó los datos de ejemplo y generó algunos trazados.
En la tres, aprendió a crear características a partir de datos sin procesar mediante una función de Transact-SQL.
Después, llamó a esa función desde un procedimiento almacenado para crear una tabla que contiene los valores
de las características.
En la parte cinco, aprenderá a poner en marcha los modelos entrenados y guardados en la parte cuatro.
AS
BEGIN
DECLARE @inquery nvarchar(max) = N'
select tipped, fare_amount, passenger_count,trip_time_in_secs,trip_distance,
pickup_datetime, dropoff_datetime,
dbo.fnCalculateDistance(pickup_latitude, pickup_longitude, dropoff_latitude, dropoff_longitude)
as direct_distance
from nyctaxi_sample
tablesample (70 percent) repeatable (98052)
'
## Serialize model
trained_model <- as.raw(serialize(logitObj, NULL));
',
@input_data_1 = @inquery,
@params = N'@trained_model varbinary(max) OUTPUT',
@trained_model = @trained_model OUTPUT;
END
GO
Para asegurarse de que se dejan algunos datos para probar el modelo, el 70 % de los datos se
seleccionan aleatoriamente de la tabla de datos de taxi con fines de entrenamiento.
La consulta SELECT usa la función escalar personalizada fnCalculateDistance para calcular la
distancia directa entre las ubicaciones de origen y destino. Los resultados de la consulta se
almacenan en la variable de entrada predeterminada de R InputDataset .
El script de R llama a la función glm de R para crear el modelo de regresión logística.
La variable binaria tipped se usa como la etiqueta o columna del resultado y el modelo se ajusta
mediante estas columnas específicas: passenger_count, trip_distance, trip_time_in_secs y
direct_distance.
El modelo entrenado, guardado en la variable de R logitObj , se serializa y se devuelve como un
parámetro de salida.
2. Vea en la ventana Mensajes de Management Studio los mensajes que se canalizan al flujo stdout de R:
Mensaje(s) STDOUT del script externo: Filas leídas: 1193025, Total de filas procesadas: 1193025, Tiempo
total de fragmentos: 0,093 segundos
3. Una vez completada la instrucción, abra la tabla nyc_taxi_models. Es posible que el procesamiento de los
datos y el ajuste del modelo tarden un rato.
Puede ver que se ha agregado una fila nueva, que contiene el modelo serializado en la columna model y
el nombre del modelo RxTrainLogit_model en la columna name.
model name
---------------------------- ------------------
0x580A00000002000302020.... RTrainLogit_model
En la siguiente parte de este tutorial, usará el modelo entrenado para generar predicciones.
Pasos siguientes
En este artículo:
Creó y entrenó un modelo mediante un procedimiento almacenado de SQL
Guardó el modelo entrenado en una tabla SQL
Tutorial de R: Ejecución de predicciones en procedimientos almacenados de SQL
Tutorial de R: Ejecución de predicciones en
procedimientos almacenados de SQL
14/07/2021 • 6 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
En la parte cinco de esta serie de tutoriales de cinco partes, aprenderá a usar el modelo que ha entrenado y
guardado en la parte anterior usando el modelo para predecir posibles resultados. Se ajusta el modelo en un
procedimiento almacenado, al que otras aplicaciones pueden llamar directamente.
En este artículo se muestran dos maneras de realizar la puntuación:
Modo de puntuación por lotes : Use una consulta SELECT como entrada para el procedimiento
almacenado. El procedimiento almacenado devuelve una tabla de observaciones correspondientes a los
casos de entrada.
Modo de puntuación individual : pasar un conjunto de valores de parámetros individuales como
entrada. El procedimiento almacenado devuelve una sola fila o valor.
En este artículo, hará lo siguiente:
Crear y usar procedimientos almacenados para la puntuación por lotes
Crear y usar procedimientos almacenados para puntuar una sola fila
En la parte uno, ha instalado los requisitos previos y ha restaurado la base de datos de ejemplo.
En la parte dos, revisó los datos de ejemplo y generó algunos trazados.
En la tres, aprendió a crear características a partir de datos sin procesar mediante una función de Transact-SQL.
Después, llamó a esa función desde un procedimiento almacenado para crear una tabla que contiene los valores
de las características.
En la parte cuatro, cargó los módulos y llamó a las funciones necesarias para crear y entrenar el modelo
mediante un procedimiento almacenado de SQL Server.
Puntuaciones básicas
El procedimiento almacenado RPredict muestra la sintaxis básica para ajustar una llamada de PREDICT en un
procedimiento almacenado.
CREATE PROCEDURE [dbo].[RPredict] (@model varchar(250), @inquery nvarchar(max))
AS
BEGIN
DECLARE @lmodel2 varbinary(max) = (SELECT model FROM nyc_taxi_models WHERE name = @model);
EXEC sp_execute_external_script @language = N'R',
@script = N'
mod <- unserialize(as.raw(model));
print(summary(mod))
OutputDataSet <- data.frame(predict(mod, InputDataSet, type = "response"));
str(OutputDataSet)
print(OutputDataSet)
',
@input_data_1 = @inquery,
@params = N'@model varbinary(max)',
@model = @lmodel2
WITH RESULT SETS (("Score" float));
END
GO
Los nuevos casos que se van a puntuar se obtienen de la consulta de Transact-SQL especificada en
@inquery , el primer parámetro del procedimiento almacenado. Cuando se leen los datos de la consulta,
las filas se guardan en la trama de datos predeterminada, InputDataSet . Esta trama de datos se pasa a la
función PREDICT que genera las puntuaciones.
OutputDataSet <- data.frame(predict(mod, InputDataSet, type = "response"));
Como data.frame puede contener una sola fila, puede usar el mismo código para la puntuación individual
o por lotes.
El valor devuelto por la función PREDICT es un parámetro float que representa la probabilidad de que el
taxista reciba una propina de cualquier importe.
Ejemplo de resultados
-- Call the stored procedure for scoring and pass the input data
EXEC [dbo].[RPredictBatchOutput] @model = 'RTrainLogit_model', @inquery = @query_string;
El procedimiento almacenado devuelve una serie de valores que representan la predicción para cada uno de las
"Diez mejores carreras". Pero las mejores carreras de taxi también son viajes de un solo pasajero con un
recorrido relativamente corto, por lo que es poco probable que el taxista reciba una propina.
TIP
En lugar de devolver resultados de tipo "propina sí" y "propina no", también podría devolver la puntuación de
probabilidad de la predicción y, después, aplicar una cláusula WHERE a los valores de la columna Score para clasificar el
resultado como "propina probable" o "propina improbable", con un valor de umbral como 0,5 o 0,7. Este paso no se
incluye en el procedimiento almacenado, pero es fácil de implementar.
Si lo prefiere, puede usar este método más breve compatible con parámetros para un procedimiento
almacenado:
3. Los resultados indican que la probabilidad de obtener una propina es baja (cero) en estas diez mejores
carreras, ya todas ellas son carreras donde viaja un único pasajero en una distancia relativamente corta.
Conclusiones
Ahora que ya sabe insertar código de R en procedimientos almacenados, puede aplicarlo para crear sus propios
modelos. La integración con Transact-SQL hace mucho más fácil la implementación de modelos de R para la
predicción y la incorporación del reciclaje de modelos como parte de un flujo de trabajo de datos empresarial.
Pasos siguientes
En este artículo:
Creó y usó procedimientos almacenados para la puntuación por lotes
Creó y usó procedimientos almacenados para puntuar una sola fila
Para obtener más información sobre R, consulte Extensión de R en SQL Server.
Tutorial: Creación de modelos basados en
particiones en R en SQL Server
14/07/2021 • 9 minutes to read
Prerrequisitos
Para realizar este tutorial, debe disponer de lo siguiente:
Suficientes recursos del sistema. El conjunto de datos es grande y las operaciones de entrenamiento usan
muchos recursos. Si es posible, use un sistema con, al menos, 8 GB de RAM. También puede usar
conjuntos de datos más pequeños para solucionar las restricciones de recursos. Las instrucciones para
reducir el conjunto de datos están en línea.
Una herramienta para la ejecución de consultas de T-SQL, como SQL Server Management Studio.
NYCTaxi_Sample.bak, que puede descargar y restaurar en la instancia local del motor de base de datos. El
tamaño del archivo es de aproximadamente 90 MB.
Instancia del motor de base de datos de SQL Server 2019 con Machine Learning Services e integración
de R.
En el tutorial se usa una conexión de bucle invertido con SQL Server desde un script de R por ODBC. Por
lo tanto, debe crear un inicio de sesión para SQLRUserGroup.
Compruebe la versión mediante la ejecución de SELECT @@Version como una consulta de T-SQL en una
herramienta de consulta.
Compruebe la disponibilidad de paquetes de R; para ello, devuelva una lista con el formato correcto de todos
los paquetes de R instalados actualmente en la instancia del motor de base de datos:
EXECUTE sp_execute_external_script
@language=N'R',
@script = N'str(OutputDataSet);
packagematrix <- installed.packages();
Name <- packagematrix[,1];
Version <- packagematrix[,3];
OutputDataSet <- data.frame(Name, Version);',
@input_data_1 = N''
WITH RESULT SETS ((PackageName nvarchar(250), PackageVersion nvarchar(max) ))
Crear CalculateDistance
La base de datos de demostración incluye una función escalar para calcular la distancia, pero el procedimiento
almacenado funciona mejor con una función con valores de tabla. Ejecute el siguiente script para crear la
función CalculateDistance que se usa en el paso de entrenamiento más adelante.
Para confirmar que se ha creado la función, compruebe las funciones con valores de tabla de
\Programmability\Functions\ en la base de datos NYCTaxi_Sample en el Explorador de objetos.
USE NYCTaxi_sample
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
USE NYCTaxi_Sample
GO
CREATE
OR
# Make sure InputDataSet is not empty. In parallel mode, if one thread gets zero data, an error occurs
if (nrow(InputDataSet) > 0) {
# Define the connection string
connStr <- paste("Driver=SQL Server;Server=", instance_name, ";Database=", database_name,
";Trusted_Connection=true;", sep="");
# Create the data source. To reduce data size, add rowsPerRead=500000 to cut the dataset by half.
ds <- RxOdbcData(table="ml_models", connectionString=connStr);
'
,@input_data_1 = @input_query
,@input_data_1_partition_by_columns = N'payment_type'
,@input_data_1_order_by_columns = N'passenger_count'
,@parallel = 1
,@params = N'@instance_name nvarchar(100), @database_name nvarchar(128)'
,@instance_name = @instance_name
,@database_name = @database_name
WITH RESULT SETS NONE
END;
GO
Ejecución en paralelo
Observe que las entradas de sp_execute_external_script incluyen @parallel=1 , que se usa para habilitar el
procesamiento paralelo. A diferencia de las versiones anteriores, en SQL Server 2019, el establecimiento de
@parallel=1 proporciona una indicación más fuerte al optimizador de consultas, lo que convierte a la ejecución
en paralelo en un resultado mucho más probable.
De forma predeterminada, el optimizador de consultas tiende a funcionar con @parallel=1 en tablas con más
de 256 filas, pero puede controlar esto de forma explícita si establece @parallel=1 como se muestra en este
script.
TIP
En las cargas de trabajo de entrenamiento, puede usar @parallel con cualquier script de entrenamiento arbitrario,
incluso aquellos que usan algoritmos rx que no son de Microsoft. Normalmente, solo los algoritmos de RevoScaleR (con el
prefijo rx) ofrecen paralelismo en escenarios de entrenamiento de SQL Server. Pero con el nuevo parámetro, puede
paralelizar un script que llame a funciones, incluidas funciones de R de código abierto, no diseñado específicamente con
esa capacidad. Esto funciona porque las particiones tienen afinidad con subprocesos concretos, así que todas las
operaciones llamadas en un script se ejecutan por partición en el thread.
determinado.
NOTE
Si está ejecutando otras cargas de trabajo, puede anexar OPTION(MAXDOP 2) a la instrucción SELECT si quiere limitar el
procesamiento de consultas a solo dos núcleos.
SELECT *
FROM ml_models
USE NYCTaxi_Sample
GO
if (nrow(InputDataSet) > 0) {
} else {
OutputDataSet <- data.frame(integer(), InputDataSet[,]);
}
'
,@input_data_1 = @input_query
,@parallel = 1
,@input_data_1_partition_by_columns = N'payment_type'
,@params = N'@instance_name nvarchar(100), @database_name nvarchar(128)'
,@instance_name = @instance_name
,@database_name = @database_name
WITH RESULT SETS((
tipped_Pred INT
,payment_type VARCHAR(5)
,tipped INT
,passenger_count INT
,trip_distance FLOAT
,trip_time_in_secs INT
,direct_distance FLOAT
));
END;
GO
Pasos siguientes
En este tutorial ha usado sp_execute_external_script para iterar operaciones en datos con particiones. Para
obtener una visión más detallada de la llamada a scripts externos en procedimientos almacenados y del uso de
funciones de RevoScaleR, continúe con el tutorial siguiente.
Tutorial de R y SQL Server
Tutorial: Desarrollo de SQL para científicos de datos
de R
14/07/2021 • 4 minutes to read
Prerrequisitos
SQL Server Machine Learning Services con integración de R o SQL Server 2016 R Services
Permisos de base de datos y un inicio de sesión de usuario de base de datos de SQL Server
SQL Server Management Studio
Base de datos de demo NYC Taxi
Un IDE de R como RStudio o la herramienta RGUI integrada incluida con R
Se recomienda realizar este tutorial en una estación de trabajo de cliente. Debe poder conectarse en la misma
red a un equipo de SQL Server con SQL Server y el lenguaje R habilitados. Para obtener instrucciones sobre la
configuración de la estación de trabajo, vea Configuración de un cliente de ciencia de datos para el desarrollo
en R.
Como alternativa, puede ejecutar el tutorial en un equipo que tenga tanto SQL Server como un entorno de
desarrollo de R, pero esta configuración es desaconsejable en un entorno de producción. Si necesita colocar el
cliente y el servidor en el mismo equipo, asegúrese de instalar un segundo conjunto de bibliotecas de
Microsoft R para enviar scripts de R desde un cliente "remoto". No use las bibliotecas de R que están instaladas
en los archivos de programa de la instancia de SQL Server. Concretamente, si usa un equipo, necesita tener la
biblioteca RevoScaleR en ambas ubicaciones para admitir las operaciones de cliente y de servidor.
C:\Archivos de programa\Microsoft\R Client\R_SERVER\library\RevoScaleR
C:\Archivos de programa\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\library\RevoScaleR
Otros paquetes de R
Este tutorial requiere varias bibliotecas de R que no se instalan de forma predeterminada como parte de R
Services (en bases de datos). Debe instalar los paquetes tanto en el cliente donde desarrolle la solución como en
el equipo con SQL Server donde la implemente.
En una estación de trabajo de cliente
En el entorno de R, copie las siguientes líneas y ejecute el código en una ventana de la consola (RGui o un IDE).
Algunos paquetes también instalan paquetes necesarios. En general, se instalarán unos 32 paquetes. Deberá
disponer de conexión a Internet para poder realizar este paso.
En el servidor
Existen varias opciones para instalar paquetes en SQL Server. Por ejemplo, SQL Server proporciona una
característica de administración de paquetes de R que permite a los administradores de bases de datos crear un
repositorio de paquetes y asignar a los usuarios derechos para instalar sus propios paquetes. Con todo, si es un
administrador en el equipo, puede instalar nuevos paquetes mediante R, siempre que instale en la biblioteca
correcta.
NOTE
En el servidor, no instale en una biblioteca de usuario, aunque se le pida. Si lo hace, la instancia de SQL Server no podrá
encontrar ni ejecutar los paquetes. Para más información, vea Instalación de paquetes de R nuevos en SQL Server.
1. En el equipo con SQL Server, abra RGui.exe como administrador . Si ha instalado SQL Server R Services
usando los valores predeterminados, Rgui.exe estará en C:\Archivos de
programa\Microsoft SQL Server\MSSQL13. MSSQLSERVER\R_SERVICES\bin\x64).
2. En un símbolo del sistema de R, ejecute los siguientes comandos de R:
En este ejemplo se usa la función grep de R para buscar en el vector de rutas de acceso disponibles y encontrar
la ruta de acceso que incluya "Archivos de programa". Para más información, vea
https://www.rdocumentation.org/packages/base/functions/grep.
Si cree que los paquetes ya están instalados, ejecute installed.packages() para revisar la lista de paquetes
instalados.
Pasos siguientes
Exploración y resumen de los datos
Visualización y resumen de datos de SQL Server
mediante R (tutorial)
14/07/2021 • 8 minutes to read
library("RevoScaleR")
Normalmente se recomienda usar la autenticación de Windows siempre que sea posible, para no tener
que guardar contraseñas en el código de R.
3. Defina las variables que se usarán al crear un nuevo contexto de proceso. Después de crear el objeto de
contexto de proceso, puede usarlo para ejecutar el código de R en la instancia de SQL Server.
R usa un directorio temporal cuando serializa los objetos de R entre la estación de trabajo y el
equipo con SQL Server . Puede especificar el directorio local que se usa como sqlShareDir o
aceptar el valor predeterminado.
Use sqlWait para indicar si quiere que R espere los resultados del servidor. Para obtener una
explicación sobre si esperar o no los trabajos, vea Proceso distribuido y en paralelo con
RevoScaleR en Microsoft R.
Use el argumento sqlConsoleOutput para indicar que no quiere ver los resultados desde la
consola de R.
4. Llame al constructor RxInSqlServer para crear el objeto de contexto de proceso con las variables y las
cadenas de conexión ya definidas, y guarde el nuevo objeto en la variable de R sqlcc.
5. De manera predeterminada, el contexto de proceso es local, por lo que deberá establecer explícitamente
el contexto de proceso activo.
rxSetComputeContext(sqlcc)
Aquí hemos usado una cláusula TOP para que todo se ejecute más rápido, pero las filas reales devueltas
por la consulta pueden variar según el orden. Por lo tanto, los resultados de resumen también pueden ser
diferentes de los que se enumeran aquí. No dude en quitar la cláusula TOP.
2. Pase la definición de consulta como argumento a la función RxSqlServerData.
El argumento colClasses especifica los tipos de columna que se usarán al mover los datos entre
SQL Server y R. Esto es importante porque SQL Server usa tipos de datos distintos a los de R y
más tipos de datos. Para más información, vea Bibliotecas de R y tipos de datos.
El argumento rowsPerRead es importante para controlar el uso de memoria y la eficacia de los
procesos. La mayoría de las funciones analíticas mejoradas deR Services (en bases de datos)
procesan los datos en fragmentos y acumulan los resultados intermedios, devolviendo los cálculos
finales después de que se han leído todos los datos. Al agregar el parámetro rowsPerRead, se
consigue controlar cuántas filas de datos se leen en cada fragmento para su procesamiento. Si el
valor de este parámetro es demasiado grande, es posible que el acceso a los datos sea lento
porque no tiene suficiente memoria para procesar de forma eficaz un fragmento de datos tan
grande. En algunos sistemas, si se establece rowsPerRead en un valor demasiado pequeño
también puede suponer un rendimiento más lento.
3. Hasta ahora, ha creado el objeto inDataSource, pero no contiene ningún dato. Los datos no se extraen de
la consulta de SQL al entorno local hasta que se ejecuta una función como rxImport o rxSummary.
Aunque, como ya ha definido los objetos de datos, puede usarlos como argumento para otras funciones.
rxGetVarInfo(data = inDataSource)
Resultados
Var 1: tipped, Type: integer
Var 2: fare_amount, Type: numeric
Var 3: passenger_count, Type: integer
Var 4: trip_time_in_secs, Type: numeric, Storage: int64
Var 5: trip_distance, Type: numeric
Var 6: pickup_datetime, Type: character
Var 7: dropoff_datetime, Type: character
Var 8: pickup_longitude, Type: numeric
Var 9: pickup_latitude, Type: numeric
Var 10: dropoff_longitude, Type: numeric
2. Ahora, llame a la función rxSummary de RevoScaleR para obtener estadísticas más detalladas sobre las
variables individuales.
rxSummary se basa en la función summary de R, pero tiene algunas características y ventajas adicionales.
rxSummary funciona en varios contextos de proceso y admite la fragmentación. También puede usarse
rxSummary para transformar valores o resumir en función de los niveles de factor.
En este ejemplo, se resume el importe de la carrera en función del número de pasajeros.
El primer argumento para rxSummary especifica la fórmula o el término que se va a usar para
resumir. Aquí se usa la función F() para convertir los valores de passenger_count en factores antes
de resumirlos. También debe especificar el valor mínimo (1) y el valor máximo (6) para la variable del
factor passenger_count.
Si no especifica las estadísticas de salida, rxSummary genera de forma predeterminada Mean, StDev,
Min, Max y el número de observaciones válidas y que faltan.
Este ejemplo también incluye algo de código para realizar un seguimiento de la hora a la que empieza
y finaliza la función, para que pueda comparar el rendimiento.
Resultados
Si la función rxSummary se ejecuta correctamente, se mostrarán resultados como estos, seguidos de una
lista de estadísticas por categoría.
TIP
Mientras se está ejecutando, puede usar una herramienta como el Explorador de procesos o SQL Server Profiler para ver
cómo se establece la conexión y cómo se ejecuta el código de R con los servicios de SQL Server.
Pasos siguientes
Crear gráficos y trazados con R
Crear gráficos y trazados mediante SQL y R
(tutorial)
14/07/2021 • 4 minutes to read
Requisitos previos
En este paso se da por supuesto que hay una sesión de R en curso basada en los pasos anteriores de este
tutorial. Usaremos las cadenas de conexión y los objetos de origen de datos creados en esos pasos. También
emplearemos las siguientes herramientas y paquetes para ejecutar el script.
Rgui.exe para ejecutar comandos de R
Management Studio para ejecutar T-SQL
googMap
paquete ggmap
paquete mapproj
Crear un histograma
1. Ejecute estas líneas para generar el primer trazado mediante la función rxHistogram . La función
rxHistogram ofrece funciones similares a las de los paquetes de R de código abierto, pero se puede
ejecutar en un contexto de ejecución remota.
La función mapPlot toma dos argumentos: un objeto de datos existente que se definió anteriormente
mediante RxSqlServerData, y la representación del mapa que se pasa desde el cliente.
En la línea que empieza con la variable ds, se usa rxImport para cargar datos en la memoria desde el
origen de datos creado anteriormente, inDataSource. (Ese origen de datos solo contiene 1000 filas; si
desea crear un mapa con más puntos de datos, puede sustituir un origen de datos diferente).
Siempre que use funciones de R de código abierto, hay que cargar los datos en tramas de datos en
memoria. No obstante, si llama a la función rxImport, puede ejecutar en la memoria del contexto de
proceso remoto.
2. Cambie al contexto de proceso local y cargue las bibliotecas necesarias para crear las asignaciones.
rxSetComputeContext("local")
library(ggmap)
library(mapproj)
gc <- geocode("Times Square", source = "google")
googMap <- get_googlemap(center = as.numeric(gc), zoom = 12, maptype = 'roadmap', color = 'color');
rxSetComputeContext(sqlcc)
myplots <- rxExec(mapPlot, inDataSource, googMap, timesToRun = 1)
plot(myplots[[1]][["myplot"]]);
Los datos de mapa de googMap se pasan como un argumento a la función ejecutada de forma
remota mapPlot. Como los mapas se generaron en el entorno local, deben pasarse a la función
para poder crear el gráfico en el contexto de SQL Server.
Cuando se ejecuta la línea que empieza con plot , los datos representados se vuelven a serializar
en el entorno local de R para que pueda verlos en el cliente de R.
NOTE
Si usa SQL Server en una máquina virtual de Azure, es posible que obtenga un error en este momento. Se
produce un error cuando la regla de firewall predeterminada en Azure bloquea el acceso a la red mediante código
R. Para saber más sobre cómo corregir este error, vea Instalación de Machine Learning (R) Services en una
máquina virtual de Azure.
4. En la siguiente imagen se muestra el trazado de salida. Las ubicaciones de recogida de taxi se agregan al
mapa como puntos rojos. La imagen podría ser diferente, en función del número de ubicaciones que
haya en el origen de datos usado.
Pasos siguientes
Crear características de datos mediante R y SQL
Creación de características de datos con R y SQL
Server (tutorial)
14/07/2021 • 9 minutes to read
Requisitos previos
En este paso se da por supuesto que hay una sesión de R en curso basada en los pasos anteriores de este
tutorial. Usaremos las cadenas de conexión y los objetos de origen de datos creados en esos pasos. También
emplearemos las siguientes herramientas y paquetes para ejecutar el script.
Rgui.exe para ejecutar comandos de R
Management Studio para ejecutar T-SQL
Características con R
El lenguaje R es conocido por sus completas y variadas bibliotecas estadísticas, pero también podría necesitar
crear transformaciones de datos personalizadas.
En primer lugar, seguiremos el método que suelen emplear los usuarios de R. Obtendremos los datos en el
portátil y, después, ejecutaremos una función de R personalizada, ComputeDist, que calcula la distancia lineal
entre dos puntos especificados por los valores de latitud y longitud.
1. Recuerde que el objeto de origen de datos que creó anteriormente obtiene solo las primeras 1000 filas.
Vamos a definir una consulta que obtenga todos los datos.
RxSqlServerData puede tomar una consulta que conste de una consulta SELECT válida,
proporcionada como argumento para el parámetro sqlQuery, o bien el nombre de un objeto de
tabla, proporcionado como parámetro table.
Si quiere realizar un muestreo de los datos de una tabla, debe usar el parámetro sqlQuery, definir
parámetros de muestreo mediante la cláusula TABLESAMPLE de T-SQL y establecer el argumento
rowBuffering en FALSE.
3. Ejecute el código siguiente para crear la función de R personalizada. ComputeDist toma dos pares de
valores de latitud y longitud y calcula la distancia lineal entre ellos, tras lo cual devuelve la distancia en
millas.
La primera línea define un nuevo entorno. En R, se puede usar un entorno para encapsular los
espacios de nombres en paquetes y similares. Puede usar la función search() para ver los entornos
en el área de trabajo. Para ver los objetos en un entorno específico, escriba ls(<envname>) .
Las líneas que comienzan con $env.ComputeDist contienen el código que define la fórmula haversine,
que calcula la distancia del círculo máximo entre dos puntos en una esfera.
4. Después de definir la función, se aplicará a los datos para crear una nueva columna de característica,
direct_distance. Pero antes de ejecutar la transformación, cambie el contexto de cálculo a local.
rxSetComputeContext("local");
5. Llame a la función rxDataStep para obtener los datos de ingeniería de las características y aplique la
función env$ComputeDist a los datos de la memoria.
start.time <- proc.time();
La función rxDataStep admite varios métodos para modificar los datos en su lugar. Para obtener más
información, consulte el artículo sobre cómo transformar datos y crear subconjuntos de ellos en
Microsoft R.
Aun así, hay que tener en cuenta un par de cuestiones sobre rxDataStep:
En otros orígenes de datos, puede usar los argumentos varsToKeep y varsToDrop, pero no se admiten
para los orígenes de datos de SQL Server. Por lo tanto, en este ejemplo, hemos usado el argumento
transforms para especificar las columnas de paso a través y las columnas transformadas. Además,
cuando se ejecuta en un contexto de cálculo de SQL Server, el argumento inData solo puede tomar un
origen de datos de SQL Server.
El código anterior también puede generar un mensaje de advertencia cuando se ejecuta en conjuntos de
datos de mayor tamaño. Cuando el número de filas multiplicadas por el número de columnas que se
están creando supera un valor establecido (el valor predeterminado es 3 000 000), rxDataStep devuelve
una advertencia y se trunca el número de filas en la trama de datos devuelta. Para quitar la advertencia,
puede modificar el argumento maxRowsByCols en la función rxDataStep. Aun así, si maxRowsByCols es
demasiado grande, podría experimentar problemas al cargar la trama de datos en la memoria.
6. Opcionalmente, puede llamar a rxGetVarInfo para inspeccionar el esquema del origen de datos
transformado.
rxGetVarInfo(data = changed_ds);
2. En Management Studio, en una nueva ventana de consulta, ejecute la siguiente instrucción Transact-SQL
desde cualquier aplicación que admita Transact-SQL para ver cómo actúa la función.
USE nyctaxi_sample
GO
3. Para insertar valores directamente en una nueva tabla (debe crearla primero), puede agregar una
cláusula INTO que especifique el nombre de la tabla.
USE nyctaxi_sample
GO
4. También puede llamar a la función SQL desde código de R. Vuelva a Rgui y almacene la consulta de
características SQL en una variable de R.
5. Use las siguientes líneas de código para llamar a la función de Transact-SQL desde su entorno de R y
aplicarla a los datos definidos en featureEngineeringQuery.
6. Ahora que se ha creado la característica, llame a r xGetVarsInfo para crear un resumen de los datos de la
tabla de características.
rxGetVarInfo(data = featureDataSource)
Resultados
NOTE
En algunos casos, podría recibir un error similar al siguiente: Se denegó el permiso EXECUTE en el objeto
"fnCalculateDistance" . Si es así, asegúrese de que el inicio de sesión que usa tiene permisos para ejecutar scripts y
crear objetos en la base de datos, no solo en la instancia. Compruebe el esquema del objeto, fnCalculateDistance.
Si el objeto lo creó el propietario de la base de datos y el inicio de sesión pertenece al rol db_datareader, debe
conceder al inicio de sesión permisos explícitos para ejecutar el script.
TIP
A menudo, la ingeniería de características con Transact-SQL es más rápida que R. Por ejemplo, T-SQL incluye funciones
rápidas de ventana y categoría que se pueden aplicar a cálculos comunes de la ciencia de datos, como aplicar medias
móviles y n-tiles. Elija el método más eficaz en función de los datos y la tarea.
Pasos siguientes
Compilar un modelo de R y guardarlo en SQL
Compilación de un modelo de R y almacenamiento
en SQL Server (tutorial)
14/07/2021 • 7 minutes to read
Prerrequisitos
En este paso se da por supuesto que hay una sesión de R en curso basada en los pasos anteriores de este
tutorial. Usaremos las cadenas de conexión y los objetos de origen de datos creados en esos pasos. También
emplearemos las siguientes herramientas y paquetes para ejecutar el script.
Rgui.exe para ejecutar comandos de R
Management Studio para ejecutar T-SQL
Paquete ROCR
Paquete RODBC
Creación de un procedimiento almacenado para guardar modelos
En este paso se usa un procedimiento almacenado para guardar un modelo entrenado en SQL Server. La tarea
será más sencilla si se crea un procedimiento almacenado para realizar esta operación.
Ejecute el siguiente código de T-SQL en una ventana de consulta de Management Studio para crear el
procedimiento almacenado.
USE [NYCTaxi_Sample]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'PersistModel')
DROP PROCEDURE PersistModel
GO
La llamada que compila el modelo está incluida en la función system.time. Esto le permite disponer del
tiempo necesario para compilar el modelo.
2. Después de generar el modelo, se puede inspeccionar con la función summary y ver los coeficientes.
summary(logitObj);
Resultados
Para simplificar este ejemplo, la entrada en el modelo de regresión logística es el mismo origen de
datos de características ( sql_feature_ds ) que usó para entrenar el modelo. La mayoría de las
veces tendrá datos nuevos con los que puntuar, o podría haber reservado algunos datos para
realizar las pruebas y no el entrenamiento.
Los resultados de predicción se guardarán en la tabla taxiscoreOutput. Tenga en cuenta que el
esquema de esta tabla no está definido cuando se crea mediante rxSqlServerData. Dicho esquema
se obtiene de la salida de rxPredict.
Para crear la tabla que almacena los valores predichos, el inicio de sesión de SQL que ejecuta la
función de datos rxSqlServer debe tener privilegios DDL en la base de datos. Si el inicio de sesión
no puede crear tablas, se producirá un error en la instrucción.
2. Llame a la función rxPredict para generar resultados.
rxPredict(modelObject = logitObj,
data = featureDataSource,
outData = scoredOutput,
predVarNames = "Score",
type = "response",
writeModelVars = TRUE, overwrite = TRUE)
Si la instrucción se ejecuta correctamente, debe tardar algo de tiempo en ejecutarse. Cuando finalice,
puede abrir SQL Server Management Studio y comprobar que la tabla se ha creado y que contiene la
columna de puntuación (Score) y otra salida prevista.
scoredOutput = rxImport(scoredOutput);
rxRoc(actualVarName= "tipped", predVarNames = "Score", scoredOutput);
Esta llamada devuelve los valores usados para calcular el gráfico de ROC. La columna de etiqueta es
tipped, que contiene los resultados reales que está intentando predecir, mientras que la columna Score
contiene la predicción.
2. Para trazar el gráfico de facto, puede guardar el objeto ROC y, después, dibujarlo con la función de
trazado. El gráfico se crea en el contexto de cálculo remoto y luego se devuelve al entorno de R.
scoredOutput = rxImport(scoredOutput);
rocObjectOut <- rxRoc(actualVarName= "tipped", predVarNames = "Score", scoredOutput);
plot(rocObjectOut);
Para verlo, abra el dispositivo de gráficos de R o haga clic en la ventana Trazar en RStudio.
Crear los trazados en el contexto de cálculo local con datos de SQL Server
Para comprobar que el contexto de cálculo es local, ejecute rxGetComputeContext() en el símbolo del sistema. El
valor devuelto debe ser "RxLocalSeq Compute Context".
1. En el contexto de cálculo local, el proceso es prácticamente el mismo. Para incluir los datos especificados
del entorno local de R se usa la función rxImport.
scoredOutput = rxImport(scoredOutput)
2. Usando los datos de la memoria local, hay que cargar el paquete ROCR y usar la función de predicción
de ese paquete para crear algunas predicciones nuevas.
library('ROCR');
pred <- prediction(scoredOutput$Score, scoredOutput$tipped);
3. Genere un trazado local según los valores almacenados en la variable de salida pred .
acc.perf = performance(pred, measure = 'acc');
plot(acc.perf);
ind = which.max( slot(acc.perf, 'y.values')[[1]] );
acc = slot(acc.perf, 'y.values')[[1]][ind];
cutoff = slot(acc.perf, 'x.values')[[1]][ind];
NOTE
Sus gráficos pueden tener un aspecto diferente al de estos, dependiendo de cuántos puntos de datos haya usado.
rxSetComputeContext("local");
modelbin <- serialize(logitObj, NULL);
modelbinstr=paste(modelbin, collapse="");
2. Abra una conexión ODBC con RODBC . La llamada a RODBC se puede omitir si ya tiene el paquete
cargado.
library(RODBC);
conn <- odbcDriverConnect(connStr);
3. Llame al procedimiento almacenado PersistModel en SQL Server para transmitir el objeto serializado a la
base de datos y almacenar la representación binaria del modelo en una columna.
4. Use Management Studio para confirmar que el modelo existe. En el Explorador de objetos, haga clic con
el botón derecho en la tabla nyc_taxi_models y haga clic en Seleccionar las primeras 1000 filas . En
Resultados, debería ver una representación binaria en la columna models .
Para guardar un modelo en una tabla, solo hace falta una instrucción INSERT. Con todo, esto a menudo resulta
más fácil cuando se incluyen en un procedimiento almacenado, como PersistModel.
Pasos siguientes
En la siguiente (y última) lección, aprenderá a realizar la puntuación en el modelo guardado con Transact-SQL.
Implementación del modelo de R y uso en SQL
Implementación del modelo de R y su uso en
SQL Server (tutorial)
14/07/2021 • 6 minutes to read
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'PredictTipBatchMode')
DROP PROCEDURE v
GO
Use una instrucción SELECT para llamar al modelo almacenado desde una tabla SQL. El modelo se
recupera de la tabla como datos varbinar y(max) , se almacena en la variable SQL @lmodel2 y se
pasa como parámetro mod al procedimiento almacenado del sistema sp_execute_external_script.
Los datos que se usan como entradas de la puntuación se definen como una consulta SQL y se
almacenan como una cadena en la variable SQL @input. A medida que se recuperan datos de la
base de datos, se van almacenando en una trama de datos llamada InputDataSet, que es
sencillamente el nombre predeterminado de los datos de entrada en el procedimiento
sp_execute_external_script. Si lo necesita, puede establecer otro nombre de variable con el
parámetro @input_data_1_name.
Para generar las puntuaciones, el procedimiento almacenado llama a la función rxPredict de la
biblioteca RevoScaleR .
El valor devuelto, Score, es la probabilidad de que el conductor reciba una propina, según el
modelo. De manera opcional, podría aplicar fácilmente algún tipo de filtro a los valores devueltos
para clasificarlos en grupos tipo "propina" o "sin propina". Por ejemplo, una probabilidad menor
que 0,5 significaría que no es probable que reciba una propina.
2. Para llamar al procedimiento almacenado en el modo por lotes, se define la consulta requerida como
entrada del procedimiento almacenado. La siguiente es la consulta SQL que se puede ejecutar en SSMS
para comprobar que esto funciona.
SELECT TOP 10
a.passenger_count AS passenger_count,
a.trip_time_in_secs AS trip_time_in_secs,
a.trip_distance AS trip_distance,
a.dropoff_datetime AS dropoff_datetime,
dbo.fnCalculateDistance( pickup_latitude, pickup_longitude, dropoff_latitude, dropoff_longitude) AS
direct_distance
FROM
(SELECT medallion, hack_license, pickup_datetime,
passenger_count,trip_time_in_secs,trip_distance, dropoff_datetime, pickup_latitude, pickup_longitude,
dropoff_latitude, dropoff_longitude
FROM nyctaxi_sample)a
LEFT OUTER JOIN
( SELECT medallion, hack_license, pickup_datetime
FROM nyctaxi_sample tablesample (1 percent) repeatable (98052) )b
ON a.medallion=b.medallion
AND a.hack_license=b.hack_license
AND a.pickup_datetime=b.pickup_datetime
WHERE b.medallion is null
3. Use este código de R para crear la cadena de entrada a partir de la consulta SQL:
4. Para ejecutar el procedimiento almacenado desde R, llame al método sqlQuer y del paquete RODBC y
use la conexión SQL conn de que definió anteriormente:
USE [NYCTaxi_Sample]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'PredictTipSingleMode')
DROP PROCEDURE v
GO
Los valores pasados aquí se corresponden, respectivamente, con las variables passenger_count,
trip_distance, trip_time_in_secs, pickup_latitude, pickup_longitude, dropoff_latitude y dropoff_longitude.
3. Para ejecutar esta misma llamada desde código R, basta con definir una variable de R que contenga toda
la llamada al procedimiento almacenado, como el siguiente:
Los valores pasados aquí se corresponden, respectivamente, con las variables passenger_count,
trip_distance, trip_time_in_secs, pickup_latitude, pickup_longitude, dropoff_latitude y dropoff_longitude.
4. Llame a sqlQuery (desde el paquete RODBC ) y pase la cadena de conexión, así como la variable de
cadena que contiene la llamada al procedimiento almacenado.
TIP
Herramientas de R para Visual Studio (RTVS) se integra tremendamente bien con SQL Server y con R. Vea este
artículo para obtener más ejemplos del uso de RODBC con una conexión de SQL Server: Trabajar con SQL Server
y R.
Pasos siguientes
Ahora que ha aprendido a trabajar con datos de SQL Server y a conservar modelos entrenados de R en SQL
Server, debería serle relativamente fácil crear modelos basados en este conjunto de datos. Por ejemplo, podría
intentar crear estos otros modelos:
Un modelo de regresión que predice la cantidad de propina
Un modelo de clasificación de varias clases que predice si la propina es pequeña, mediana o grande
Puede que también le interese explorar estos otros ejemplos y recursos:
Escenarios de ciencia de datos y plantillas de soluciones
Análisis avanzado en base de datos
Tutorial: Uso de funciones RevoScaleR R con datos
de SQL Server
14/07/2021 • 3 minutes to read
Prerrequisitos
SQL Server Machine Learning Services con la función R o SQL Server R Services (en la base de datos)
Permisos de base de datos y un inicio de sesión de usuario de base de datos de SQL Server
SQL Server Management Studio
Un IDE como RStudio o la herramienta de RGUI integrada incluida con R
Para alternar entre los contextos de proceso locales y remotos, se necesitan dos sistemas. El contexto local suele
ser una estación de trabajo de desarrollo con capacidad suficiente para cargas de trabajo de ciencia de datos. El
contexto remoto, en este caso, es un servidor SQL Server con la característica R habilitada.
El cambio de los contextos de proceso se basa en tener la misma versión de RevoScaleR en los sistemas locales
y remotos. En una estación de trabajo local, puede obtener los paquetes de RevoScaleR y los proveedores
relacionados si instala Microsoft R Client.
Si necesita colocar el cliente y el servidor en el mismo equipo, asegúrese de instalar un segundo conjunto de
bibliotecas de Microsoft R para enviar scripts de R desde un cliente "remoto". No use las bibliotecas de R que
están instaladas en los archivos de programa de la instancia de SQL Server. Concretamente, si usa un equipo,
necesita tener la biblioteca RevoScaleR en ambas ubicaciones para admitir las operaciones de cliente y de
servidor.
C:\Archivos de programa\Microsoft\R Client\R_SERVER\library\RevoScaleR
C:\Archivos de programa\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\library\RevoScaleR
Para obtener instrucciones sobre la configuración de cliente, vea Configuración de un cliente de ciencia de datos
para el desarrollo en R.
Herramientas de desarrollo en R
Los desarrolladores de R suelen usar varios IDE para escribir y depurar código de R. Estas son algunas
sugerencias:
Herramientas de R para Visual Studio (RTVS) es un complemento gratuito que proporciona
IntelliSense, depuración y compatibilidad con Microsoft R. Puede usarse con SQL Server Machine
Learning Services. Para descargarlo, consulte la página sobre Herramientas de R para Visual Studio.
RStudio es uno de los entornos de desarrollo de R más populares. Para más información, consulte
https://www.rstudio.com/products/RStudio/.
Las herramientas básicas de R (R.exe, RTerm.exe, RScripts.exe) también se instalan de forma
predeterminada al instalar R en SQL Server o en el cliente de R. Si no quiere instalar un IDE, puede usar
las herramientas de R integradas para ejecutar el código de este tutorial.
Recuerde que RevoScaleR es necesario en el equipo local y en el remoto. No puede completar este tutorial con
una instalación genérica de RStudio u otro entorno que no tenga las bibliotecas de Microsoft R. Para obtener
más información, consulte Configurar un cliente de ciencia de datos.
Resumen de tareas
Los datos se han obtenido inicialmente de archivos CSV o archivos XDF. Ahora tiene que importar los datos
en SQL Server usando las funciones del paquete RevoScaleR .
El entrenamiento de modelos y la puntuación se realiza en el contexto de proceso de SQL Server.
Use las funciones de RevoScaleR para crear nuevas tablas de SQL Server para guardar los resultados de
puntuación.
Cree trazados tanto en el servidor como en el contexto de proceso local.
Entrene un modelo con los datos de la base de datos SQL Server, ejecutando R en la instancia de SQL Server.
Extraiga un subconjunto de datos y guárdelos como un archivo XDF para volver a usarlos en el análisis en la
estación de trabajo local.
Para obtener datos nuevos para la puntuación, abra una conexión ODBC con la base de datos SQL Server. La
puntuación se realiza en la estación de trabajo local.
Cree una función personalizada de R y ejecútela en el contexto de proceso del servidor para realizar una
simulación.
Pasos siguientes
Tutorial 1: Creación de bases de datos y permisos
Creación de una base de datos y permisos (tutorial
de SQL Server y RevoScaleR)
14/07/2021 • 4 minutes to read
Asignación de permisos
En este tutorial se muestran las operaciones de DDL y scripts de R, incluida la creación y la eliminación de tablas
y procedimientos almacenados, así como la ejecución de scripts de R en un proceso externo en SQL Server. En
este paso, asigne permisos para permitir estas tareas.
En este ejemplo se da por supuesto un inicio de sesión de SQL (DDUser01), pero si creó un inicio de sesión de
Windows, úselo en su lugar.
USE RevoDeepDive
GO
Pasos siguientes
Crear objetos de datos de SQL Server mediante RxSqlServerData
Creación de objetos de datos de SQL Server con
RxSqlServerData (tutorial de SQL Server y
RevoScaleR)
14/07/2021 • 7 minutes to read
Autenticación de Windows
sqlRowsPerRead = 5000
Aunque este parámetro es opcional, su configuración puede traducirse en cálculos más eficientes. La
mayoría de las funciones analíticas mejoradas en RevoScaleR y MicrosoftML procesan los datos en
fragmentos. El parámetro rowsPerRead determina el número de filas de cada fragmento.
Es posible que tenga que experimentar con esta configuración para encontrar el equilibrio adecuado. Si el
valor es demasiado grande, puede que el acceso a los datos sea lento cuando no haya memoria suficiente
para procesar los datos en fragmentos de ese tamaño. Por el contrario, en algunos sistemas, si el valor de
rowsPerRead es demasiado pequeño, el rendimiento también puede disminuir.
Como valor inicial, utilice el tamaño predeterminado de proceso por lotes definido por la instancia del
motor de base de datos para controlar el número de filas de cada fragmento (5000 filas). Guarde el valor
en la variable sqlRowsPerRead.
4. Defina una variable para el nuevo objeto de origen de datos y pase los argumentos definidos
previamente al constructor RxSqlSer verData . Tenga en cuenta que esto solo crea el objeto de origen de
datos y no lo rellena. La carga de datos es un paso independiente.
2. Proporcione esa variable como argumento a la función RxSqlSer verData para definir un segundo
objeto de origen de datos, sqlScoreDS .
Como ya se ha definido la cadena de conexión y otros parámetros como variables en el área de trabajo de R, se
puede reutilizar con nuevos orígenes de datos que representen diferentes tablas, vistas o consultas.
NOTE
La función utiliza distintos argumentos para definir un origen de datos en función de una tabla completa que para definir
un origen de datos en función de una consulta. Esto se debe a que el motor de base de datos de SQL Server debe
preparar las consultas de manera diferente. Más adelante en este tutorial aprenderá a crear un objeto de origen de datos
en función de una consulta SQL.
NOTE
En esta sección, debe tener permisos para Ejecutar DDL en la base de datos.
Observe la llamada a r xGetOption , que es el método GET asociado a rxOptions en RevoScaleR . Use
esta utilidad para establecer y mostrar opciones relacionadas con contextos de proceso locales y remotos,
como el directorio compartido predeterminado o el número de procesadores (núcleos) que se utilizarán
en los cálculos.
Esta llamada en particular obtiene los ejemplos de la biblioteca correcta, independientemente de dónde
se ejecute el código. Por ejemplo, pruebe a ejecutar la función en SQL Server y en su equipo de desarrollo
para ver cómo difieren las rutas de acceso.
2. Defina una variable para almacenar los nuevos datos y use la función RxTextData para especificar el
origen de datos de texto.
El argumento colClasses es importante. Se usa para indicar el tipo de datos para asignar a cada columna
de datos cargada desde el archivo de texto. En este ejemplo, todas las columnas se tratan como texto,
excepto las columnas con nombre, que se tratan como enteros.
3. Llegados a este punto, tal vez quiera hacer una pausa y ver la base de datos en SQL Server Management
Studio. Actualice la lista de tablas de la base de datos.
Puede ver que, aunque los objetos de datos de R se han creado en el área de trabajo local, las tablas no se
han creado en la base de datos de SQL Server. Además, tampoco se ha cargado ningún dato del archivo
de texto en la variable de R.
4. Inserte los datos llamando a la función rxDataStep.
Suponiendo que no existen problemas con su cadena de conexión, después de una breve pausa, debería
ver resultados como estos:
Total de filas escritas: 10 000, tiempo total: 0,466 Filas leídas: 10 000, total de filas procesadas: 10 000,
tiempo total de fragmentos: 0,577 segundos
5. Actualice la lista de tablas. Para comprobar que cada variable tiene los tipos de datos correctos y que se
ha importado correctamente, también puede hacer clic con el botón derecho en la tabla en SQL Server
Management Studio y elegir Seleccionar las 1000 primeras filas .
Carga de datos en la tabla de puntuación
1. Repita los pasos necesarios para cargar en la base de datos el conjunto de datos usado para puntuación.
Primero proporcione la ruta de acceso al archivo de origen.
2. Use la función RxTextData para obtener los datos y guardarlos en la variable inTextData.
3. Llame a la función r xDataStep para sobrescribir la tabla actual con el nuevo esquema y los datos.
Pasos siguientes
Consultar y modificar los datos de SQL Server
Consulta y modificación de datos de SQL Server
(tutorial de SQL Server y RevoScaleR)
14/07/2021 • 3 minutes to read
rxGetVarInfo(data = sqlFraudDS)
Resultados
stateAbb <- c("AK", "AL", "AR", "AZ", "CA", "CO", "CT", "DC",
"DE", "FL", "GA", "HI","IA", "ID", "IL", "IN", "KS", "KY", "LA",
"MA", "MD", "ME", "MI", "MN", "MO", "MS", "MT", "NB", "NC", "ND",
"NH", "NJ", "NM", "NV", "NY", "OH", "OK", "OR", "PA", "RI","SC",
"SD", "TN", "TX", "UT", "VA", "VT", "WA", "WI", "WV", "WY")
3. Para crear el origen de datos de SQL Server que usa los datos actualizados, llame a la función
RxSqlSer verData como antes, pero agregue el argumento colInfo.
Para el parámetro table , pase la variable sqlFraudTable, que contiene el origen de datos que ha creado
anteriormente.
Para el parámetro colInfo , pase la variable ccColInfo , que contiene los tipos de datos de columna y los
niveles de factor.
4. Ahora puede usar la función r xGetVarInfo para ver las variables en el nuevo origen de datos.
rxGetVarInfo(data = sqlFraudDS)
Resultados
Var 1: custID, Type: integer
Var 2: gender 2 factor levels: Male Female
Var 3: state 51 factor levels: AK AL AR AZ CA ... VT WA WI WV WY
Var 4: cardholder 2 factor levels: Principal Secondary
Var 5: balance, Type: integer
Var 6: numTrans, Type: integer
Var 7: numIntlTrans, Type: integer
Var 8: creditLine, Type: integer
Var 9: fraudRisk, Type: integer
Ahora las tres variables que ha especificado (gender, state y cardholder) se tratan como factores.
Pasos siguientes
Definir y usar contextos de cálculo
Definición y uso de contextos de cálculo (tutorial de
SQL Server y RevoScaleR)
14/07/2021 • 4 minutes to read
2. Especifique cómo quiere que se controlen los resultados. El siguiente script dirige la sesión local de R
para esperar los resultados del trabajo de R en el servidor antes de procesar la siguiente operación.
También suprime el resultado de los cálculos remotos para que no aparezcan en la sesión local.
sqlWait <- TRUE
sqlConsoleOutput <- FALSE
Si quiere crear de manera manual un directorio específico para compartir, puede agregar una línea como
la siguiente:
4. Pase argumentos al constructor RxInSqlSer ver para crear el objeto de contexto de cálculo.
La sintaxis de RxInSqlSer ver es casi idéntica a la de la función RxSqlSer verData que usó
anteriormente para definir el origen de datos. En cambio, hay algunas diferencias importantes.
El objeto del origen de datos, definido mediante la función RxSqlServerData, especifica dónde se
almacenan los datos.
En cambio, el contexto de cálculo, definido mediante la función RxInSqlServer, indica dónde se
realizarán las agregaciones y otros cálculos.
Definir un contexto de cálculo no afecta a los demás cálculos genéricos de R que puede realizar en la
estación de trabajo, y no cambia el origen de los datos. Por ejemplo, puede definir un archivo de texto
local como el origen de datos pero cambiar el contexto de cálculo a SQL Server y realizar toda la lectura y
los resúmenes en los datos del equipo de SQL Server.
5. Active el contexto de cálculo remoto.
rxSetComputeContext(sqlCompute)
rxGetComputeContext()
7. Vuelva a restablecer el contexto de cálculo en el equipo local especificando la palabra clave "local" (en el
siguiente tutorial se muestra cómo usar el contexto de cálculo remoto).
rxSetComputeContext("local")
TIP
Para obtener una lista de otras palabras clave admitidas por esta función, escriba help("rxSetComputeContext") desde
una línea de comandos de R.
En este ejemplo, la propiedad traceLevel se establece en 7, que significa "mostrar toda la información de
seguimiento".
2. Use la función rxSetComputeContext para especificar el contexto de cálculo habilitado para el
seguimiento por nombre.
rxSetComputeContext(sqlComputeTrace)
Pasos siguientes
Obtenga información sobre cómo activar contextos de cálculo para ejecutar el código de R en el servidor o de
forma local.
Cálculo de estadísticas de resumen en contextos de cálculo locales y remotos
Estadísticas de resumen de proceso en R (tutorial de
SQL Server y RevoScaleR)
14/07/2021 • 3 minutes to read
rxSetComputeContext(sqlCompute)
2. Llame a la función rxSummary y pase los argumentos necesarios, como la fórmula y el origen de datos, y
asigne los resultados a la variable sumOut .
NOTE
Si recibe un error, espere unos minutos a que finalice la ejecución antes de volver a intentar el comando.
Resultados
gender Counts
Male 6154
Female 3846
rxSetComputeContext ("local")
2. Al extraer datos de SQL Server, a menudo puede obtener un mejor rendimiento si aumenta el número de
filas extraídas para cada lectura, suponiendo que haya espacio para el tamaño de bloque ampliado en la
memoria. Ejecute este comando para aumentar el valor del parámetro rowsPerRead en el origen de
datos. Antes, el valor de rowsPerRead estaba establecido en 5000.
Los resultados actuales deben ser los mismos que cuando ejecuta r xSummar y en el contexto del equipo
de SQL Server . En cambio, la operación puede ser más rápida o más lenta. Depende en gran medida de
la conexión a la base de datos, ya que los datos se transfieren al equipo local para el análisis.
4. Vuelva al contexto de proceso remoto para los siguientes tutoriales.
rxSetComputeContext(sqlCompute)
Pasos siguientes
Visualizar datos de SQL Server con R
Visualizar datos de SQL Server mediante R (tutorial
de SQL Server y RevoScaleR)
14/07/2021 • 4 minutes to read
2. Use la variable ccColInfo que ha creado en el tutorial anterior para definir las columnas del origen de
datos.
Agregue nuevas columnas calculadas (numTrans, numIntlTrans y creditLine) a la colección de columnas
que reemplazan la definición original. El siguiente script agrega factores basados en los valores mínimos
y máximos, obtenidos de sumOut, que almacena la salida en memoria de r xSummar y .
ccColInfo <- list(
gender = list(type = "factor",
levels = c("1", "2"),
newLevels = c("Male", "Female")),
cardholder = list(type = "factor",
levels = c("1", "2"),
newLevels = c("Principal", "Secondary")),
state = list(type = "factor",
levels = as.character(1:51),
newLevels = stateAbb),
balance = list(type = "numeric"),
numTrans = list(type = "factor",
levels = as.character(sumDF[var == "numTrans", "Min"]:sumDF[var == "numTrans", "Max"])),
numIntlTrans = list(type = "factor",
levels = as.character(sumDF[var == "numIntlTrans", "Min"]:sumDF[var =="numIntlTrans",
"Max"])),
creditLine = list(type = "numeric")
)
3. Después de actualizar la colección de columnas, aplique la siguiente instrucción para crear una versión
actualizada del origen de datos SQL Server que ha definido anteriormente.
El origen de datos sqlFraudDS ahora incluye las nuevas columnas que ha agregado mediante ccColInfo.
En este momento, las modificaciones solo afectan al objeto de origen de datos en R; aún no se ha escrito ningún
dato nuevo en la tabla de la base de datos. En cambio, puede usar los datos que se han capturado en la variable
sumOut para crear visualizaciones y resúmenes.
TIP
Si olvida qué contexto de proceso está usando, ejecute r xGetComputeContext() . El valor devuelto "RxLocalSeq
Compute Context" indica que se está ejecutando en el contexto de proceso local.
De manera interna, r xHistogram llama a la función rxCube , que se incluye en el paquete RevoScaleR .
r xCube genera una única lista (o trama de datos) que contiene una columna para cada variable que se
ha especificado en la fórmula, además de una columna de recuentos.
2. Ahora, establezca el contexto de proceso en el equipo remoto de SQL Server y ejecute r xHistogram de
nuevo.
rxSetComputeContext(sqlCompute)
rxHistogram(~creditLine|gender, data = sqlFraudDS, histType = "Percent")
3. Los resultados son exactamente los mismos, ya que está usando el mismo origen de datos, pero, en el
segundo paso, los cálculos se realizan en el servidor remoto. Después, los resultados se devuelven a la
estación de trabajo local para el trazado.
Para especificar los grupos que se han usado para calcular medias de grupo, use la notación F() . En
este ejemplo, F(numTrans):F(numIntlTrans) indica que los enteros de las variables numTrans y
numIntlTrans deben tratarse como variables categóricas, con un nivel para cada valor entero.
El valor devuelto predeterminado de r xCube es un objeto rxCube que representa una tabulación
cruzada.
2. Llame a la función rxResultsDF para convertir los resultados en una trama de datos que pueda usarse
fácilmente en una de las funciones de trazado estándar de R.
La función r xCube incluye un argumento opcional, returnDataFrame = TRUE , que puede usar para
convertir los resultados en una trama de datos directamente. Por ejemplo:
print(rxCube(fraudRisk~F(numTrans):F(numIntlTrans), data = sqlFraudDS, returnDataFrame = TRUE))
En cambio, el resultado de r xResultsDF es más limpio y conserva los nombres de las columnas de
origen. Puede ejecutar head(cube1) seguido de head(cubePlot) para comparar el resultado.
3. Cree un mapa térmico mediante la función levelplot del paquete lattice que se incluye en todas las
distribuciones de R.
levelplot(fraudRisk~numTrans*numIntlTrans, data = cubePlot)
Resultados
En este análisis rápido puede ver que aumenta el riesgo de fraude tanto en el número de transacciones como en
el número de transacciones internacionales.
Para más información sobre la función r xCube y las referencias cruzadas, vea Resúmenes de datos mediante
RevoScaleR.
Pasos siguientes
Creación de modelos de R con datos de SQL Server
Creación de modelos de R (tutorial de SQL Server y
RevoScaleR)
14/07/2021 • 3 minutes to read
2. Para ver un resumen de los resultados, llame a la función summar y de R estándar en el objeto de
modelo.
summary(linModObj)
Quizás piense que es peculiar que una función de R sin formato como summar y funcione aquí, ya que en el
paso anterior estableció el contexto de cálculo en el servidor. Pero incluso cuando la función r xLinMod usa el
contexto de cálculo remoto para crear el modelo, también devuelve un objeto que contiene el modelo en su
estación de trabajo local y lo almacena en el directorio compartido.
Por tanto, puede ejecutar comandos de R estándar en el modelo como si lo hubiera creado mediante el contexto
"local".
Resultados
Linear Regression Results for: balance ~ gender + creditLineData: sqlFraudDS (RxSqlServerData Data Source)
Dependent variable(s): balance
Total independent variables: 4 (Including number dropped: 1)
Number of valid observations: 10000
Number of missing observations: 0
Coefficients: (1 not defined because of singularities)
Como es un modelo grande, que contiene 60 variables independientes, incluidas tres variables ficticias
que se descartan, es posible que tenga que esperar unos minutos a que el contexto de cálculo devuelva el
objeto.
El motivo por el que el modelo es tan grande es que, en R (y en el paquete RevoScaleR ), todos los
niveles de una variable de factor de categorías se tratan de forma automática como una variable ficticia
independiente.
2. Llame a la función summar y de R para ver un resumen del modelo devuelto.
summary(logitObj)
Resultados parciales
Logistic Regression Results for: fraudRisk ~ state + gender + cardholder + balance + numTrans + numIntlTrans
+ creditLine
Data: sqlFraudDS (RxSqlServerData Data Source)
Dependent variable(s): fraudRisk
Total independent variables: 60 (Including number dropped: 3)
Number of valid observations: 10000 -2
Coefficients:
Estimate Std. Error z value Pr(>|z|) (Intercept)
-8.627e+00 1.319e+00 -6.538 6.22e-11
state=AK Dropped Dropped Dropped Dropped
state=AL -1.043e+00 1.383e+00 -0.754 0.4511
Signif. codes: 0 '\*\*\*' 0.001 '\*\*' 0.01 '\*' 0.05 '.' 0.1 ' ' 1
Condition number of final variance-covariance matrix: 3997.308
Number of iterations: 15
Pasos siguientes
Puntuación de nuevos datos
Puntuación de datos nuevos (tutorial de SQL Server
y RevoScaleR)
14/07/2021 • 4 minutes to read
NOTE
Se necesitan privilegios de administrador de DDL para algunos de estos pasos.
2. Para asegurarse de que no pierde los resultados, cree un nuevo objeto de origen de datos. Después, use
el nuevo objeto de origen de datos para rellenar una nueva tabla en la base de datos RevoDeepDive.
En este punto, la tabla no se ha creado. Esta instrucción solo define un contenedor para los datos.
3. Compruebe el contexto de proceso actual mediante r xGetComputeContext() y establezca el contexto
de proceso en el servidor si es necesario.
rxSetComputeContext(sqlCompute)
4. Como medida de precaución, compruebe la existencia de la tabla de salida. Si ya existe una con el mismo
nombre, obtendrá un error al intentar escribir en la nueva tabla.
Para hacer esto, llame a las funciones rxSqlServerTableExists y rxSqlServerDropTablepasando el nombre
de la tabla como entrada.
if (rxSqlServerTableExists("ccScoreOutput")) rxSqlServerDropTable("ccScoreOutput")
r xSqlSer verTableExists consulta al controlador ODBC y devuelve TRUE si la tabla existe o FALSE en
caso contrario.
r xSqlSer verDropTable ejecuta el DDL y devuelve TRUE si la tabla se ha quitado correctamente o
FALSE en caso contrario.
5. Ejecute rxPredict para crear las puntuaciones y guardarlas en la nueva tabla definida en el origen de
datos sqlScoreDS.
rxPredict(modelObject = logitObj,
data = sqlScoreDS,
outData = sqlServerOutDS,
predVarNames = "ccFraudLogitScore",
type = "link",
writeModelVars = TRUE,
overwrite = TRUE)
La función r xPredict es otra función que admite la ejecución en contextos de cálculo remotos. Puede
usar la función r xPredict para crear puntuaciones de modelos basados en rxLinMod, rxLogito rxGlm.
El parámetro writeModelVars está establecido en TRUE aquí. Esto significa que las variables que se
han usado para la estimación se incluirán en la nueva tabla.
El parámetro predVarNames especifica la variable en la que se almacenarán los resultados. Aquí
está pasando una nueva variable, ccFraudLogitScore .
El parámetro type para r xPredict define cómo quiere que se calculen las predicciones. Especifique
la palabra clave response para generar puntuaciones basadas en la escala de la variable de
respuesta. O use la palabra clave link para generar puntuaciones basadas en la función de vínculo
subyacente, en cuyo caso las predicciones se crean mediante una escala logística.
6. Después de un tiempo, puede actualizar la lista de tablas en Management Studio para ver la nueva tabla y
sus datos.
7. Para agregar variables adicionales para las predicciones de salida, use el argumento extraVarsToWrite. Por
ejemplo, en el siguiente código, se agrega la variable custID de la tabla de datos de puntuación a la tabla
de salida de predicciones.
rxPredict(modelObject = logitObj,
data = sqlScoreDS,
outData = sqlServerOutDS,
predVarNames = "ccFraudLogitScore",
type = "link",
writeModelVars = TRUE,
extraVarsToWrite = "custID",
overwrite = TRUE)
Con este ejemplo puede ver lo fácil que es usar los objetos de origen de datos RxSqlSer verData para
definir conjuntos de datos arbitrarios basados en procedimientos almacenados, funciones o consultas de
SQL y, después, usarlos en su código de R. La variable no almacena los valores actuales, solo la definición
de origen de datos; la consulta se ejecuta para generar los valores solo cuando la usa en una función
como r xImpor t .
2. Use la función rxImport para colocar los valores en una trama de datos que se pueda compartir entre
varios contextos de proceso.
Resultados
> minMaxVals
3. Ahora que los valores máximo y mínimo están disponibles, úselos para crear otro origen de datos para
las puntuaciones generadas.
4. Use el objeto de origen de datos sqlOutScoreDS para obtener las puntuaciones, y calcular y mostrar un
histograma. Agregue el código para establecer el contexto de cálculo si es necesario.
# rxSetComputeContext(sqlCompute)
rxHistogram(~ccFraudLogitScore, data = sqlOutScoreDS)
Resultados
Pasos siguientes
Transformar datos mediante R
Transformación de datos mediante R (tutorial de
SQL Server y RevoScaleR)
14/07/2021 • 3 minutes to read
TIP
Otra manera de obtener predicciones en esta escala sería establecer el parámetro type en response en la llamada original
a r xPredict .
1. Empiece creando un origen de datos para almacenar los datos destinados a la tabla ccScoreOutput .
2. Agregue otro origen de datos para almacenar los datos para la tabla ccScoreOutput2 .
En la tabla nueva, almacene todas las variables de la tabla ccScoreOutput anterior, además de la variable
recién creada.
3. Establezca el contexto de proceso en la instancia de SQL Server .
rxSetComputeContext(sqlCompute)
4. Use la función r xSqlSer verTableExists para comprobar si la tabla de salida ccScoreOutput2 ya existe y,
de ser así, use la función r xSqlSer verDropTable para eliminar la tabla.
if (rxSqlServerTableExists("ccScoreOutput2")) rxSqlServerDropTable("ccScoreOutput2")
rxDataStep(inData = sqlOutScoreDS,
outFile = sqlOutScoreDS2,
transforms = list(ccFraudProb = inv.logit(ccFraudLogitScore)),
transformPackages = "boot",
overwrite = TRUE)
Al definir las transformaciones que se aplican a cada columna, también puede especificar los paquetes de
R adicionales que se necesitan para realizar las transformaciones. Para obtener más información sobre
los tipos de transformaciones que puede realizar, vea Cómo transformar y crear un subconjunto de datos
mediante RevoScaleR.
6. Llame a r xGetVarInfo para ver un resumen de las variables del nuevo conjunto de datos.
rxGetVarInfo(sqlOutScoreDS2)
Resultados
Las puntuaciones originales de la función logit se conservan, pero se ha agregado una nueva columna,
ccFraudProb, en la que las puntuaciones de la función logit se representan como valores comprendidos entre 0
y 1.
Observe que las variables de factor se han escrito en la tabla ccScoreOutput2 como datos de caracteres. Para
usarlos como factores en análisis posteriores, use el parámetro colInfo para especificar los niveles.
Pasos siguientes
Cargar datos en memoria mediante rxImport
Carga de datos en memoria mediante rxImport
(tutorial de SQL Server y RevoScaleR)
14/07/2021 • 2 minutes to read
rxSetComputeContext("local")
2. Cree un nuevo objeto de origen de datos de SQL Server proporcionando una instrucción de SQL válida
en el parámetro rxImport . En este ejemplo se obtiene un subconjunto de las observaciones con las
puntuaciones de riesgo más altas. De este modo, solo los datos que necesita realmente se colocan en la
memoria local.
3. Llame a la función rxImport para leer los datos en una trama de datos de la sesión de R local.
Resultados
Pasos siguientes
Crear una nueva tabla de SQL Server mediante rxDataStep
Creación de una tabla de SQL Server con
rxDataStep (tutorial de SQL Server y RevoScaleR)
14/07/2021 • 3 minutes to read
NOTE
En este tutorial se usa un conjunto de datos diferente. El conjunto de datos Airline Delays es un conjunto de datos público
que se usa profusamente en los experimentos de Machine Learning. Los archivos de datos que se usan en este ejemplo
están disponibles en el mismo directorio que otros ejemplos de producto.
rxSetComputeContext("local")
2. Defina un nuevo objeto de origen de datos mediante la función RxXdfData . Para definir un origen de
datos XDF, especifique la ruta de acceso al archivo de datos.
La ruta de acceso al archivo podría especificarse con una variable de texto, pero en este caso existe un
método abreviado útil, que consiste en usar la función r xGetOption y obtener el archivo
(AirlineDemoSmall.xdf) del directorio de datos de ejemplo.
3. Llame a rxGetVarInfo en los datos en memoria para ver un resumen del conjunto de datos.
rxGetVarInfo(xdfAirDemo)
Resultados
NOTE
¿Se ha dado cuenta de que no necesita llamar a ninguna función para cargar los datos en el archivo XDF y puede llamar a
r xGetVarInfo en los datos inmediatamente? Eso es porque XDF es el método de almacenamiento provisional
predeterminado en RevoScaleR. Además de los archivos XDF, ahora la función r xGetVarInfo admite varios tipos de
orígenes.
2. Como medida de precaución, incluya un paso que compruebe si ya existe una tabla con el mismo
nombre y elimínela en caso de que exista. Una tabla existente con el mismo nombre evitará que se cree
una nueva.
3. Cargue los datos en la tabla mediante r xDataStep . Esta función mueve los datos entre dos orígenes de
datos ya definidos y, opcionalmente, puede transformar los datos en tránsito.
Se trata de una tabla bastante grande, por lo que debe esperar hasta que vea un mensaje de estado final
como este: Filas leídas: 200000, Total de filas procesadas: 600000.
2. Llame a r xSummar y otra vez para revisar un resumen de los datos de la consulta.
Pasos siguientes
Realizar análisis de fragmentación mediante rxDataStep
Fragmentación de análisis con rxDataStep (tutorial
de SQL Server y RevoScaleR)
14/07/2021 • 2 minutes to read
TIP
En este tutorial, calculará una tabla de contingencia usando la función table de R. Este ejemplo se incluye únicamente con
fines instructivos.
Si necesita tabular conjuntos de datos reales, le recomendamos que use las funciones r xCrossTabs o r xCube de
RevoScaleR, que se han optimizado para este tipo de operación.
rxSetComputeContext(sqlCompute)
3. Defina un origen de datos de SQL Server para almacenar los datos que está procesando. Comience por
asignar una consulta de SQL a una variable. Luego, use esa variable en el argumento sqlQuery de un
nuevo origen de datos de SQL Server.
dayQuery <- "SELECT DayOfWeek FROM AirDemoSmallTest"
inDataSource <- RxSqlServerData(sqlQuery = dayQuery,
connectionString = sqlConnString,
rowsPerRead = 50000,
colInfo = list(DayOfWeek = list(type = "factor",
levels = as.character(1:7))))
4. Opcionalmente, puede ejecutar r xGetVarInfo en este origen de datos. Llegado este punto, contiene una
sola columna: Var 1: DayOfWeek, Tipo: factor, no hay niveles de factor disponibles
5. Antes de aplicar esta variable de factor en los datos de origen, cree una tabla independiente para
contener los resultados intermedios. De nuevo, simplemente use la función RxSqlSer verData para
definir los datos, procurando eliminar cualquier tabla existente con el mismo nombre.
6. Llame a la función personalizada ProcessChunk para transformar los datos a medida que se leen,
usándolos como el argumento transformFunc en la función r xDataStep .
7. Para ver los resultados intermedios de ProcessChunk , asigne los resultados de r xImpor t a una variable
y, después, imprima los resultados en la consola.
Resultados parciales
F IL A # 1 2 3 4 5 6 7
8. Para calcular los resultados finales en todos los fragmentos, puede sumar las columnas y mostrar los
resultados en la consola.
Resultados
1 2 3 4 5 6 7
9. Para quitar la tabla de resultados intermedios, realice una llamada a r xSqlSer verDropTable .
rxSqlServerDropTable( table = "iroResults", connectionString = sqlConnString)
Pasos siguientes
Tutoriales de R para SQL Server
Movimiento de datos entre SQL Server y el archivo
XDF (tutorial de SQL Server y RevoScaleR)
14/07/2021 • 3 minutes to read
Resultados
CA O B IEN WA
5 38 48
2. Defina los datos que quiere traer de SQL Server mediante una consulta de Transact-SQL. Más adelante
use esta variable como el argumento inData para r xImpor t .
Asegúrese de que no hay ningún carácter oculto como saltos de línea o tabulaciones en la consulta.
3. A continuación, defina las columnas que se van a usar al trabajar con los datos en R. Por ejemplo, en el
conjunto de datos más pequeño, solo necesita tres niveles de factor, porque la consulta solo devuelve
datos para tres estados. Aplique la variable statesToKeep para identificar los niveles correctos que incluir.
importColInfo <- list(
gender = list( type = "factor", levels = c("1", "2"), newLevels = c("Male", "Female")),
cardholder = list( type = "factor", levels = c("1", "2"), newLevels = c("Principal",
"Secondary")),
state = list( type = "factor", levels = as.character(statesToKeep), newLevels =
names(statesToKeep))
)
4. Establezca el contexto de cálculo en local , ya que quiere todos los datos disponibles en el equipo local.
rxSetComputeContext("local")
La función rxImport puede importar datos desde cualquier origen de datos que se admita a un archivo
XDF local. El uso de una copia local de los datos puede ser conveniente cuando quiera realizar muchos
análisis distintos en los datos, pero quiere evitar ejecutar la misma consulta una y otra vez.
5. Cree el objeto de origen de datos pasando las variables previamente definidas como argumentos a
RxSqlSer verData .
6. Llame a r xImpor t para escribir los datos en un archivo denominado ccFraudSub.xdf , en el directorio de
trabajo actual.
El objeto localDs devuelto desde la función r xImpor t es un objeto de origen de datos RxXdfData
ligero que representa el archivo de datos ccFraud.xdf almacenado localmente en el disco.
7. Llame a rxGetVarInfo en el archivo XDF para comprobar que el esquema de datos es el mismo.
rxGetVarInfo(data = localDS)
Resultados
rxGetVarInfo(data = localDS)
Var 1: gender, Type: factor, no factor levels available
Var 2: cardholder, Type: factor, no factor levels available
Var 3: balance, Type: integer, Low/High: (0, 22463)
Var 4: state, Type: factor, no factor levels available
8. Ahora puede llamar a varias funciones de R para analizar el objeto localDs , como haría con los datos de
origen en SQL Server. Por ejemplo, puede resumir por sexo:
Pasos siguientes
En esta tutorial se concluye la serie de tutoriales de varias partes en RevoScaleR y SQL Server. Presenta
numerosos conceptos relacionados con los datos y de cálculo, lo que le proporciona una base para avanzar con
sus propios datos y requisitos de proyecto.
Para profundizar en los conocimientos de RevoScaleR , puede volver a la lista de tutoriales de R para repasar
todos y cada uno de los ejercicios que podría no haber realizado. Como alternativa, revise los artículos de
procedimientos de la tabla de contenido para obtener información sobre las tareas generales.
Tutoriales de R para SQL Server
Ejecución de funciones de R personalizadas en
SQL Server mediante rxExec (tutorial de
SQL Server y RevoScaleR)
14/07/2021 • 5 minutes to read
Prerrequisitos
SQL Server Machine Learning Services (con R) o SQL Server 2016 R Services (en base de datos)
Permisos de base de datos y un inicio de sesión de usuario de base de datos de SQL Server
Una estación de trabajo de desarrollo con las bibliotecas de RevoScaleR
La distribución de R en la estación de trabajo del cliente proporciona una herramienta integrada de Rgui que
puede usar para ejecutar el script de R en este tutorial. También puede usar un IDE como RStudio o
Herramientas de R para Visual Studio.
2. Cree un contexto de proceso remoto en la instancia de SQL Server a la que se hace referencia en la
cadena de conexión.
3. Active el contexto de proceso y, después, devuelva la definición del objeto como un paso de confirmación.
Debería ver las propiedades del objeto del contexto de proceso.
rxSetComputeContext(sqlCompute)
rxGetComputeContext()
if (is.null(point))
{ point <- roll }
if (count == 1 && (roll == 7 || roll == 11))
{ result <- "Win" }
else if (count == 1 && (roll == 2 || roll == 3 || roll == 12))
{ result <- "Loss" }
else if (count > 1 && roll == 7 )
{ result <- "Loss" }
else if (count > 1 && point == roll)
{ result <- "Win" }
else { count <- count + 1 }
}
result
}
rollDice()
¿Ha ganado o perdido?
Ahora que tiene un script operacional, veamos cómo puede ejecutar la función r xExec varias veces para crear
una simulación que ayude a determinar la probabilidad de ganar.
Use el argumento timesToRun para indicar cuántas veces se debe ejecutar la función. En este caso,
lanza los dados 20 veces.
Los argumentos RNGseed y RNGkind pueden usarse para controlar la generación de números
aleatorios. Si RNGseed está establecido en auto , se inicializa una secuencia de números aleatorios
en paralelo en cada trabajo.
2. La función r xExec crea una lista con un elemento para cada ejecución, pero no verá que suceda mucho
hasta que la lista esté completa. Cuando estén completas todas las iteraciones, la línea que empieza con
length devolverá un valor.
Después puede ir al paso siguiente para obtener un resumen del registro de perdidas y ganadas.
3. Convierta la lista devuelta en un vector con la función unlist de R, y resuma los resultados mediante la
función table .
table(unlist(sqlServerExec))
Conclusión
Aunque este ejercicio es simplista, muestra un mecanismo importante para integrar funciones de R arbitrarias
en el script de R que se ejecuta en SQL Server. Como resumen de los puntos clave que hacen posible esta
técnica:
SQL Server se debe configurar para el aprendizaje automático y la integración de R: SQL Server Machine
Learning Services con la función R o SQL Server 2016 R Services (en base de datos).
Debe tener instaladas en SQL Server las bibliotecas de código abierto o de terceros que se usan en la
función, incluidas las dependencias. Para obtener más información, vea Instalación de nuevos paquetes
de R.
Si mueve el script de un entorno de desarrollo a un entorno de producción protegido se pueden
presentar restricciones de firewall y de red. Realice una prueba detenidamente para asegurarse de que el
script puede funcionar según lo previsto.
Pasos siguientes
Para obtener un ejemplo más complejo del uso de r xExec , consulte este artículo: Paralelismo de grano grueso
con foreach y rxExec
Datos de demostración de la llegada de vuelos de
líneas aéreas para tutoriales de Python y R de SQL
Server
14/07/2021 • 2 minutes to read
Pasos siguientes
En la lección siguiente, creará un modelo de regresión lineal basado en estos datos.
Creación de un modelo de Python mediante revoscalepy
Datos de demostración de Iris para tutoriales de
Python y R con aprendizaje automático de
SQL Server
14/07/2021 • 4 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
En este ejercicio va a crear una base de datos para almacenar los datos del conjunto de datos flor Iris y los
modelos basados en los mismos datos. Los datos de Iris se incluyen en las distribuciones de R y Python y se
usan en los tutoriales de aprendizaje automático para SQL Machine Learning.
Para completar este ejercicio, debe tener SQL Server Management Studio u otra herramienta que pueda ejecutar
consultas de T-SQL.
Entre los tutoriales y las guías de inicio rápido que usan este conjunto de datos se incluyen los siguientes:
Inicio rápido: Creación y puntuación de un modelo predictivo en Python
3. Agregue algunas tablas vacías: una para almacenar los datos y otra para almacenar los modelos
entrenados. La tabla iris_models se utiliza para almacenar los modelos serializados generados en otros
ejercicios.
En el código siguiente se crea la tabla para los datos de entrenamiento.
4. Ejecute el código siguiente para crear la tabla utilizada para almacenar el modelo entrenado. Para guardar
los modelos de Python (o R) en SQL Server, se deben serializar y almacenar en una columna de tipo
varbinar y(max) .
DROP TABLE IF EXISTS iris_models;
GO
Además del contenido del modelo, normalmente también se agregan columnas para otros metadatos
útiles, como el nombre del modelo, la fecha en que se entrenó, el algoritmo y los parámetros de origen,
los datos de origen, etc. Por ahora, no nos complicaremos y usaremos solo el nombre del modelo.
Relleno de la tabla
Puede obtener datos de iris integrados desde R o Python. Puede usar Python o R para cargar los datos en una
trama de datos y después insertarlos en una tabla de la base de datos. El traslado de los datos de entrenamiento
de una sesión externa a una tabla es un proceso que consta de varios pasos:
Diseñar un procedimiento almacenado que obtenga los datos deseados.
Ejecutar el procedimiento almacenado para obtener realmente los datos.
Crear una instrucción INSERT para especificar dónde deben guardarse los datos recuperados.
1. En sistemas con integración de Python, cree el siguiente procedimiento almacenado que utiliza el código
de Python para cargar los datos.
Al ejecutar este código, debería obtener el mensaje "Los comandos se han completado correctamente".
Todo esto significa que el procedimiento almacenado se ha creado según sus especificaciones.
2. En los sistemas que tienen una integración con R, también puede crear un procedimiento que use R.
CREATE PROCEDURE get_iris_dataset
AS
BEGIN
EXEC sp_execute_external_script @language = N'R',
@script = N'
library(RevoScaleR)
data(iris)
iris$SpeciesID <- c(unclass(iris$Species))
iris_data <- iris
',
@input_data_1 = N'',
@output_data_1_name = N'iris_data'
WITH RESULT SETS (("Sepal.Length" float not null, "Sepal.Width" float not null, "Petal.Length" float
not null, "Petal.Width" float not null, "Species" varchar(100) not null, "SpeciesId" int not null));
END;
GO
3. Para que la tabla se rellene, ejecute el procedimiento almacenado y especifique la tabla en la que se
deben escribir los datos. Al ejecutarse, el procedimiento almacenado ejecuta el código de Python o R, que
carga el conjunto de datos de iris integrado y después inserta los datos en la tabla iris_data .
Si no está familiarizado con T-SQL, tenga en cuenta que la instrucción INSERT solo agrega nuevos datos,
pero no comprueba si hay datos existentes ni elimina y vuelve a recompilar la tabla. Para que no se hagan
varias copias de los mismos datos en una tabla, puede ejecutar esta instrucción primero:
TRUNCATE TABLE iris_data . Con la instrucción TRUNCATE TABLE de T-SQL se eliminan los datos existentes,
pero se mantiene intacta la estructura de la tabla.
Pasos siguientes
En la guía de inicio rápido siguiente, va a crear un modelo de aprendizaje automático y a guardarlo en una tabla.
Después, usará el modelo para generar los resultados previstos.
Inicio rápido: Creación y puntuación de un modelo predictivo en Python
Datos de demostración de los taxis de Nueva York
para tutoriales de Python y R en SQL Server
14/07/2021 • 5 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
En este artículo se explica cómo configurar una base de datos de ejemplo formada por datos públicos
procedentes de la Comisión de taxis y limusinas de la ciudad de Nueva York. Estos datos se usan en varios
tutoriales de R y Python para el análisis de bases de datos en SQL Server. Para que el código de ejemplo se
ejecute más rápidamente, hemos creado una muestra representativa del 1 % de los datos. En el sistema, el
archivo de copia de seguridad de base de datos es ligeramente superior a 90 MB, lo que proporciona 1,7
millones de filas en la tabla de datos principal.
Para completar este ejercicio, debe tener SQL Server Management Studio u otra herramienta que pueda
restaurar un archivo de copia de seguridad de la base de datos y ejecutar consultas de T-SQL.
Entre los tutoriales y las guías de inicio rápido que usan este conjunto de datos se incluyen los siguientes:
Obtenga información sobre el análisis de bases de datos con R en SQL Server
Obtenga información sobre el análisis de bases de datos con Python en SQL Server
Descarga de archivos
La base de datos de ejemplo es un archivo BAK de SQL Server 2016 hospedado por Microsoft. Puede
restaurarlo en SQL Server 2016 y versiones posteriores. La descarga de archivos comienza inmediatamente al
hacer clic en el vínculo.
El tamaño del archivo es de aproximadamente 90 MB.
NOTE
Para restaurar la base de datos de ejemplo en clústeres de macrodatos de SQL Server, descargue NYCTaxi_Sample.bak y
siga las instrucciones de Restauración de una base de datos en la instancia maestra del clúster de macrodatos de
SQL Server.
NOTE
Para restaurar la base de datos de ejemplo en Machine Learning Services, en Azure SQL Managed Instance, siga las
instrucciones de Inicio rápido: Restauración de una base de datos a Azure SQL Managed Instance mediante el archivo. bak
de la base de datos de taxis de Nueva York: https://sqlmldoccontent.blob.core.windows.net/sqlml/NYCTaxi_Sample.bak.
1. Haga clic en NYCTaxi_Sample. bak para descargar el archivo de copia de seguridad de la base de datos.
2. Copie el archivo en la carpeta C:\Program files\Microsoft SQL Server\MSSQL-instance-
name\MSSQL\Backup.
3. En Management Studio, haga clic con el botón derecho en Bases de datos y seleccione Restaurar
archivos y grupos de archivos .
4. Escriba NYCTaxi_Sample como nombre de la base de datos.
5. Haga clic en Desde el dispositivo y después abra la página de selección de archivos para seleccionar el
archivo de copia de seguridad. Haga clic en Agregar para seleccionar NYCTaxi_Sample.bak.
6. Active la casilla Restaurar y haga clic en Aceptar para restaurar la base de datos.
Los procedimientos almacenados se crean mediante el script de R y Python que se encuentra en varios
tutoriales. En la tabla siguiente se resumen los procedimientos almacenados que se pueden agregar
opcionalmente a la base de datos de demostración de los taxis de Nueva York al ejecutar un script desde varias
lecciones.
Los resultados deberían ser similares a los que se muestran en la captura de pantalla siguiente.
Pasos siguientes
Ahora están disponibles los datos de ejemplo de los taxis de Nueva York para poder ponerlos en práctica para el
aprendizaje.
Obtenga información sobre el análisis de bases de datos con R en SQL Server
Obtenga información sobre el análisis de bases de datos con Python en SQL Server
Arquitectura de extensibilidad en SQL Server
Machine Learning Services
14/07/2021 • 9 minutes to read
Información previa
El marco de extensibilidad se ha introducido en SQL Server 2016 para admitir el entorno de ejecución de R con
R Services. SQL Server 2017 y versiones posteriores admiten Python con Machine Learning Services.
El propósito del marco de extensibilidad es proporcionar una interfaz entre SQL Server y los lenguajes de
ciencia de datos como R y Python. El objetivo es reducir la fricción al trasladar las soluciones de ciencia de datos
al entorno de producción y proteger los datos expuestos durante el proceso de desarrollo. Al ejecutar un
lenguaje de scripting de confianza en un marco seguro que administra SQL Server, los administradores de bases
de datos pueden mantener la seguridad y, al mismo tiempo, permitir el acceso a los científicos de datos a los
datos empresariales.
En el diagrama siguiente se describen visualmente las oportunidades y ventajas que ofrece la arquitectura
extensible.
Un script externo se puede ejecutar llamando a un procedimiento almacenado. En este caso, los resultados se
devuelven como resultados tabulares directamente a SQL Server. Esto facilita la generación o consumo de
aprendizaje automático desde cualquier aplicación que pueda enviar una consulta SQL y controlar los
resultados.
La ejecución de scripts externos está sujeta a la seguridad de datos de SQL Server. Un usuario que ejecuta
un script externo solo puede tener acceso a los datos que estén igualmente disponibles en una consulta
SQL. Si se produce un error en una consulta debido a permisos insuficientes, un script que ejecute el
mismo usuario también producirá un error por el mismo motivo. La seguridad de SQL Server se aplica
en el nivel de la tabla, la base de datos y la instancia. Los administradores de bases de datos pueden
administrar el acceso de los usuarios, los recursos utilizados por los scripts externos y las bibliotecas de
código externo agregadas al servidor.
Las oportunidades de escala y optimización tienen una base dual: beneficios a través de la plataforma de
base de datos (índices de almacén de columnas y gobernanza de recursos) y mejoras específicas de la
extensión, por ejemplo, al usar las bibliotecas de Microsoft de R y Python para los modelos de ciencia de
datos. Mientras que R es de subproceso único, las funciones de RevoScaleR son multiproceso y pueden
distribuir una carga de trabajo en varios núcleos.
La implementación utiliza las metodologías de SQL Server. Estas pueden ser procedimientos
almacenados que encapsulen un script externo, consultas SQL incrustadas o consultas T-SQL que llamen
a funciones como PREDICT para devolver los resultados de los modelos de previsión que se conserven
en el servidor.
Los desarrolladores con aptitudes consolidadas en herramientas y IDE específicos pueden escribir código
en esas herramientas y, después, portar el código a SQL Server.
Diagrama de la arquitectura
La arquitectura está diseñada de modo que los scripts externos se ejecuten en un proceso independiente de
SQL Server, pero con componentes que administran internamente la cadena de solicitudes de datos y
operaciones en SQL Server. En función de la versión de SQL Server, las extensiones de lenguaje compatibles
incluyen R, Python y lenguajes de terceros, como Java y .NET.
Arquitectura de los componentes en Windows:
Los componentes incluyen un servicio Launchpad que se usa para invocar los entornos de ejecución externos y
la lógica específica de la biblioteca a fin de cargar intérpretes y bibliotecas. El iniciador carga un entorno de
ejecución de lenguajes, además de cualquier módulo de propietario. Por ejemplo, si el código incluye funciones
de RevoScaleR, se cargará un intérprete de RevoScaleR. BxlSer ver y SQL Satellite administran la
comunicación y la transferencia de datos con SQL Server.
En Linux, SQL usa un servicio Launchpad a fin de comunicarse con un proceso de Launchpad independiente
para cada usuario.
Launchpad
SQL Server Launchpad es un servicio que administra y ejecuta scripts externos, de modo similar a la forma en la
que el servicio de consulta e indexación de texto completo inicia un host independiente para procesar consultas
de texto completo. El servicio Launchpad solo puede empezar iniciadores de confianza publicados o certificados
por Microsoft, lo que garantiza que cumplan los requisitos de rendimiento y administración de los recursos.
Pythonlauncher.dll para Python 3.5 en Extensión de Python SQL Server 2017 y versiones
Windows posteriores
Pythonlauncher.so para Python 3.5 en Extensión de Python SQL Server 2019 y versiones
Linux posteriores
El servicio SQL Server Launchpad se ejecuta en su propia cuenta de usuario. Si cambia la cuenta que ejecuta
Launchpad, asegúrese de hacerlo mediante el Administrador de configuración de SQL Server para garantizar
que los cambios se escriban en los archivos pertinentes.
En Windows, se crea un servicio SQL Server Launchpad independiente para cada instancia del motor de base de
datos a la que se ha agregado SQL Server Machine Learning Services. Hay un servicio Launchpad para cada
instancia del motor de base de datos, de modo que si tiene varias instancias que admitan scripts externos,
contará con un servicio Launchpad para cada una de ellas. Una instancia del motor de base de datos se enlaza al
servicio Launchpad creado para dicha instancia. Todas las invocaciones del script externo de un procedimiento
almacenado o de T-SQL resultan en una llamada de SQL Server al servicio Launchpad creado para la misma
instancia.
Para ejecutar tareas en un lenguaje específico admitido, Launchpad obtiene una cuenta de trabajo segura del
grupo e inicia un proceso satélite para administrar el entorno de ejecución externo. Cada proceso satélite hereda
la cuenta de usuario de Launchpad y usa esa cuenta de trabajo mientras dure la ejecución del script. Si el script
usa procesos paralelos, estos se crean en la misma cuenta de trabajo única.
En Linux, solo se admite una instancia del motor de base de datos, y hay un servicio Launchpad enlazado a la
instancia. Cuando se ejecuta un script, el servicio Launchpad inicia un proceso de Launchpad independiente con
la cuenta de usuario con pocos privilegios mssql_satellite . Cada proceso satélite hereda la cuenta de usuario
mssql_satellite de Launchpad y la usa durante la ejecución del script.
library(RODBC);
connStr <- paste("Driver=SQL Server;Server=", instance_name, ";Database=", database_name,
";Trusted_Connection=true;", sep="");
dbhandle <- odbcDriverConnect(connStr)
OutputDataSet <- sqlQuery(dbhandle, "select * from table_name");
Otros protocolos
Los procesos que puede que necesiten trabajar en "fragmentos" o transferir datos de nuevo a un cliente
remoto también pueden utilizar el formato de archivo XDF. La transferencia de datos real se realiza a
través de blobs codificados.
Consulte también
Extensión de R en SQL Server
Extensión de Python en SQL Server
Extensión del lenguaje Python en SQL Server
Machine Learning Services
14/07/2021 • 6 minutes to read
Componentes de Python
SQL Server incluye paquetes tanto de código abierto como de propietario. El runtime de Python que se instala
con el programa de instalación es Anaconda 4.2 con Python 3.5. El runtime de Python se instala
independientemente de las herramientas de SQL, y se ejecuta fuera de los procesos principales del motor, en el
marco de extensibilidad. Como parte de la instalación de Machine Learning Services con Python, debe aceptar
las condiciones de la licencia pública de GNU.
SQL Server no modifica los ejecutables de Python, pero se debe usar la versión de Python que instale el
programa de instalación, ya que es en esa versión donde se compilan y prueban los paquetes de propietario.
Para ver una lista de los paquetes admitidos por la distribución de Anaconda, vaya al sitio de Continuum
Analytics: Lista de paquetes de Anaconda.
La distribución de Anaconda asociada a una determinada instancia de motor de base de datos está en la carpeta
relativa a esa instancia. Por ejemplo, si instaló el motor de base de datos de SQL Server 2017 con Machine
Learning Services y Python en la instancia predeterminada, mire en
C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES .
Los paquetes de Python que Microsoft agrega para cargas de trabajo paralelas y distribuidas incluyen las
siguientes bibliotecas.
Microsoftml y revoscalepy están estrechamente ligados; así, los orígenes de datos usados en microsoftml se
definen como objetos de revoscalepy. Las limitaciones de contexto de proceso de revoscalepy se trasladan a
microsoftml; es decir, todas las funciones están disponibles para las operaciones locales, pero cambiar a un
contexto de proceso remoto requiere RxInSqlServer.
Arquitectura de la ejecución
En los siguientes diagramas se describe la interacción de los componentes de SQL Server con el runtime de
Python en cada uno de los escenarios admitidos: la ejecución de un script en la base de datos y la ejecución de
forma remota desde un terminal de Python, usando un contexto de proceso de SQL Server.
Scripts de Python ejecutados en base de datos
Cuando Python se ejecuta "dentro de" SQL Server, el script de Python se debe encapsular dentro de un
procedimiento almacenado especial, sp_execute_external_script.
Una vez que el script esté insertado en el procedimiento almacenado, cualquier aplicación que pueda realizar
una llamada a un procedimiento almacenado podrá iniciar la ejecución del código de Python. A partir de
entonces, SQL Server administra la ejecución del código de Python, como se resume en el siguiente diagrama.
1. Con el parámetro @language='Python' pasado al procedimiento almacenado se indica una solicitud de
runtime de Python. SQL Server envía esta solicitud al servicio Launchpad. En Linux, SQL usa un servicio
Launchpad a fin de comunicarse con un proceso de Launchpad independiente para cada usuario. Vea el
Diagrama de la arquitectura de extensibilidad para más información.
2. El servicio Launchpad inicia el selector adecuado, en este caso, PythonLauncher.
3. PythonLauncher inicia el proceso Python35 externo.
4. BxlServer coordina con el runtime de Python la administración de intercambios de datos y el
almacenamiento de los resultados del trabajo.
5. SQL Satellite administra las comunicaciones sobre las tareas y los procesos relacionados con SQL Server.
6. BxlServer usa SQL Satellite para comunicar el estado y los resultados a SQL Server.
7. SQL Server obtiene los resultados y cierra las tareas y los procesos relacionados.
Scripts de Python ejecutados desde un cliente remoto
Puede ejecutar scripts de Python desde un equipo remoto (como un equipo portátil) y hacer que se ejecuten en
el contexto del equipo de SQL Server si se cumplen estas condiciones:
Los scripts están diseñados correctamente.
El equipo remoto tiene instaladas las bibliotecas de extensibilidad que se usan en Machine Learning Services.
El paquete revoscalepy es necesario para usar contextos de proceso remotos.
En el siguiente diagrama se resume el flujo de trabajo general cuando se envían scripts desde un equipo
remoto.
1. En el caso de las funciones que se admiten en revoscalepy , el runtime de Python llama a una función de
enlace, que a su vez llama a BxlServer.
2. BxlServer se incluye en Machine Learning Services (en base de datos) y se ejecuta en un proceso
independiente del runtime de Python.
3. BxlServer determina el destino de la conexión e inicia una conexión mediante ODBC. Para ello, pasa las
credenciales proporcionadas como parte de la cadena de conexión en el script de Python.
4. BxlServer abre una conexión con la instancia de SQL Server.
5. Cuando se llama a un runtime de script externo, se invoca el servicio Launchpad, que a su vez abre el
iniciador adecuado; en este caso, PythonLauncher.dll. A partir de ese momento, el procesamiento de código
de Python se controla en un flujo de trabajo similar al de un procedimiento almacenado en T-SQL.
6. PythonLauncher realiza una llamada a la instancia del runtime de Python que hay instalada en el equipo de
SQL Server.
7. Los resultados se devuelven a BxlServer.
8. SQL Satellite administra la comunicación con SQL Server y la limpieza de los objetos de trabajo relacionados.
9. SQL Server devuelve los resultados al cliente.
Pasos siguientes
Módulo revoscalepy en SQL Server
Referencia a la función revoscalepy
Marco de extensibilidad en SQL Server
Extensiones de R y Machine Learning en SQL Server
Obtención de información de paquetes de Python
Instalación de paquetes de Python con sqlmlutils
Extensión del lenguaje R en SQL Server Machine
Learning Services
14/07/2021 • 6 minutes to read
Componentes de R
SQL Server incluye paquetes tanto de código abierto como de propietario. Las bibliotecas de R base se instalan
a través de la distribución de R de código abierto de Microsoft: Microsoft R Open (MRO). Los usuarios actuales
de R deben poder portar su código de R y ejecutarlo como un proceso externo en SQL Server con pocas
modificaciones o ninguna. MRO se instala independientemente de las herramientas de SQL y se ejecuta fuera de
los procesos principales del motor, en el marco de extensibilidad. Durante la instalación, debe dar su
consentimiento a los términos de la licencia de código abierto. Cuando lo haga, podrá ejecutar paquetes de R
estándar sin necesidad de realizar ninguna modificación más, tal y como sucede con cualquier otra distribución
de código abierto de R.
SQL Server no modifica los ejecutables base de R, pero se debe usar la versión de R que instala el programa de
instalación, ya que esa versión es en la que se compilan y prueban los paquetes de propietario. Para obtener
más información sobre las diferencias entre MRO y una distribución base de R que podría obtener de CRAN,
vea Interoperabilidad con el lenguaje R y los productos y características de Microsoft R.
La distribución de paquetes base de R que instala el programa de instalación se puede encontrar en la carpeta
asociada a la instancia. Por ejemplo, si se ha instalado R Services en la instancia predeterminada de SQL Server,
las bibliotecas de R estarán en esta carpeta
C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library de forma predeterminada. De
forma similar, las herramientas de R asociadas a la instancia predeterminada se encontrarían en la carpeta
C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\bin por defecto.
Los paquetes de R que agrega Microsoft para cargas de trabajo paralelas y distribuidas incluyen las bibliotecas
siguientes.
Arquitectura de la ejecución
En los diagramas siguientes se describe la interacción de los componentes de SQL Server con el entorno de
ejecución de R en cada uno de los escenarios admitidos: ejecutar un script en la base de datos y ejecutarlo de
forma remota desde una línea de comandos de R, utilizando un contexto de proceso de SQL Server.
Scripts de R ejecutados desde SQL Server en una base de datos
El código de R que se ejecuta desde "dentro" de SQL Server se ejecuta mediante una llamada a un
procedimiento almacenado. Por lo tanto, cualquier aplicación que pueda llamar a un procedimiento almacenado
podrá iniciar la ejecución de código de R. A partir de entonces, SQL Server administra la ejecución del código de
R, como se resume en el diagrama siguiente.
1. Mediante el parámetro @language='R' pasado al procedimiento almacenado sp_execute_external_script, se
indica una solicitud para el tiempo de ejecución de R. SQL Server envía esta solicitud al servicio Launchpad.
En Linux, SQL usa un servicio Launchpad a fin de comunicarse con un proceso de Launchpad independiente
para cada usuario. Vea el Diagrama de la arquitectura de extensibilidad para más información.
2. El servicio Launchpad inicia el selector adecuado, en este caso, RLauncher.
3. RLauncher inicia el proceso externo de R.
4. BxlServer coordina con el entorno de ejecución de R la administración de los intercambios de datos con
SQL Server y el almacenamiento de los resultados del trabajo.
5. SQL Satellite administra las comunicaciones sobre las tareas y los procesos relacionados con SQL Server.
6. BxlServer usa SQL Satellite para comunicar el estado y los resultados a SQL Server.
7. SQL Server obtiene los resultados y cierra las tareas y los procesos relacionados.
Scripts de R ejecutados desde un cliente remoto
Al conectarse desde un cliente de ciencia de datos remoto que admite Microsoft R, puede ejecutar funciones de
R en el contexto de SQL Server mediante funciones de RevoScaleR. Este es un flujo de trabajo diferente del
anterior y se resume en el diagrama siguiente.
1. Para las funciones de RevoScaleR, el entorno de ejecución de R llama a una función de enlace que a su vez
llama a BxlServer.
2. BxlServer se proporciona con Microsoft R y se ejecuta en un proceso independiente del tiempo de ejecución
de R.
3. BxlServer determina el destino de la conexión e inicia una conexión mediante ODBC. Para ello, pasa las
credenciales proporcionadas como parte de la cadena de conexión en el objeto de origen de datos de R.
4. BxlServer abre una conexión con la instancia de SQL Server.
5. Para una llamada de R, se invoca el servicio LaunchPad, que a su vez inicia el selector adecuado, RLauncher.
Posteriormente, el procesamiento del código de R es similar al proceso para ejecutar código de R desde T-
SQL.
6. RLauncher realiza una llamada a la instancia del entorno de ejecución de R que está instalada en el equipo
con SQL Server.
7. Los resultados se devuelven a BxlServer.
8. SQL Satellite administra la comunicación con SQL Server y la limpieza de los objetos de trabajo relacionados.
9. SQL Server devuelve los resultados al cliente.
Consulte también
Marco de extensibilidad en SQL Server
Extensiones de Python y aprendizaje automático en SQL Server
Arquitectura de seguridad del marco de
extensibilidad en SQL Server Machine Learning
Services
14/07/2021 • 18 minutes to read
Permisos
El modelo de seguridad de datos de SQL Server de inicios de sesión y roles de base de datos se extiende al
script externo. Se requiere un inicio de sesión de SQL Server o una cuenta de usuario de Windows para ejecutar
scripts externos que utilicen datos de SQL Server o que se ejecuten con SQL Server como contexto de proceso.
Los usuarios de bases de datos que tienen permisos para ejecutar una consulta pueden acceder a los mismos
datos desde el script externo.
El inicio de sesión o la cuenta de usuario identifica la entidad de seguridad, que podría necesitar varios niveles
de acceso, dependiendo de los requisitos de los scripts externos:
Permiso para acceder a la base de datos donde se habilitan los scripts externos.
Permisos para leer datos de objetos protegidos como tablas.
La capacidad de escribir nuevos datos en una tabla, como un modelo o los resultados de la puntuación.
La capacidad de crear objetos, como tablas, procedimientos almacenados que usan el script externo o
funciones personalizadas que usan el trabajo de script externo.
El derecho a instalar nuevos paquetes en el equipo de SQL Server o a usar paquetes proporcionados a un
grupo de usuarios.
Cada persona que ejecuta un script externo mediante SQL Server como contexto de ejecución debe estar
asignada a un usuario de la base de datos. En lugar de establecer individualmente los permisos de usuario de la
base de datos, puede crear roles para administrar conjuntos de permisos y asignar usuarios a esos roles, en
lugar de establecer individualmente los permisos de usuario.
Para obtener más información, vea Concesión de permiso a los usuarios para SQL Server Machine Learning
Services.
NOTE
De forma predeterminada, SQL Server Launchpad está configurado para ejecutarse con NT Ser vice\MSSQLLaunchpad ,
que se aprovisiona con todos los permisos necesarios para ejecutar scripts externos. Para obtener más información sobre
las opciones configurables, vea Configuración del servicio launchpad de SQL Server.
NOTE
De forma predeterminada, SQL Server Launchpad está configurado para ejecutarse con NT Ser vice\MSSQLLaunchpad ,
que se aprovisiona con todos los permisos necesarios para ejecutar scripts externos. Para obtener más información sobre
las opciones configurables, vea Configuración del servicio launchpad de SQL Server.
Asignación de identidades
Cuando se inicia una sesión, launchpad asigna la identidad del usuario que realiza la llamada a una cuenta de
trabajo. Solo se puede asignar un usuario externo de Windows o un inicio de sesión de SQL válido a una cuenta
profesional mientras dure el procedimiento almacenado de SQL que ejecuta el script externo. Las consultas en
paralelo desde el mismo inicio de sesión se asignan a la misma cuenta de trabajo de usuario.
Durante la ejecución, launchpad crea carpetas temporales para almacenar datos de la sesión y los elimina
cuando finaliza la sesión. Los directorios tienen acceso restringido. En R, RLauncher realiza esta tarea. En Python,
PythonLauncher realiza esta tarea. Cada cuenta profesional individual está restringida a su propia carpeta y no
puede acceder a los archivos contenidos en carpetas situadas por encima de su propio nivel. Sin embargo, las
cuentas profesionales pueden leer, escribir o eliminar elementos secundarios en la carpeta de trabajo de la
sesión que se ha creado. Si es administrador del equipo, puede ver los directorios creados para cada proceso.
Cada directorio se identifica mediante su GUID de sesión.
Aislamiento de AppContainer
El aislamiento se consigue a través de instancias de AppContainer. En tiempo de ejecución, cuando se detecta un
script externo en un procedimiento almacenado o una consulta, SQL Server llama a launchpad con una solicitud
para un iniciador específico de la extensión. Launchpad invoca el entorno de runtime adecuado en un proceso
bajo su identidad y crea una instancia de AppContainer para que lo contenga. Este cambio es beneficioso
porque ya no se requiere la administración de cuentas y contraseñas locales. Además, en las instalaciones en las
que las cuentas de usuario locales están prohibidas, la eliminación de la dependencia de la cuenta de usuario
local comporta la posibilidad de usar esta característica.
Según la implementación de SQL Server, los contenedores AppContainer son un mecanismo interno. Aunque no
verá ninguna evidencia física de los contenedores AppContainer en el monitor de procesos, podrá encontrarlos
en las reglas de firewall de salida creadas por el programa de instalación para evitar que los procesos realicen
llamadas de red. Para obtener más información, vea Configuración de firewall para SQL Server Machine
Learning Services.
Asignación de identidades
Cuando se inicia una sesión, launchpad asigna la identidad del usuario que realiza la llamada a un objeto
AppContainer .
NOTE
En SQL Server 2019 y versiones posteriores, SQLRUserGroup solo tiene un miembro que ahora es la única cuenta de
servicio de SQL Server Launchpad, en lugar de varias cuentas de trabajo.
Asignación de identidades
El demonio de Launchpadd (con doble "D": mssql-launchpadd) asigna la identidad del usuario que realiza la
llamada a un proceso launchpad (con una sola "D") independiente con una carpeta "launchpad GUID" y un
certificado satélite. Estas carpetas launchpad GUID se crean en /var/opt/mssql-extensibility/data/ . El proceso
de launchpad usa este certificado para volver a autenticarse en SQL y, después, crea carpetas temporales para
cada GUID de sesión en la carpeta launchpad GUID. El proceso satélite (R, Python o ExtHost) puede acceder a la
carpeta launchpad GUID, el certificado que contiene y su carpeta GUID de sesión.
El script de SQL siguiente imprime el contenido de las carpetas launchpad.
Pasos siguientes
En este artículo, ha aprendido los componentes y el modelo de interacción de la arquitectura de seguridad
integrada en el marco de extensibilidad. Los puntos clave que se describen en este artículo incluyen la finalidad
de launchpad, SQLRUserGroup y las cuentas de trabajo, el aislamiento de procesos de scripts externos, y cómo
se asignan las identidades de usuario a las cuentas de trabajo.
Como paso siguiente, revise las instrucciones para conceder permisos. En el caso de los servidores que usan la
autenticación de Windows, también debe revisar Add SQLRUserGroup to a database login (Agregar
SQLRUserGroup a un inicio de sesión de base de datos).
Conexión de bucle invertido con SQL Server desde
un script de Python o R
14/07/2021 • 3 minutes to read
Cadena de conexión
Para crear una conexión de bucle invertido, debe usar una cadena de conexión correcta. Los argumentos
obligatorios comunes son el nombre del controlador ODBC, la dirección del servidor y el nombre de la base de
datos.
Cadena de conexión en Windows
Para la autenticación en SQL Server en Windows, el script de Python o R puede usar el atributo de cadena de
conexión Trusted_Connection para autenticarse como el mismo usuario que ejecutó
sp_execute_external_script.
Este es un ejemplo de la cadena de conexión de bucle invertido en Windows:
"Driver=SQL Server;Server=.;Database=nameOfDatabase;Trusted_Connection=Yes;"
La dirección del servidor, la ubicación del archivo de certificado de cliente y la ubicación del archivo de clave de
cliente son únicas para cada sp_execute_external_script y se pueden obtener mediante el uso de la API
r x_get_sql_loopback_connection_string() para Python o r xGetSqlLoopbackConnectionString() para R.
Para obtener más información sobre los atributos de la cadena de conexión, consulte Palabras clave y atributos
de DSN y de la cadena de conexión para Microsoft ODBC Driver for SQL Server.
Cadena de conexión en Azure SQL Managed Instance
Para generar la cadena de conexión para Azure SQL Managed Instance, vea los ejemplos de las secciones
siguientes. Utilice ODBC Driver 11 for SQL Ser ver como controlador ODBC para las conexiones de bucle
invertido.
Generación de una cadena de conexión con revoscalepy para Python
Puede usar la API r x_get_sql_loopback_connection_string() en revoscalepy con el fin de generar una
cadena de conexión correcta para una conexión de bucle invertido en un script de Python.
Acepta los argumentos siguientes:
Ejemplos
Ejemplo para SQL Server en Windows:
EXECUTE sp_execute_external_script
@language = N'Python',
@script = N'
from revoscalepy import rx_get_sql_loopback_connection_string, RxSqlServerData, rx_data_step
loopback_connection_string = rx_get_sql_loopback_connection_string(odbc_driver="SQL Server",
name_of_database="DBName")
print("Connection String:{0}".format(loopback_connection_string))
data_set = RxSqlServerData(sql_query = "select col1, col2 from tableName",
connection_string = loopback_connection_string)
OutputDataSet = rx_data_step(data_set)
'
WITH RESULT SETS ((col1 int, col2 int))
GO
EXECUTE sp_execute_external_script
@language = N'Python',
@script = N'
from revoscalepy import rx_get_sql_loopback_connection_string, RxSqlServerData, rx_data_step
loopback_connection_string = rx_get_sql_loopback_connection_string(odbc_driver="ODBC Driver 17 for SQL
Server",
name_of_database="DBName")
print("Loopback Connection String:{0}".format(loopback_connection_string))
data_set = RxSqlServerData(sql_query = "select col1, col2 from tableName",
connection_string = loopback_connection_string)
OutputDataSet = rx_data_step(data_set)
'
WITH RESULT SETS ((col1 int, col2 int))
GO
Ejemplos
Ejemplo para SQL Server en Windows:
EXECUTE sp_execute_external_script
@language = N'R',
@script = N'
loopbackConnectionString <- rxGetSqlLoopbackConnectionString(nameOfDatabase="DBName", odbcDriver ="SQL
Server")
print(paste("Connection String:", loopbackConnectionString))
dataSet <- RxSqlServerData(sqlQuery = "select col1, col2 from tableName",
connectionString = loopbackConnectionString)
OutputDataSet <- rxDataStep(dataSet)
'
WITH RESULT SETS ((col1 int, col2 int))
GO
EXECUTE sp_execute_external_script
@language = N'R',
@script = N'
loopbackConnectionString <- rxGetSqlLoopbackConnectionString(nameOfDatabase="DBName", odbcDriver ="ODBC
Driver 11 for SQL Server")
print(paste("Connection String:", loopbackConnectionString))
dataSet <- RxSqlServerData(sqlQuery = "select col1, col2 from tableName",
connectionString = loopbackConnectionString)
OutputDataSet <- rxDataStep(dataSet)
'
WITH RESULT SETS ((col1 int, col2 int))
GO
Pasos siguientes
Microsoft ODBC driver for SQL Server
revoscalepy
RevoScaleR
Uso de datos de cubos OLAP en R
14/07/2021 • 7 minutes to read
IMPORTANT
Una instancia de Analysis Services puede admitir cubos multidimensionales convencionales o modelos tabulares, pero una
instancia no puede admitir ambos tipos de modelos. Por lo tanto, antes de intentar crear una consulta MDX en un cubo,
compruebe que la instancia de Analysis Services contiene modelos multidimensionales.
API de olapR
El paquete olapR admite dos métodos de creación de consultas MDX:
Uso del generador MDX. Utilice las funciones de R en el paquete para generar una consulta MDX
simple, eligiendo un cubo y, a continuación, estableciendo los ejes y las segmentaciones. Esta es una
manera fácil de crear consultas MDX válidas si no tiene acceso a herramientas tradicionales de OLAP o no
tenga un conocimiento profundo del lenguaje MDX.
No todas las consultas MDX se pueden crear con este método, ya que MDX puede ser complejo. Sin
embargo, esta API admite la mayoría de las operaciones más habituales y útiles, como segmentar,
desglosar, obtener detalles, acumular y dinamizar en N dimensiones.
Copiado y pegado de MDX con formato correcto. Cree manualmente y luego pegue en cualquier
consulta MDX. Esta opción es la mejor si tiene consultas MDX existentes que quiere volver a usar o si la
consulta que quiere compilar es demasiado compleja para que olapR la controle.
Después de crear el MDX con cualquier utilidad de cliente, como SSMS o Excel, guarde la cadena de
consulta. Proporcione esta cadena MDX como argumento para el controlador de consultas SSAS en el
paquete de olapR . El proveedor envía la consulta al servidor de Analysis Services especificado y vuelve a
pasar los resultados a R.
Para ver ejemplos de cómo compilar una consulta MDX o ejecutar una consulta MDX existente, vea Cómo crear
consultas MDX con R.
Problemas conocidos
En esta sección se enumeran algunos problemas conocidos y preguntas comunes sobre el paquete de olapR .
Compatibilidad con modelos tabulares
Si conecta una instancia de Analysis Services que contiene un modelo tabular, la función explore notifica el
éxito con un valor devuelto de TRUE. Sin embargo, los objetos de modelo tabular son diferentes de los objetos
multidimensionales y la estructura de una base de datos multidimensional es diferente a la de un modelo
tabular.
Aunque DAX (Expresiones de análisis de datos) es el lenguaje que se suele usar con los modelos tabulares,
puede diseñar consultas MDX válidas en un modelo tabular si ya está familiarizado con MDX. No puede utilizar
los constructores de olapR para crear consultas MDX válidas en un modelo tabular.
Sin embargo, las consultas MDX son una forma ineficaz de recuperar datos de un modelo tabular. Si necesita
obtener datos de un modelo tabular para su uso en R, le recomendamos usar estos métodos en su lugar:
Habilite DirectQuery en el modelo y agregue el servidor como servidor vinculado en SQL Server.
Si el modelo tabular se ha creado en un data mart relacional, obtenga los datos directamente del origen.
Cómo determinar si una instancia contiene modelos tabulares o multidimensionales
Una sola instancia de Analysis Services solo puede contener un tipo de modelo, aunque puede contener varios
modelos. La razón es que existen diferencias fundamentales entre los modelos tabulares y los modelos
multidimensionales que controlan la forma en que se almacenan y procesan los datos. Por ejemplo, los modelos
tabulares se almacenan en la memoria y aprovechan los índices de almacén de columnas para realizar cálculos
muy rápidos. En los modelos multidimensionales, los datos se almacenan en el disco y las agregaciones se
definen de antemano y se recuperan mediante consultas MDX.
Si se conecta a Analysis Services mediante un cliente como SQL Server Management Studio, puede conocer
inmediatamente qué tipo de modelo se admite, examinando el icono de la base de datos.
También puede ver y consultar las propiedades del servidor para determinar qué tipo de modelo admite la
instancia. La propiedad Modo de ser vidor admite dos valores: multidimensional o tabular.
Vea el artículo siguiente para obtener información general sobre los dos tipos de modelos:
Comparación de modelos multidimensionales y tabulares
Vea el siguiente artículo para obtener información acerca de las propiedades del servidor:
OLE DB para los conjuntos de filas de esquema OLAP
No se admite la reescritura
No es posible volver a escribir los resultados de los cálculos de R personalizados en el cubo.
En general, incluso cuando un cubo está habilitado para la reescritura, solo se admiten operaciones limitadas y
es posible que se requiera una configuración adicional. Recomendamos usar MDX para dichas operaciones.
Dimensiones habilitadas para escritura
Particiones habilitadas para escritura
Establecimiento del acceso personalizado a los datos de las celdas
Las consultas MDX de ejecución prolongada bloquean el procesamiento de cubos
Aunque el paquete de olapR solo realiza operaciones de lectura, las consultas MDX de ejecución prolongada
pueden crear bloqueos que impiden que se procese el cubo. Pruebe siempre las consultas MDX de antemano
para saber cuántos datos deben devolverse.
Si intenta conectarse a un cubo que está bloqueado, es posible que reciba un error que le informará de que no
se puede alcanzar el almacenamiento de datos de SQL Server. Las resoluciones sugeridas incluyen la
habilitación de conexiones remotas, la comprobación del nombre del servidor o de la instancia, etc. Sin
embargo, tenga en cuenta la posibilidad de que exista una conexión abierta anterior.
Un administrador de SSAS puede evitar problemas de bloqueo mediante la identificación y finalización de las
sesiones abiertas. También se puede aplicar una propiedad de tiempo de expiración a las consultas MDX en el
nivel de servidor para forzar la finalización de todas las consultas de ejecución prolongada.
Recursos
Si no está familiarizado con OLAP o con las consultas MDX, vea estos artículos de Wikipedia:
Cubos OLAP
Consultas MDX
Procedimiento para crear consultas MDX en R
mediante olapR
14/07/2021 • 6 minutes to read
Ejemplos
Los ejemplos siguientes se basan en el data mart AdventureWorks y el proyecto de cubo, porque ese proyecto
está disponible en varias versiones, incluidos los archivos de copia de seguridad que se pueden restaurar
fácilmente a Analysis Services. Si no tiene un cubo existente, obtenga un cubo de ejemplo con cualquiera de
estas opciones:
Cree el cubo que se usa en estos ejemplos siguiendo el tutorial de Analysis Services hasta la lección 4:
Crear un cubo OLAP
Descargue un cubo existente como copia de seguridad y restáurelo en una instancia de Analysis Services.
Por ejemplo, este sitio proporciona un cubo totalmente procesado en formato comprimido: Modelo
multidimensional de Adventure Works de SQL 2014. Extraiga el archivo y después restáurelo en la
instancia de SSAS. Para más información, vea Realizar una copia de seguridad y restaurarla o Cmdlet
Restore-ASDatabase.
1. MDX básico con segmentación
Esta consulta MDX selecciona measures (medidas) de count (recuento) y amount (cantidad) del recuento de
ventas por Internet y el importe de las ventas, y los coloca en el eje Columna. Agrega un miembro de la
dimensión Sales Territory (Territorio de ventas) como segmentación para filtrar la consulta de manera que en los
cálculos solo se usen las ventas de Australia.
En las columnas puede especificar varias medidas como elementos de una cadena separada por comas.
El eje Fila usa todos los valores posibles (todos los MIEMBROS) de la dimensión "Product Line" (Línea de
productos).
Esta consulta devolvería una tabla con tres columnas, con un resumen acumulado de las ventas por Internet
de todos los países.
La cláusula WHERE especifica el eje segmentador. En este ejemplo, el segmentador usa un miembro de la
dimensión Sales Territor y para filtrar la consulta de manera que en los cálculos solo se usen las ventas de
Australia.
Para crear esta consulta con las funciones proporcionadas en olapR
En el caso de una instancia con nombre, asegúrese de usar el carácter de escape para los caracteres que podrían
considerarse caracteres de control en R. Por ejemplo, esta cadena de conexión hace referencia a una instancia de
OLAP01, en un servidor denominado ContosoHQ:
Si define una consulta con el Generador MDX en SQL Server Management Studio y después guarda la cadena
de MDX, se enumerarán los ejes a partir del 0, como se muestra aquí:
Aun así, puede ejecutar esta consulta como una cadena MDX predefinida, aunque para crear la misma consulta
en R usando la función axis() , debe asegurarse enumerar los ejes a partir del 1.
2. Explorar los cubos y sus campos en una instancia SSAS
Puede usar la función explore para devolver una lista de cubos, dimensiones o miembros que se usarán en la
construcción de la consulta. Esto resulta práctico si no tiene acceso a otras herramientas de exploración de OLAP
o si quiere manipular o construir la consulta MDX mediante programación.
Para consultar la lista de cubos disponibles en la conexión especificada
Para ver todos los cubos o perspectivas en la instancia en la que tiene permiso de visualización, proporcione el
identificador como argumento de explore .
IMPORTANT
El resultado final no es un cubo: TRUE solo indica que la operación de metadatos se ha efectuado correctamente. Si los
argumentos no son válidos, se produce un error.
RESULT S
Internet Sales
Reseller Sales
Sales Summary
[1] TRUE
RESULT S
Cliente
Date
Región
RESULT S
Accessories
Bikes
RESULT S
Clothing
Componentes
Consulte también
Uso de datos de cubos OLAP en R
Trazado de histogramas en Python
14/07/2021 • 2 minutes to read
Se aplica a: SQL Server (todas las versiones admitidas) Azure SQL Database Instancia
administrada de Azure SQL
En este artículo se describe cómo trazar datos mediante el paquete de Python pandas'.hist (). Una base de datos
SQL es el origen que se usa para visualizar los intervalos de datos del histograma que tienen valores
consecutivos no superpuestos.
Requisitos previos:
SQL Server para Windows o para Linux.
Azure SQL Database
Instancia administrada de Azure SQL
SQL Server Management Studio para restaurar la base de datos de ejemplo en Azure SQL Managed
Instance.
Azure Data Studio. Para realizar la instalación, vea Azure Data Studio.
Restaure la base de datos DW de ejemplo para obtener los datos de ejemplo que se usan en este artículo.
USE AdventureWorksDW;
SELECT * FROM Person.CountryRegion;
import pyodbc
import pandas as plt
# Some other example server values are
# server = 'localhost\sqlexpress' # for a named instance
# server = 'myserver,port' # to specify an alternate port
server = 'servername'
database = 'AdventureWorksDW'
username = 'yourusername'
password = 'databasename'
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+
password)
cursor = cnxn.cursor()
sql = "SELECT DATEDIFF(year, c.BirthDate, GETDATE()) AS Age FROM [dbo].[FactInternetSales] s INNER JOIN
dbo.DimCustomer c ON s.CustomerKey = c.CustomerKey"
df = pd.read_sql(sql, cnxn)
df.hist(bins=10)
Se aplica a: SQL Server (todas las versiones admitidas) Azure SQL Database Instancia
administrada de Azure SQL
En este artículo se describe cómo insertar datos de SQL en un dataframe de Pandas mediante el paquete
pyodbc en Python. Las filas y las columnas de datos contenidas en el dataframe se pueden usar para seguir
explorando los datos.
Requisitos previos
SQL Server para Windows o para Linux.
Azure SQL Database
Instancia administrada de Azure SQL
SQL Server Management Studio para restaurar la base de datos de ejemplo en Azure SQL Managed
Instance.
Azure Data Studio. Para realizar la instalación, vea Azure Data Studio.
Restaure la base de datos de ejemplo para obtener los datos de ejemplo que se usan en este artículo.
USE AdventureWorks;
SELECT * FROM Person.CountryRegion;
Insertar datos
Use el siguiente script para seleccionar datos de la tabla Person.CountryRegion e insertarlos en un dataframe.
Edite las variables de cadena de conexión: "Server", "Database", "Username" y "Password" para conectarse a SQL.
Para crear un nuevo cuaderno:
1. En Azure Data Studio, seleccione Archivo y luego Nuevo cuaderno .
2. En el bloc de notas, seleccione el kernel Python3 y luego el comando +Código .
3. Pegue el código en el bloc de notas y seleccione Ejecutar todo .
import pyodbc
import pandas as pd
# Some other example server values are
# server = 'localhost\sqlexpress' # for a named instance
# server = 'myserver,port' # to specify an alternate port
server = 'servername'
database = 'AdventureWorks'
username = 'yourusername'
password = 'databasename'
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+
password)
cursor = cnxn.cursor()
# select 26 rows from SQL table to insert in dataframe.
query = "SELECT [CountryRegionCode], [Name] FROM Person.CountryRegion;"
df = pd.read_sql(query, cnxn)
print(df.head(26))
Salida
El comando print del script anterior muestra las filas de datos del dataframe df de pandas .
CountryRegionCode Name
0 AF Afghanistan
1 AL Albania
2 DZ Algeria
3 AS American Samoa
4 AD Andorra
5 AO Angola
6 AI Anguilla
7 AQ Antarctica
8 AG Antigua and Barbuda
9 AR Argentina
10 AM Armenia
11 AW Aruba
12 AU Australia
13 AT Austria
14 AZ Azerbaijan
15 BS Bahamas, The
16 BH Bahrain
17 BD Bangladesh
18 BB Barbados
19 BY Belarus
20 BE Belgium
21 BZ Belize
22 BJ Benin
23 BM Bermuda
24 BT Bhutan
25 BO Bolivia
Pasos siguientes
Inserción de un dataframe de Python en SQL
Insertar un dataframe de Python en una tabla SQL
14/07/2021 • 2 minutes to read
Se aplica a: SQL Server (todas las versiones admitidas) Azure SQL Database Instancia
administrada de Azure SQL
En este artículo se describe cómo insertar un dataframe de Pandas en una base de datos SQL mediante el
paquete pyodbc en Python.
Requisitos previos
SQL Server para Windows o para Linux.
Azure SQL Database
Instancia administrada de Azure SQL
SQL Server Management Studio para restaurar la base de datos de ejemplo en Azure SQL Managed
Instance.
Azure Data Studio. Para realizar la instalación, vea Azure Data Studio.
Restaure la base de datos de ejemplo para obtener los datos de ejemplo que se usan en este artículo.
USE AdventureWorks;
SELECT * FROM HumanResources.Department;
DepartmentID,Name,GroupName,
1,Engineering,Research and Development,
2,Tool Design,Research and Development,
3,Sales,Sales and Marketing,
4,Marketing,Sales and Marketing,
5,Purchasing,Inventory Management,
6,Research and Development,Research and Development,
7,Production,Manufacturing,
8,Production Control,Manufacturing,
9,Human Resources,Executive General and Administration,
10,Finance,Executive General and Administration,
11,Information Services,Executive General and Administration,
12,Document Control,Quality Assurance,
13,Quality Assurance,Quality Assurance,
14,Facilities and Maintenance,Executive General and Administration,
15,Shipping and Receiving,Inventory Management,
16,Executive,Executive General and Administration
Results
Pasos siguientes
Trazado de un histograma para la exploración de datos con Python
Uso de ODBC para guardar y cargar objetos de R
en SQL Server Machine Learning Services
14/07/2021 • 3 minutes to read
Paquete RevoScaleR
El paquete RevoScaleR incluye funciones de serialización y deserialización que pueden almacenar objetos de R
de forma compacta en SQL Server y, luego, leer los objetos de la tabla. En general, cada llamada a la función usa
un almacén de valores de clave simple, en el que la clave es el nombre del objeto y el valor asociado a la clave es
el objeto varbinary de R que se va a mover dentro o fuera de una tabla.
Para guardar objetos de R en SQL Server directamente desde un entorno de R, debe hacer lo siguiente:
Establecer una conexión a SQL Server mediante el origen de datos RxOdbcData
Llamar a las nuevas funciones a través de la conexión ODBC
Opcionalmente, puede especificar que el objeto no se serialice. Luego, elija un nuevo algoritmo de
compresión, que se usará en lugar del algoritmo de compresión predeterminado.
De forma predeterminada, cualquier objeto al que se llame desde R para moverlo a SQL Server se serializa y se
comprime. Por el contrario, cuando se carga un objeto desde una tabla de SQL Server para usarlo en el código
R, el objeto se deserializa y se descomprime.
3. Elimine la tabla si ya existe y no quiere realizar un seguimiento de las versiones anteriores de los objetos.
if(rxSqlServerTableExists(ds@table, ds@connectionString)) {
rxSqlServerDropTable(ds@table, ds@connectionString)
}
4. Defina una tabla que se pueda usar para almacenar objetos binarios.
5. Abra la conexión de ODBC para crear la tabla y, cuando haya finalizado la instrucción DDL, cierre la
conexión.
rxOpen(ds, "w")
rxExecuteSQLDDL(ds, ddl)
rxClose(ds)
7. Use el objeto RxOdbcData creado anteriormente para guardar el modelo en la base de datos.
Pasos siguientes
¿Qué es SQL Server Machine Learning Services?
Crear varios modelos mediante rxExecBy
14/07/2021 • 3 minutes to read
Funcionamiento de rxExecBy
La función rxExecBy de RevoScaleR está diseñada para el procesamiento paralelo de gran volumen en un gran
número de conjuntos de datos pequeños.
1. Llame a la función rxExecBy como parte del código de R y pase un conjunto de datos no ordenados.
2. Especifique la partición por la que se deben agrupar y ordenar los datos.
3. Defina una función de transformación o modelado que se deba aplicar a cada partición de datos.
4. Cuando se ejecuta la función, las consultas de datos se procesan en paralelo si su entorno lo admite. Además,
las tareas de modelado o transformación se distribuyen entre núcleos individuales y se ejecutan en paralelo.
RxSpark y RxInSQLServer son contextos de proceso admitidos.
5. Se devuelven varios resultados.
Puntuación: rxPredict
EXEC sp_execute_external_script
@language = N'R'
, @script = N'
delayFunc <- function(key, data, params) {
df <- rxImport(inData = airlineData)
rxLinMod(ArrDelay ~ CRSDepTime, data = df)
}
OutputDataSet <- rxExecBy(airlineData, c("DayOfWeek"), delayFunc)
'
, @input_data_1 = N'select ArrDelay, DayOfWeek, CRSDepTime from AirlineDemoSmall]'
, @input_data_1_name = N'airlineData'
Si obtiene el error varsToPartition is invalid , compruebe si el nombre de la columna o columnas de clave está
escrito correctamente. El lenguaje de R distingue mayúsculas de minúsculas.
Este ejemplo concreto no está optimizado para SQL Server y, en muchos casos, puede lograr un mejor
rendimiento si usa SQL para agrupar los datos. Sin embargo, con rxExecBy, puede crear trabajos paralelos desde
R.
En el ejemplo siguiente se muestra el proceso en R, usando SQL Server como contexto de proceso:
# user function
".Count" <- function(keys, data, params)
{
myDF <- rxImport(inData = data)
return (nrow(myDF))
}
Pasos siguientes
¿Qué es SQL Server Machine Learning Services?
Asignaciones de tipos de datos entre Python y
SQL Server
14/07/2021 • 2 minutes to read
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores de Instancia administrada de Azure SQL
En este artículo se enumeran los tipos de datos admitidos y las conversiones de tipos de datos que se realizan
cuando se usa la característica de integración de Python en SQL Server Machine Learning Services.
En comparación con SQL Server, Python admite un número limitado de tipos de datos. Por consiguiente, cada
vez que se usan datos de SQL Server en scripts de Python, es posible que los datos de SQL se conviertan
implícitamente en un tipo de datos de Python compatible. Si bien, a menudo no se puede realizar una
conversión exacta automáticamente y se devuelve un error.
T IP O SQ L T IP O DE P Y T H O N DESC RIP C IÓ N
bigint float64
binar y bytes
bit bool
char str
date datetime
float float64
nchar str
nvarchar str
nvarchar(max) str
real float64
smalldatetime datetime
T IP O SQ L T IP O DE P Y T H O N DESC RIP C IÓ N
smallint int32
tinyint int32
uniqueidentifier str
varbinar y bytes
varchar(n) str
ntext str
Consulte también
Asignaciones de tipos de datos entre R y SQL Server
Asignaciones de tipos de datos entre R y
SQL Server
14/07/2021 • 9 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
En este artículo se enumeran los tipos de datos admitidos y las conversiones de tipos de datos que se realizan
cuando se usa la característica de integración de R en SQL Server Machine Learning Services.
Versión de R base
SQL Server 2016 R Services y SQL Server Machine Learning Services con R están en consonancia con versiones
específicas de Microsoft R Open. Por ejemplo, la versión más reciente, SQL Server 2019 Machine Learning
Services, se basa en Microsoft R Open 3.5.2.
Para ver la versión de R asociada a una instancia determinada de SQL Server, abra RGui en la instancia de SQL.
Por ejemplo, la ruta de acceso de la instancia predeterminada en SQL Server 2019 sería:
C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\R_SERVICES\bin\x64\Rgui.exe .
La herramienta carga Base R y otras bibliotecas. La información de versión del paquete se proporciona en una
notificación para cada paquete que se carga en el inicio de la sesión.
T IP O DE C O N JUN TO DE
T IP O SQ L C L A SE DE R RESULTA DO S C O M EN TA RIO S
T IP O DE C O N JUN TO DE
T IP O SQ L C L A SE DE R RESULTA DO S C O M EN TA RIO S
WARNING
Si usa el r xDataStep para quitar columnas incompatibles al mover los datos, tenga en cuenta que los argumentos
varsToKeep y varsToDrop no son compatibles con el tipo de origen de datos RxSqlSer verData .
Ejemplos
Ejemplo 1: Conversión implícita
En el ejemplo siguiente se muestra cómo se transforman los datos al hacer el recorrido de ida y vuelta entre
SQL Server y R.
En la consulta se obtiene una serie de valores de una tabla de SQL Server y se usa el procedimiento almacenado
sp_execute_external_script para generar los valores con el runtime de R.
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N'
inputDataSet["cR"] <- c(4, 2)
str(inputDataSet)
outputDataSet <- inputDataSet'
, @input_data_1 = N'SELECT c1, c2, c3 FROM MyTable'
, @input_data_1_name = N'inputDataSet'
, @output_data_1_name = N'outputDataSet'
WITH RESULT SETS((C1 int, C2 varchar(max), C3 varchar(max), C4 float));
Resultados
F IL A # C1 C2 C3 C4
1 1 Hola 6e225611-4b58- 4
4995-a0a5-
554d19012ef1
Observe el uso de la función str en R para obtener el esquema de los datos de salida. Esta función devuelve la
siguiente información:
Aquí puede ver que las siguientes conversiones de tipos de datos se han realizado implícitamente como parte
de esta consulta:
Columna C1 . La columna se representa como int en SQL Server, integer en R y int en el conjunto de
resultados de salida.
No se ha realizado ninguna conversión de tipo.
Columna C2 . La columna se representa como varchar(10) en SQL Server, factor en R y
varchar(max) en la salida.
Observe los cambios que se han producido en la salida: todas las cadenas de R (tanto si son un factor
como una cadena normal) se representarán como varchar(max) , independientemente de la longitud de
las cadenas.
Columna C3 . La columna se representa como uniqueidentifier en SQL Server, character en R y
varchar(max) en la salida.
Observe la conversión de tipo de datos que se ha producido. SQL Server admite uniqueidentifier , pero
R no. Por eso, los identificadores se representan como cadenas.
Columna C4 . La columna contiene valores generados por el script de R que no están presentes en los
datos originales.
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
Este artículo proporciona una guía en detalle sobre cómo modificar el código de R o Python para que se ejecute
como procedimiento almacenado de SQL Server con el fin de mejorar el rendimiento al acceder a los datos de
SQL.
Cuando se traslada el código de R/Python desde un IDE local u otro entorno a SQL Server, el código funciona
generalmente sin más modificaciones. Esto es cierto especialmente para el código simple, como una función
que toma algunas entradas y devuelve un valor. También es más fácil portar soluciones que usen los paquetes
RevoScaleR /revoscalepy o MicrosoftML , que admiten la ejecución en distintos contextos de ejecución con el
mínimo de cambios.
Aún así, es posible que tenga que realizar cambios importantes en el código si se da cualquiera de estas
condiciones:
Se usan bibliotecas que tienen acceso a la red o que no se pueden instalar en SQL Server.
El código realiza llamadas independientes a orígenes de datos fuera de SQL Server, como hojas de cálculo de
Excel, archivos en recursos compartidos y otras bases de datos.
Quiere parametrizar el procedimiento almacenado y ejecutar el código en el parámetro @script de
sp_execute_external_script.
La solución original incluye varios pasos que podrían ser más eficaces en un entorno de producción si se
ejecutan de forma independiente, como la preparación de datos o la ingeniería de características, frente al
entrenamiento del modelo, la puntuación o la creación de informes.
Puede optimizar el rendimiento si cambia las bibliotecas, usa la ejecución en paralelo o descarga algún
procesamiento para SQL Server.
Se produce un error si el conjunto de datos de entrada no contiene columnas con los nombres
coincidentes ArrDelay, CRSDepTime, DayOfWeek, CRSDepHour y DayOfWeek.
En algunos casos, es necesario definir un esquema de salida con antelación para los resultados.
Por ejemplo, para insertar los datos en una tabla, debe usar la cláusula WITH RESULT SET para
especificar el esquema.
También se necesita el esquema de salida si el script usa el argumento @parallel=1 . El motivo es que
SQL Server puede crear varios procesos para ejecutar la consulta en paralelo, con los resultados
recopilados al final. Por tanto, el esquema de salida debe prepararse antes de que se puedan crear los
procesos en paralelo.
En otros casos, se puede omitir el esquema de resultados mediante la opción WITH RESULT SETS
UNDEFINED . Esta instrucción devuelve el conjunto de datos a partir del script sin asignar nombres a las
columnas ni especificar los tipos de datos de SQL.
Le recomendamos que genere datos de seguimiento o de control de tiempo mediante T-SQL en lugar de
R/Python.
Por ejemplo, para pasar la hora del sistema u otra información usada para la auditoría y el
almacenamiento, puede agregar una llamada de T-SQL que se pasa a los resultados, en lugar de generar
datos similares en el script.
Mejorar el rendimiento y la seguridad
Evite escribir predicciones o resultados intermedios en un archivo. Escriba las predicciones en una tabla para
evitar el movimiento de datos.
Ejecute todas las consultas con antelación y revise los planes de consulta de SQL Server para identificar
las tareas que se pueden realizar en paralelo.
Si la consulta de entrada se puede paralelizar, establezca @parallel=1 como parte de los argumentos de
sp_execute_external_script.
Por lo general, el procesamiento en paralelo con este indicador es posible siempre que SQL Server pueda
trabajar con tablas con particiones o distribuir una consulta entre varios procesos y agregar los
resultados al final. Normalmente, el procesamiento en paralelo con este indicador no es posible si
entrena modelos mediante algoritmos que requieren que se lean todos los datos o si necesita crear
agregados.
Revise el código para determinar si hay pasos que se pueden realizar independientemente o de una
manera más eficiente, mediante una llamada de procedimiento almacenado independiente. Por ejemplo,
conseguirá un mejor rendimiento si realiza ingeniería de características o extracción de características por
separado y guarda los valores en una tabla.
Busque la manera de usar T-SQL en lugar de código de R/Python para computaciones basadas en
conjuntos.
Por ejemplo, esta solución de R muestra cómo las funciones de T-SQL definidas por el usuario y R
pueden realizar la misma tarea de ingeniería de características: Tutorial integral de ciencia de datos.
Póngase en contacto con un desarrollador de bases de datos para averiguar cómo mejorar el
rendimiento mediante el uso de características de SQL Server, como tablas optimizadas para memoria o
Resource Governor (si tiene Enterprise Edition).
Si usa R, reemplace las funciones de R convencionales por funciones de RevoScaleR que admitan la
ejecución distribuida si es posible. Para obtener más información, consulte Comparación de funciones de
Base R y RevoScaleR.
Pasos siguientes
Para ver ejemplos de cómo se puede implementar soluciones de R y Python en SQL Server, consulte los
siguientes tutoriales:
Tutoriales de R
Desarrollo de un modelo predictivo en R con el aprendizaje automático de SQL
Predicción de tarifas de taxi de Nueva York con clasificación binaria
Desarrollo de SQL para científicos de datos de R
Tutoriales de Python
Predicción de alquileres de esquíes con regresión lineal con aprendizaje automático de SQL
Predicción de tarifas de taxi de Nueva York con clasificación binaria
Puntuación nativa mediante la función PREDICT de
T-SQL con aprendizaje automático en SQL
14/07/2021 • 5 minutes to read
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores Azure SQL Database Instancia
administrada de Azure SQL Azure Synapse Analytics
Obtenga información sobre cómo usar la puntuación nativa con la función PREDICT de T-SQL para generar
valores de predicción para nuevas entradas de datos casi en tiempo real. La puntuación nativa requiere que ya
haya un modelo entrenado.
La función PREDICT utiliza las capacidades de extensión nativas de C++ en el aprendizaje automático en SQL.
Esta metodología ofrece la velocidad de procesamiento más rápida posible de las cargas de trabajo de previsión
y predicción, y admite modelos en formato Open Neural Network Exchange (ONNX) o modelos entrenados con
los paquetes RevoScaleR y revoscalepy.
Prerrequisitos
PREDICT está disponible en:
Todas las ediciones de SQL Server 2017 y versiones posteriores en Windows y Linux
Instancia administrada de Azure SQL
Azure SQL Database
Azure SQL Edge
Azure Synapse Analytics
La función está habilitada de manera predeterminada. No es necesario instalar R o Python, ni habilitar otras
características.
Modelos admitidos
Los formatos de modelos admitidos por la función PREDICT dependen de la plataforma SQL en la que se realiza
la puntuación nativa. Vea la tabla siguiente para ver qué formatos de modelos se admiten en cada plataforma.
P L ATA F O RM A F O RM ATO DE M O DELO O N N X F O RM ATO DE M O DELO REVO SC A L E
SQL Server No Sí
Modelos de ONNX
El modelo debe estar en un formato de modelo Open Neural Network Exchange (ONNX).
Modelos RevoScale
El modelo se debe entrenar de antemano con uno de los algoritmos r x admitidos que se enumeran más abajo
mediante el paquete RevoScaleR o revoscalepy.
Serialice el modelo mediante rxSerialize para R y rx_serialize_model para Python. Estas funciones de
serialización se han optimizado para admitir la puntuación rápida.
Ejemplos
PREDICT con un modelo ONNX
En este ejemplo se muestra cómo usar un modelo ONNX almacenado en la tabla dbo.models para la
puntuación nativa.
WITH predict_input
AS (
SELECT TOP (1000) [id]
, CRIM
, ZN
, INDUS
, CHAS
, NOX
, RM
, AGE
, DIS
, RAD
, TAX
, PTRATIO
, B
, LSTAT
FROM [dbo].[features]
)
SELECT predict_input.id
, p.variable1 AS MEDV
FROM PREDICT(MODEL = @model, DATA = predict_input, RUNTIME=ONNX) WITH (variable1 FLOAT) AS p;
NOTE
Dado que las columnas y los valores devueltos por PREDICT pueden variar según el tipo de modelo, debe definir el
esquema de los datos devueltos mediante una cláusula WITH .
Use la siguiente instrucción para rellenar la tabla de datos con datos del conjunto de datos de iris .
INSERT INTO iris_rx_data ("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width" , "Species")
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N'iris_data <- iris;'
, @input_data_1 = N''
, @output_data_1_name = N'iris_data';
GO
El siguiente código crea un modelo basado en el conjunto de datos de iris y lo guarda en la tabla denominada
models .
NOTE
Asegúrese de usar la función rxSerializeModel de RevoScaleR para guardar el modelo. La función serialize de R
estándar no puede generar el formato que necesitamos.
Puede ejecutar una instrucción como la siguiente para ver el modelo almacenado en formato binario:
Si aparece el error "Error durante la ejecución de la función integrada PREDICT. El modelo está dañado o no es
válido", suele significar que la consulta no devolvió un modelo. Compruebe si escribió correctamente el nombre
del modelo, o si la tabla de modelos está vacía.
NOTE
Dado que las columnas y los valores devueltos por PREDICT pueden variar según el tipo de modelo, debe definir el
esquema de los datos devueltos mediante una cláusula WITH .
Pasos siguientes
PREDICT (Transact-SQL)
Documentación del aprendizaje automático en SQL
Aprendizaje automático e IA con ONNX en SQL Edge
Implementación y creación de predicciones con un modelo de ONNX en Azure SQL Edge
Puntuación de modelos de Machine Learning con PREDICT en Azure Synapse Analytics
Puntuación en tiempo real con sp_rxPredict en
SQL Server
14/07/2021 • 5 minutes to read
Prerrequisitos
Habilitación de la integración de SQL Server con CLR.
Habilitar la puntuación en tiempo real.
El modelo se debe entrenar de antemano con uno de los algoritmos r x admitidos. Para más información,
consulte Algoritmos admitidos para sp_rxPredict .
Serialice el modelo mediante rxSerialize para R o rx_serialize_model para Python. Estas funciones de
serialización se han optimizado para admitir la puntuación rápida.
Guarde el modelo en la instancia del motor de base de datos desde el que quiere llamarlo. No es
necesario que esta instancia tenga la extensión en tiempo de ejecución de R o de Python.
NOTE
En la actualidad, la puntuación en tiempo real está optimizada para predicciones rápidas en conjuntos de datos más
pequeños, que van desde unas pocas filas hasta cientos de miles de filas. En conjuntos de datos grandes, el uso de
rxPredict podría ser más rápido.
Para que funcione la puntuación en tiempo real, es necesario habilitar la funcionalidad CLR de SQL en la
instancia; además, la base de datos debe estar marcada como de confianza. Al ejecutar el script, estas acciones
se realizan automáticamente. Sin embargo, no olvide las implicaciones de seguridad adicionales antes de
hacerlo.
1. Abra un símbolo del sistema con privilegios elevados y navegue hasta la carpeta donde se encuentra
RegisterRExt.exe. Puede usar esta ruta de acceso en una instalación predeterminada:
<SQLInstancePath>\R_SERVICES\library\RevoScaleR\rxLibs\x64\
2. Ejecute el siguiente comando, pero sustituya el nombre de la instancia y la base de datos de destino
donde quiera habilitar los procedimientos almacenados extendidos:
RegisterRExt.exe /installRts [/instance:name] /database:databasename
Por ejemplo, para agregar el procedimiento almacenado extendido a la base de datos CLRPredict en la
instancia predeterminada, escriba:
RegisterRExt.exe /installRts /database:CLRPRedict
El nombre de la instancia es opcional si la base de datos está en la instancia predeterminada. Si usa una
instancia con nombre, especifique el nombre de la instancia.
3. RegisterRExt.exe crea estos objetos:
ensamblados de confianza;
el procedimiento almacenado sp_rxPredict ,
un nuevo rol de base de datos, rxpredict_users . El administrador de bases de datos puede usar este
rol para conceder permiso a los usuarios que usan la función de puntuación en tiempo real.
4. Agregue los usuarios que tengan que ejecutar sp_rxPredict en el nuevo rol.
NOTE
En SQL Server 2017 y versiones posteriores, se aplican medidas de seguridad adicionales para evitar problemas con la
integración de CLR. Estas medidas también imponen restricciones adicionales sobre el uso de este procedimiento
almacenado.
EXEC sp_rxPredict
@model = @irismodel,
@inputData = N'SELECT * FROM iris_rx_data'
NOTE
Se produce un error en la llamada a sp_rxPredict si los datos de entrada para la puntuación no incluyen columnas que
coincidan con los requisitos del modelo. Actualmente, solo se admiten los siguientes tipos de datos de .NET: double, float,
short, ushort, long, ulong y string.
Por tanto, es posible que tenga que filtrar los tipos no admitidos en los datos de entrada antes de usarlos para la
puntuación en tiempo real.
Para obtener información sobre los tipos de SQL correspondientes, vea Asignación de tipos de SQL-CLR o Asignación de
datos de parámetros de CLR.
Pasos siguientes
Puntuación nativa mediante la función PREDICT de T-SQL con aprendizaje automático en SQL
sp_rxPredict
Aprendizaje automático de SQL
Obtención de información de paquetes de Python
27/07/2021 • 5 minutes to read
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores de Instancia administrada de Azure SQL
En este artículo se describe cómo obtener información sobre los paquetes de Python instalados, incluidas las
versiones y las ubicaciones de instalación, en Machine Learning Services en SQL Server y en Clústeres de
macrodatos. Los scripts de Python de ejemplo muestran cómo mostrar información de paquetes, como la ruta
de instalación y la versión.
En este artículo se describe cómo obtener información sobre los paquetes de Python instalados, incluidas las
versiones y las ubicaciones de instalación, en SQL Server Machine Learning Services. Los scripts de Python de
ejemplo muestran cómo mostrar información de paquetes, como la ruta de instalación y la versión.
En este artículo se describe cómo obtener información sobre los paquetes de Python instalados, incluidas las
versiones y las ubicaciones de instalación, en Machine Learning Services en Azure SQL Managed Instance. Los
scripts de Python de ejemplo muestran cómo mostrar información de paquetes, como la ruta de instalación y la
versión.
Se da por sentado que la instancia predeterminada de SQL es MSSQLSERVER. Si se instala SQL Server como
instancia con nombre definida por el usuario, se usará el nombre especificado.
La ruta de acceso predeterminada de los archivos binarios de Python es:
C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\PYTHON_SERVICES
Se da por sentado que la instancia predeterminada de SQL es MSSQLSERVER. Si se instala SQL Server como
instancia con nombre definida por el usuario, se usará el nombre especificado.
Para habilitar los scripts externos, ejecute los comandos SQL siguientes:
Ejecute la instrucción SQL siguiente si quiere comprobar la biblioteca predeterminada de la instancia actual. En
este ejemplo se devuelve la lista de carpetas incluidas en la variable sys.path de Python. La lista incluye el
directorio actual y la ruta de acceso de la biblioteca estándar.
EXECUTE sp_execute_external_script
@language =N'Python',
@script=N'import sys; print("\n".join(sys.path))'
Para obtener más información sobre la variable sys.path y cómo se usa para establecer la ruta de acceso de
búsqueda del intérprete para los módulos, consulte The Module Search Path (La ruta de acceso de búsqueda de
un módulo).
NOTE
No intente instalar paquetes de Python directamente en la biblioteca de paquetes SQL con pip o métodos similares. En su
lugar, use sqlmlutils para instalar paquetes en una instancia de SQL. Para obtener más información, vea Instalación de
paquetes de Python con sqlmlutils.
Para obtener información sobre la versión de Python que se incluye, consulte Versiones de Python y R.
Actualizaciones de componentes
De forma predeterminada, los paquetes de Python se actualizan mediante Service Packs y actualizaciones
acumulativas. Los paquetes adicionales y las actualizaciones de versión completa de los componentes
principales de Python solo se pueden conseguir mediante actualizaciones de productos.
EXECUTE sp_execute_external_script
@language = N'Python',
@script = N'
import pkg_resources
import pandas
OutputDataSet = pandas.DataFrame(sorted([(i.key, i.version) for i in pkg_resources.working_set]))'
WITH result sets((Package NVARCHAR(128), Version NVARCHAR(128)));
EXECUTE sp_execute_external_script
@language = N'Python',
@script = N'
import pkg_resources
pkg_name = "scikit-learn"
try:
version = pkg_resources.get_distribution(pkg_name).version
print("Package " + pkg_name + " is version " + version)
except:
print("Package " + pkg_name + " not found")
'
Resultado:
Pasos siguientes
Instalación de paquetes con las herramientas de Python
Instalación de nuevos paquetes de Python con sqlmlutils
Instalación de paquetes de Python con sqlmlutils
27/07/2021 • 8 minutes to read
NOTE
No se pueden actualizar ni desinstalar paquetes que se hayan preinstalado en una instancia de Machine Learning Services
de SQL Managed Instance. Para ver una lista de los paquetes instalados actualmente, vea Enumeración de todos los
paquetes de Python instalados.
Para obtener más información sobre la ubicación de los paquetes y las rutas de acceso de instalación, consulte
Obtención de información de paquetes de Python.
NOTE
El paquete sqlmlutils que se describe en este artículo se usa para agregar paquetes de Python a SQL Server 2019 o
versiones posteriores. Para SQL Server 2017 y versiones anteriores, consulte Instalación de paquetes con las herramientas
de Python.
Prerrequisitos
Debe tener SQL Server Machine Learning Services instalado con la opción de lenguaje Python.
Instale Azure Data Studio en el equipo cliente que usa para conectarse a SQL Server. Puede usar otras
herramientas de consulta o administración de bases de datos, pero en este artículo se da por supuesto
que emplea Azure Data Studio.
Instale el kernel de Python en Azure Data Studio. También puede instalar y usar Python en la línea de
comandos, y utilizar un entorno de desarrollo de Python alternativo como Visual Studio Code con la
extensión de Python.
La versión de Python del equipo cliente debe coincidir con la versión de Python del servidor, y los
paquetes que instale deben ser compatibles con la versión de Python que tenga. Para obtener
información sobre la versión de Python que se incluye con cada versión de SQL Server, vea Versiones de
Python y R.
Para comprobar la versión de Python en una instancia concreta de SQL Server, use el siguiente comando
de T-SQL.
EXECUTE sp_execute_external_script
@language = N'Python',
@script = N'
import sys
print(sys.version)
'
Otras consideraciones
La biblioteca de paquetes de Python se encuentra en la carpeta Archivos de programa de la instancia de
SQL Server y, de forma predeterminada, se requieren permisos de administrador para instalar contenido
en esta carpeta. Para obtener más información, consulte Ubicación de la biblioteca de paquetes.
La instalación del paquete es específica de la instancia, la base de datos y el usuario de SQL especificados
en la información de conexión proporcionada a sqlmlutils . Para usar el paquete en varias instancias o
bases de datos de SQL, o bien para usuarios diferentes, deberá instalar el paquete para cada uno. La
excepción es que si un miembro de dbo instala el paquete, este será público y se compartirá con todos
los usuarios. Si un usuario instala una versión más reciente de un paquete público, este no se verá
afectado, pero ese usuario tendrá acceso a la versión más reciente.
Antes de agregar un paquete, piense si es adecuado para el entorno de SQL Server.
Se recomienda usar Python en la base de datos para las tareas que se benefician de la estrecha
integración con el motor de base de datos, como el aprendizaje automático, en lugar de para las
tareas que simplemente consultan la base de datos.
Si agrega paquetes que ejercen demasiada presión de cálculo en el servidor, el rendimiento se
verá afectado.
En un entorno de SQL Server protegido, probablemente le interese evitar lo siguiente:
Paquetes que requieren acceso a la red
Paquetes que requieren acceso con privilegios elevados al sistema de archivos
Paquetes que se usan para el desarrollo web u otras tareas que no obtienen ningún beneficio al
ejecutarse en SQL Server
No se puede instalar el paquete de Python tensorflow con sqlmlutils. Para obtener más
información y una solución, vea Incidencias conocidas de SQL Server Machine Learning Services.
import sqlmlutils
connection = sqlmlutils.ConnectionInfo(server="server", database="database", uid="username", pwd="password")
sqlmlutils.SQLPackageManager(connection).install("text-tools")
import sqlmlutils
connection = sqlmlutils.ConnectionInfo(server="yourserver", database="yourdatabase", uid="username",
pwd="password"))
sqlmlutils.SQLPackageManager(connection).install("text_tools-1.0.0-py3-none-any.whl")
EXECUTE sp_execute_external_script
@language = N'Python',
@script = N'
from text_tools.finders import find_best_string
corpus = "Lorem Ipsum text"
query = "Ipsum"
first_match = find_best_string(query, corpus)
print(first_match)
'
sqlmlutils.SQLPackageManager(connection).uninstall("text-tools")
Pasos siguientes
Para ver información sobre los paquetes de Python instalados en SQL Server Machine Learning Services,
consulte Obtención de información de paquetes de Python.
Para obtener información sobre cómo instalar paquetes de R en SQL Server Machine Learning Services,
consulte Instalación de nuevos paquetes de R en SQL Server.
Instalación de paquetes con las herramientas de
Python en SQL Server
14/07/2021 • 4 minutes to read
Prerequisites
Debe tener SQL Server Machine Learning Services instalado con la opción de lenguaje Python.
Otras consideraciones
Los paquetes deben ser compatibles con Python 3.5 y ejecutarse en Windows.
La biblioteca de paquetes de Python se encuentra en la carpeta Archivos de programa de la instancia de
SQL Server y, de forma predeterminada, se requieren permisos de administrador para instalar contenido
en esta carpeta. Para obtener más información, consulte Ubicación de la biblioteca de paquetes.
La instalación de paquetes se realiza por instancia. Si tiene varias instancias de Machine Learning
Services, debe agregar el paquete a cada una de ellas.
Los servidores de bases de datos suelen estar bloqueados. En muchos casos, el acceso a Internet está
totalmente bloqueado. En el caso de los paquetes con una larga lista de dependencias, deberá identificar
estas dependencias de antemano y estar listo para instalar manualmente cada una de ellas.
Antes de agregar un paquete, piense si es adecuado para el entorno de SQL Server.
Se recomienda usar Python en la base de datos para las tareas que se benefician de la estrecha
integración con el motor de base de datos, como el aprendizaje automático, en lugar de para las
tareas que simplemente consultan la base de datos.
Si agrega paquetes que ejercen demasiada presión de cálculo en el servidor, el rendimiento se
verá afectado.
En un entorno de SQL Server protegido, probablemente le interese evitar lo siguiente:
Paquetes que requieren acceso a la red
Paquetes que requieren acceso con privilegios elevados al sistema de archivos
Paquetes que se usan para el desarrollo web u otras tareas que no obtienen ningún beneficio al
ejecutarse en SQL Server
IMPORTANT
Asegúrese de obtener la versión de Windows del paquete. Si el archivo termina en .gz, probablemente no sea la versión
correcta.
Para más información sobre las descargas del marco CNTK para varias plataformas y para varias versiones de
Python, consulte el artículo sobre cómo configurar CNTK en un equipo.
Búsqueda de la biblioteca de Python
Busque la ubicación predeterminada de la biblioteca de Python que usa SQL Server. Si ha instalado varias
instancias, busque la carpeta PYTHON_SERVICES para la instancia en la que quiere agregar el paquete.
Por ejemplo, si Machine Learning Services se instaló con los valores predeterminados y el aprendizaje
automático se habilitó en la instancia predeterminada, la ruta de acceso es:
TIP
Para depuraciones y pruebas futuras, es posible que quiera configurar un entorno de Python específico para la biblioteca
de instancias.
NOTE
Si usa Visual Studio 2017 o Visual Studio 2015 con las extensiones de Python, puede ejecutar pip install desde la
ventana Entornos de Python . Haga clic en Paquetes y, en el cuadro de texto, proporcione el nombre o la ubicación del
paquete que quiere instalar. No es necesario escribir pip install , porque se rellena automáticamente.
También puede especificar la dirección URL de un paquete y una versión específicos, por ejemplo:
scripts\pip.exe install https://cntk.ai/PythonWheel/CPU-Only/cntk-2.1-cp35-cp35m-win_amd64.whl
Si el equipo no tiene acceso a Internet, especifique el archivo WHL que descargó anteriormente. Por
ejemplo:
Es posible que se le pida que eleve los permisos para completar la instalación. A medida que progresa la
instalación, puede ver los mensajes de estado en la ventana del símbolo del sistema.
Carga del paquete o sus funciones como parte del script
Una vez completada la instalación, puede empezar a usar el paquete inmediatamente en scripts de Python en
SQL Server.
Para usar las funciones del paquete en el script, inserte la instrucción import <package_name> estándar en las
líneas iniciales del script:
EXECUTE sp_execute_external_script
@language = N'Python',
@script = N'
import cntk
# Python statements ...
'
Consulte también
Obtención de información de paquetes de Python
Tutoriales de Python para SQL Server Machine Learning Services
API de Python para CNTK.
Obtención de información de paquetes de R
15/07/2021 • 5 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
En este artículo se describe cómo obtener información sobre los paquetes de R instalados en Machine Learning
Services en SQL Server y en Clústeres de macrodatos. Los scripts de R de ejemplo muestran cómo mostrar
información de paquetes, como la ruta de instalación y la versión.
En este artículo se describe cómo obtener información sobre los paquetes de R instalados en SQL Server
Machine Learning Services. Los scripts de R de ejemplo muestran cómo mostrar información de paquetes,
como la ruta de instalación y la versión.
En este artículo se describe cómo obtener información sobre los paquetes de R instalados en Machine Learning
Services en Azure SQL Managed Instance. Los scripts de R de ejemplo muestran cómo mostrar información de
paquetes, como la ruta de instalación y la versión.
Se da por sentado que la instancia predeterminada de SQL es MSSQLSERVER. Si se instala SQL Server como
instancia con nombre definida por el usuario, se usará el nombre especificado.
La ruta de acceso predeterminada de los archivos binarios de R es:
C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\library
Se da por sentado que la instancia predeterminada de SQL es MSSQLSERVER. Si se instala SQL Server como
instancia con nombre definida por el usuario, se usará el nombre especificado.
La ruta de acceso predeterminada de los archivos binarios de R es:
C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\R_SERVICES\library
Se da por sentado que la instancia predeterminada de SQL es MSSQLSERVER. Si se instala SQL Server como
instancia con nombre definida por el usuario, se usará el nombre especificado.
Ejecute la siguiente instrucción para comprobar la biblioteca de paquetes de R predeterminada de la instancia
actual:
EXECUTE sp_execute_external_script
@language = N'R',
@script = N'OutputDataSet <- data.frame(.libPaths());'
WITH RESULT SETS (([DefaultLibraryName] VARCHAR(MAX) NOT NULL));
GO
Los siguientes paquetes de R de Microsoft se instalan con SQL Server Machine Learning Services al seleccionar
la característica de R durante la instalación.
Los siguientes paquetes de R de Microsoft se instalan con SQL Server Machine Learning Services al seleccionar
la característica de R durante la instalación.
Actualizaciones de componentes
De forma predeterminada, los paquetes de R se actualizan mediante Service Packs y actualizaciones
acumulativas. Los paquetes adicionales y las actualizaciones de versión completa de los componentes
principales de R solo se pueden conseguir mediante actualizaciones de productos.
Además, puede agregar paquetes de MicrosoftML y olapR a una instancia de SQL Server a través de una
actualización de componente.
IMPORTANT
Nunca debe sobrescribir manualmente la versión de R instalada por el programa de instalación de SQL Server por
versiones más recientes en la web. Los paquetes de Microsoft R se basan en versiones específicas de R. La modificación de
la instalación podría desestabilizarla.
Para obtener más información sobre los campos opcionales y predeterminados del archivo DESCRIPTION del
paquete de R, consulte https://cran.r-project.org.
Búsqueda de un paquete de R
Si ha instalado un paquete de R y quiere asegurarse de que está disponible para una instancia de SQL Server
determinada, puede ejecutar un procedimiento almacenado para cargar el paquete y devolver los mensajes.
Por ejemplo, la siguiente instrucción busca y carga el paquete glue, si está disponible. Si no se puede encontrar o
cargar el paquete, obtendrá un error.
EXECUTE sp_execute_external_script
@language =N'R',
@script=N'
require("glue")
'
Para ver más información sobre el paquete, consulte packageDescription . La siguiente instrucción devuelve
información del paquete MicrosoftML .
EXECUTE sp_execute_external_script
@language = N'R',
@script = N'
print(packageDescription("MicrosoftML"))
'
Pasos siguientes
Instalación de paquetes con herramientas de R
Instalación de nuevos paquetes de R con sqlmlutils
Instalación de paquetes con herramientas de R
14/07/2021 • 4 minutes to read
Consideraciones generales
El código de R que se ejecuta en SQL Server solo puede usar los paquetes instalados en la biblioteca de
instancia predeterminada. SQL Server no puede cargar paquetes de bibliotecas externas, aunque la
biblioteca esté en el mismo equipo. Esto incluye las bibliotecas de R instaladas con otros productos de
Microsoft.
La biblioteca de paquetes de R se encuentra en la carpeta Archivos de programa de la instancia de
SQL Server y, de forma predeterminada, se requieren permisos de administrador para instalar contenido
en esta carpeta. Para obtener más información, consulte Ubicación de la biblioteca de paquetes.
Los usuarios que no son administradores pueden instalar paquetes mediante RevoScaleR 9.0.1 y
versiones posteriores, o bien mediante CREATE EXTERNAL LIBRARY. El usuario dbo_owner , o un usuario
con permiso CREATE EXTERNAL LIBRARY, puede instalar paquetes de R en la base de datos actual. Para
más información, consulte:
Uso de RevoScaleR para instalar paquetes de R
Uso de T-SQL (CREATE EXTERNAL LIBRARY) para instalar paquetes de R en SQL Server
Los usuarios que no son administradores pueden instalar paquetes mediante RevoScaleR 9.0.1 y
versiones posteriores. El usuario dbo_owner puede instalar paquetes de R en la base de datos actual.
Para obtener más información, vea Uso de RevoScaleR para instalar paquetes de R.
En un entorno de SQL Server protegido, probablemente le interese evitar lo siguiente:
Paquetes que requieren acceso a la red
Paquetes que requieren acceso con privilegios elevados al sistema de archivos
Paquetes que se usan para el desarrollo web u otras tareas que no obtienen ningún beneficio al
ejecutarse en SQL Server
Por ejemplo, la ruta de acceso predeterminada para una instancia predeterminada de SQL Server es la
siguiente:
C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\bin\x64\
Por ejemplo, la ruta de acceso predeterminada para una instancia predeterminada de SQL Server es la
siguiente:
C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\bin\x64\
Este comando extrae el paquete de R mynewpackage de su archivo comprimido local e instala el paquete.
Si el paquete tiene dependencias, el instalador comprueba si hay paquetes existentes en la biblioteca. Si
ha creado un repositorio que incluye las dependencias, el instalador instala también los paquetes
necesarios.
NOTE
Si los paquetes necesarios no están presentes en la biblioteca de instancias y no se encuentran en los archivos
comprimidos, se produce un error en la instalación del paquete de destino.
Consulte también
Obtención de información de paquetes de R
Sugerencias para usar paquetes de R
Tutoriales de lenguaje R de SQL Server
Instalación de paquetes de R con sqlmlutils
14/07/2021 • 9 minutes to read
NOTE
El paquete sqlmlutils que se describe en este artículo se usa para agregar paquetes de R a SQL Server 2019 o versiones
posteriores. Respecto a SQL Server 2017 y versiones anteriores, vea Instalación de paquetes con herramientas de R.
En este artículo se describe cómo usar las funciones del paquete sqlmlutils para instalar paquetes de R en una
instancia de Machine Learning Services en Azure SQL Managed Instance. Los paquetes que se instalen podrán
usarse en los scripts de R que se ejecutan en la base de datos mediante la instrucción T-SQL
sp_execute_external_script.
Prerrequisitos
Instale R y RStudio Desktop en el equipo cliente que usa para conectarse a SQL Server. Puede usar
cualquier IDE de R para ejecutar scripts, pero en este artículo se da por supuesto que es RStudio.
La versión de R en el equipo cliente debe coincidir con la del servidor, y los paquetes que instale deben
ser compatibles con la versión de R que tenga. Para obtener información sobre la versión de R que se
incluye con cada versión de SQL Server, consulte Versiones de Python y R.
Para comprobar la versión de R en una instancia concreta de SQL Server, use el siguiente comando de T-
SQL.
Instale Azure Data Studio en el equipo cliente que usa para conectarse a SQL Server. Puede usar otras
herramientas de consulta o administración de bases de datos, pero en este artículo se da por supuesto
que emplea Azure Data Studio.
Otras consideraciones
La instalación del paquete es específica de la instancia, la base de datos y el usuario de SQL especificados
en la información de conexión proporcionada a sqlmlutils . Para usar el paquete en varias instancias o
bases de datos de SQL, o bien para usuarios diferentes, deberá instalar el paquete para cada uno. La
excepción es que si un miembro de dbo instala el paquete, este será público y se compartirá con todos
los usuarios. Si un usuario instala una versión más reciente de un paquete público, este no se verá
afectado, pero ese usuario tendrá acceso a la versión más reciente.
El script de R que se ejecuta en SQL Server solo puede usar los paquetes instalados en la biblioteca de
instancia predeterminada. SQL Server no puede cargar paquetes de bibliotecas externas, aunque la
biblioteca esté en el mismo equipo. Esto incluye las bibliotecas de R instaladas con otros productos de
Microsoft.
En un entorno de SQL Server protegido, probablemente le interese evitar lo siguiente:
Paquetes que requieren acceso a la red
Paquetes que requieren acceso con privilegios elevados al sistema de archivos
Paquetes que se usan para el desarrollo web u otras tareas que no obtienen ningún beneficio al
ejecutarse en SQL Server
R.exe -e "install.packages('odbc')"
R.exe CMD INSTALL sqlmlutils_1.0.0.tar.gz
library("miniCRAN")
CRAN_mirror <- c(CRAN = "https://cran.microsoft.com")
local_repo <- "odbc"
pkgs_needed <- "odbc"
pkgs_expanded <- pkgDep(pkgs_needed, repos = CRAN_mirror);
Para el valor Rversion , use la versión de R instalada en SQL Server. Para comprobar la versión instalada,
use el siguiente comando de T-SQL.
3. Descargue el archivo sqlmlutils más reciente ( .zip para Windows, .tar.gz para Linux) de
https://github.com/microsoft/sqlmlutils/releases. No expanda el archivo.
4. Copie toda la carpeta del repositorio odbc y el archivo sqlmlutils en el equipo cliente.
En el equipo cliente que usa para conectarse a SQL Server:
1. Abra un símbolo del sistema.
2. Ejecute los comandos siguientes para instalar odbc y, después, sqlmlutils . Sustituya las rutas de acceso
completas a la carpeta del repositorio odbc y el archivo sqlmlutils que ha copiado en este equipo.
TIP
El ámbito puede ser PÚBLICO o PRIVADO . El ámbito público es útil para que el administrador de bases de
datos instale paquetes que todos los usuarios pueden usar. El ámbito privado hace que el paquete esté disponible
solo para el usuario que lo instala. Si no especifica el ámbito, el ámbito predeterminado es PRIVADO .
library("miniCRAN")
CRAN_mirror <- c(CRAN = "https://cran.microsoft.com")
local_repo <- "c:/downloads/glue"
pkgs_needed <- "glue"
pkgs_expanded <- pkgDep(pkgs_needed, repos = CRAN_mirror);
library("miniCRAN")
CRAN_mirror <- c(CRAN = "https://cran.microsoft.com")
local_repo <- "c:/downloads/glue"
pkgs_needed <- "glue"
pkgs_expanded <- pkgDep(pkgs_needed, repos = CRAN_mirror);
Para el valor Rversion , use la versión de R instalada en SQL Server. Para comprobar la versión instalada,
use el siguiente comando de T-SQL.
2. Copie toda la carpeta del repositorio de glue ( c:\downloads\glue ) en el equipo cliente. Por ejemplo,
cópiela en la carpeta c:\temp\packages\glue .
En el equipo cliente:
1. Abra RStudio y cree un nuevo archivo de script de R .
2. Use el siguiente script de R para instalar el paquete de glue mediante sqlmlutils . Sustituya su propia
información de conexión de base de datos de SQL Server (si no usa la autenticación de Windows,
agregue los parámetros uid y pwd ).
library(sqlmlutils)
connection <- connectionInfo(
server= "yourserver",
database = "yourdatabase")
localRepo = "c:/temp/packages/glue"
TIP
El ámbito puede ser PÚBLICO o PRIVADO . El ámbito público es útil para que el administrador de bases de
datos instale paquetes que todos los usuarios pueden usar. El ámbito privado hace que el paquete esté disponible
solo para el usuario que lo instala. Si no especifica el ámbito, el ámbito predeterminado es PRIVADO .
print(text)
';
Resultados
library(sqlmlutils)
help("sql_install.packages")
Pasos siguientes
Para obtener información sobre los paquetes de R instalados, consulte Obtener información de paquetes de
R.
Para obtener ayuda para trabajar con paquetes de R, consulte Sugerencias para usar paquetes de R.
Para obtener información sobre la instalación de paquetes de Python, consulte Instalación de paquetes de
Python con PIP.
Para obtener más información sobre SQL Server Machine Learning Services, consulte ¿Qué es SQL Server
Machine Learning Services (Python y R)?
Uso de T-SQL (CREATE EXTERNAL LIBRARY) para
instalar paquetes de R en SQL Server
14/07/2021 • 2 minutes to read
No se puede usar un nombre arbitrario; el nombre de la biblioteca externa debe tener el mismo nombre que se
espera usar al cargar o llamar al paquete.
EXEC sp_execute_external_script
@language =N'R',
@script=N'library(randomForest)'
Consulte también
Obtención de información de paquetes de R
Tutoriales de R
Uso de RevoScaleR para instalar paquetes de R
15/07/2021 • 7 minutes to read
F UN C IÓ N DESC RIP C IÓ N
Prerrequisitos
Administración remota habilitada en SQL Server. Para más información, vea Habilitación de la
administración de paquetes de R remota en SQL Server.
Las versiones de RevoScaleR son las mismas en los entornos de cliente y servidor. Para más información,
vea Obtener información sobre paquetes de R.
Tiene permiso para conectarse al servidor y a una base de datos, y para ejecutar comandos de R. Debe
ser miembro de un rol de base de datos que le permite instalar paquetes en la instancia y la base de
datos especificadas.
Los usuarios del ámbito compar tido pueden instalarse por los usuarios que pertenecen al rol
rpkgs-shared en una base de datos especificada. Todos los usuarios de este rol pueden desinstalar
paquetes compartidos.
Los usuarios del ámbito privado pueden instalarse por cualquier usuario que pertenezca al rol
rpkgs-private en una base de datos. Sin embargo, los usuarios solo pueden ver y desinstalar sus
propios paquetes.
Los propietarios de bases de datos pueden trabajar con paquetes compartidos o privados.
Conexiones de cliente
IMPORTANT
La compatibilidad con Machine Learning Server (anteriormente conocido como R Server) finalizará el 1 de julio de 2022.
Para obtener más información, consulte ¿Qué sucederá con Machine Learning Server?
Una estación de trabajo cliente puede ser Microsoft R Client o Microsoft Machine Learning Server (los científicos
de datos suelen usar la edición gratuita para desarrolladores) en la misma red.
Al llamar a las funciones de administración de paquetes desde un cliente remoto de R, debe crear primero un
objeto de contexto de proceso mediante la función RxInSqlServer. A partir de ese momento, para cada función
de administración de paquetes que use, pase el contexto de proceso como argumento.
La identidad del usuario se especifica normalmente al establecer el contexto de proceso. Si no especifica un
nombre de usuario y una contraseña al crear el contexto de proceso, se usa la identidad del usuario que ejecuta
el código de R.
1. En una línea de comandos de R, defina una cadena de conexión para la instancia y la base de datos.
2. Use el constructor RxInSqlServer para definir un contexto de proceso de SQL Server, usando la cadena de
conexión.
3. Cree una lista de los paquetes que desea instalar y guarde la lista en una variable de cadena.
4. Llame a rxInstallPackages y pase el contexto de proceso y la variable de cadena que contiene los nombres
de paquete.
Si se requieren paquetes dependientes, también se instalan, suponiendo que haya una conexión a
Internet disponible en el cliente.
Los paquetes se instalan con las credenciales del usuario que realiza la conexión, en el ámbito
predeterminado para ese usuario.
Ejemplos
En esta sección se ofrecen ejemplos de uso de estas funciones desde un cliente remoto al conectarse a una
instancia o base de datos de SQL Server como contexto de proceso.
Para todos los ejemplos, debe proporcionar una cadena de conexión o un contexto de proceso, lo cual requiere
una cadena de conexión. En este ejemplo se proporciona una manera de crear un contexto de proceso para
SQL Server:
Dependiendo de dónde se encuentre el servidor y del modelo de seguridad, es posible que deba proporcionar
una especificación de dominio y subred en la cadena de conexión, o bien usar un inicio de sesión de SQL. Por
ejemplo:
Resultados
"C:/Program Files/Microsoft SQL Server/MSSQL14.MSSQLSERVER/R_SERVICES/library/RevoScaleR"
TIP
Si ha habilitado la opción para ver la salida de la consola SQL, puede obtener mensajes de estado de la función que
precede a la instrucción print . Una vez que haya terminado de probar el código, establezca consoleOutput en FALSE
en el constructor de contexto de proceso para eliminar los mensajes.
# Synchronize the packages in the file system for all scopes and users
rxSyncPackages(computeContext=computeContext, verbose=TRUE)
La sincronización de paquetes funciona en cada base de datos y para cada usuario. Para obtener más
información, consulte Sincronización de paquete de R para SQL Server.
Uso de un procedimiento almacenado para enumerar paquetes en SQL Server
Ejecute este comando desde Management Studio u otra herramienta que admita T-SQL para obtener una lista
de los paquetes instalados en la instancia actual, utilizando rxInstalledPackages en un procedimiento
almacenado.
EXEC sp_execute_external_script
@language=N'R',
@script=N'
myPackages <- rxInstalledPackages();
OutputDataSet <- as.data.frame(myPackages);
'
La función rxSqlLibPaths se puede utilizar para determinar la biblioteca activa utilizada por SQL Server
Machine Learning Services. Este script solo puede devolver la ruta de acceso de la biblioteca del servidor actual.
declare @instance_name nvarchar(100) = @@SERVERNAME, @database_name nvarchar(128) = db_name();
exec sp_execute_external_script
@language = N'R',
@script = N'
connStr <- paste("Driver=SQL Server;Server=", instance_name, ";Database=", database_name,
";Trusted_Connection=true;", sep="");
.libPaths(rxSqlLibPaths(connStr));
print(.libPaths());
',
@input_data_1 = N'',
@params = N'@instance_name nvarchar(100), @database_name nvarchar(128)',
@instance_name = @instance_name,
@database_name = @database_name;
Consulte también
Habilitación de la administración de paquetes de R remota
Sincronización de paquetes de R
Sugerencias para usar paquetes de R
Obtención de información de paquetes de R
Habilitación o deshabilitación de la administración
remota de paquetes para SQL Server
14/07/2021 • 3 minutes to read
IMPORTANT
La compatibilidad con Machine Learning Server (anteriormente conocido como R Server) finalizará el 1 de julio de 2022.
Para obtener más información, consulte ¿Qué sucederá con Machine Learning Server?
En este artículo se describe cómo habilitar la administración remota de paquetes de R desde una estación de
trabajo cliente o un servidor Machine Learning Server diferente. Una vez habilitada la característica de
administración de paquetes en SQL Server, puede usar comandos de RevoScaleR en un cliente para instalar
paquetes en SQL Server.
De forma predeterminada, la característica de administración de paquetes externos para SQL Server está
deshabilitada. Debe ejecutar un script independiente para habilitar la característica como se describe en la
sección siguiente.
Este comando crea objetos de nivel de instancia en el equipo de SQL Server que son necesarios para la
administración de paquetes. También reinicia Launchpad para la instancia.
Si no especifica una instancia, se usa la instancia predeterminada. Si no especifica un usuario, se usa el
contexto de seguridad actual. Por ejemplo, el siguiente comando habilita la administración de paquetes
en la instancia predeterminada, con las credenciales del usuario que abrió el símbolo del sistema:
REgisterRExt.exe /install pkgmgmt
3. Para agregar la administración a una base de datos específica, ejecute el comando siguiente desde un
símbolo del sistema con privilegios elevados:
RegisterRExt.exe /install pkgmgmt /database:databasename [/instance:name] [/user:username]
[/password:*|password]
Este comando crea algunos artefactos de base de datos, incluidos los siguientes roles de base de datos
que se usan para controlar los permisos de usuario: rpkgs-users , rpkgs-private y rpkgs-shared .
Por ejemplo, el siguiente comando habilita la administración de paquetes en la base de datos, en la
instancia predeterminada. Si no especifica un usuario, se usa el contexto de seguridad actual.
RegisterRExt.exe /install pkgmgmt /database:TestDB
4. Repita el comando para cada base de datos en la que se deben instalar los paquetes.
5. Para comprobar que los nuevos roles se han creado correctamente, en SQL Server Management Studio,
haga clic en la base de datos, expanda Seguridad y expanda Roles de base de datos .
También puede ejecutar una consulta en sys.database_principals como la siguiente:
Después de habilitar esta característica, puede usar la función RevoScaleR para instalar o desinstalar paquetes
desde un cliente remoto de R.
Este comando quita los objetos de base de datos relacionados con la administración de paquetes de la
base de datos especificada. También quita todos los paquetes que se instalaron desde la ubicación del
sistema de archivos protegido en el equipo de SQL Server.
2. Repita este comando en cada base de datos en la que se usara la administración de paquetes.
3. (Opcional) Después de quitar los paquetes de todas las bases de datos mediante el paso anterior, ejecute
el siguiente comando desde un símbolo del sistema con privilegios elevados:
RegisterRExt.exe /uninstall pkgmgmt [/instance:name] [/user:username] [/password:*|password]
Este comando quita la característica de administración de paquetes de la instancia. Es posible que tenga
que reiniciar manualmente el servicio Launchpad una vez más para ver los cambios.
Pasos siguientes
Uso de RevoScaleR para instalar paquetes de R
Obtención de información de paquetes de R
Sugerencias para usar paquetes de R
Sincronización de un paquete de R para
SQL Server
15/07/2021 • 5 minutes to read
Requisitos
Para poder usar la sincronización de paquetes, debe tener la versión adecuada de Microsoft R. Esta característica
se proporciona en la versión 9.1.0 o posteriores de Microsoft R.
También debe habilitar la característica de administración de paquetes en el servidor.
Determinación de si el servidor es compatible con la administración de paquetes
Esta característica está disponible en SQL Server 2017 CTP 2 o posterior.
Habilitación de la característica de administración de paquetes
El uso de la sincronización de paquetes requiere que la nueva característica de administración de paquetes esté
habilitada en la instancia de SQL Server y en las bases de datos individuales. Para más información, vea
Habilitación o deshabilitación de la administración de paquetes para SQL Server.
1. El administrador del servidor habilita la característica para la instancia de SQL Server.
2. Para cada base de datos, el administrador concede a los usuarios individuales la capacidad de instalar o
compartir paquetes de R mediante roles de base de datos.
Una vez hecho esto, puede usar las funciones de RevoScaleR, como rxInstallPackages, para instalar paquetes en
una base de datos. La información sobre los usuarios y los paquetes que pueden usar se almacena en la
instancia de SQL Server.
Siempre que se agrega un nuevo paquete mediante las funciones de administración de paquetes, se actualizan
los registros de SQL Server y del sistema de archivos. Esta información se puede usar para restaurar
información de paquetes para toda la base de datos.
Permisos
La persona que ejecuta la función de sincronización de paquetes debe ser una entidad de seguridad en la
instancia de SQL Server y en la base de datos que contiene los paquetes.
El autor de la llamada de la función debe ser miembro de uno de estos roles de administración de
paquetes: rpkgs-shared o rpkgs-private .
Para sincronizar los paquetes marcados como compar tidos , la persona que ejecuta la función debe ser
miembro del rol rpkgs-shared y los paquetes que se van a migrar deben haberse instalado en una
biblioteca de ámbito compartido.
Para sincronizar los paquetes marcados como privados , el propietario del paquete o el administrador
deben ejecutar la función y los paquetes deben ser privados.
Para sincronizar paquetes en nombre de otros usuarios, el propietario debe ser miembro del rol de base
de datos db_owner .
#Shared scope
rxSyncPackages(computeContext=computeContext, scope="shared", verbose=TRUE)
#Private scope
rxSyncPackages(computeContext=computeContext, scope="private", verbose=TRUE)
Recursos relacionados
Administración de paquetes de R para SQL Server
Creación de un repositorio de paquetes de R local
mediante miniCRAN
14/07/2021 • 6 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
En este artículo se describe cómo instalar paquetes de R sin conexión mediante miniCRAN para crear un
repositorio local de paquetes y dependencias. miniCRAN identifica y descarga paquetes y dependencias en una
única carpeta que se copia en otros equipos para la instalación de paquetes de R sin conexión.
Puede especificar uno o más paquetes, y miniCRAN lee de forma recursiva el árbol de dependencias para estos
paquetes. A continuación, descarga solo los paquetes enumerados y sus dependencias de CRAN o repositorios
similares.
Una vez terminado, miniCRAN crea un repositorio internamente coherente que consta de los paquetes
seleccionados y de todas las dependencias necesarias. Puede trasladar este repositorio local al servidor y pasar
a instalar los paquetes sin conexión a Internet.
Los usuarios con experiencia en R suelen buscar la lista de paquetes dependientes en el archivo DESCRIPTION
de un paquete descargado. Sin embargo, los paquetes enumerados en Impor taciones pueden tener
dependencias de segundo nivel. Por esta razón, recomendamos miniCRAN para ensamblar la colección
completa de paquetes necesarios.
Instalación de miniCRAN
El propio paquete de miniCRAN depende de otros 18 paquetes de CRAN, entre los que se encuentra el paquete
de RCurl , que tiene una dependencia de sistema en el paquete de curl-devel . De forma similar, el paquete de
XML tiene una dependencia en libxml2-devel . Para resolver las dependencias, recomendamos compilar el
repositorio local inicialmente en una máquina con acceso a Internet completo.
Ejecute los comandos siguientes en un equipo con una base de R, herramientas de R y conexión a Internet. Se
supone que este no es su equipo con SQL Server. Mediante los comandos siguientes, se instalan los paquetes de
miniCRAN e igraph . En este ejemplo se comprueba si el paquete ya está instalado, pero se pueden omitir las
instrucciones if e instalar los paquetes directamente.
if(!require("miniCRAN")) install.packages("miniCRAN")
if(!require("igraph")) install.packages("igraph")
library("miniCRAN")
plot(makeDepGraph(pkgs_needed))
A partir de esta información, el paquete de miniCRAN crea la estructura de carpetas necesaria para copiar
los paquetes en SQL Server más adelante.
En este punto, debe tener una carpeta que contenga los paquetes que necesita y los paquetes adicionales
necesarios. La carpeta debe contener una colección de paquetes comprimidos. No descomprima los paquetes ni
cambie el nombre de los archivos.
Opcionalmente, ejecute el código siguiente para enumerar los paquetes contenidos en el repositorio local de
miniCRAN.
NOTE
El método recomendado para instalar paquetes es usar sqlmlutils . Consulte Instalación de nuevos paquetes de R con
sqlmlutils.
En este procedimiento, se supone que una carpeta está fuera de la unidad raíz.
2. Abra una herramienta de R asociada a la instancia (por ejemplo, puede usar Rgui.exe). Haga clic con el
botón derecho y seleccione Ejecutar como administrador para permitir que la herramienta realice
actualizaciones en el sistema.
Por ejemplo, la ubicación de archivo predeterminada para RGUI es
C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\bin\x64 .
Por ejemplo,
Por ejemplo,
En este ejemplo, se supone que ha copiado el repositorio en una carpeta temporal del servidor.
5. Dado que está trabajando en una nueva área de trabajo de R en el servidor, también debe proporcionar la
lista de paquetes que se van a instalar.
6. Instale los paquetes y proporcione la ruta de acceso a la copia local del repositorio de miniCRAN.
7. Desde la biblioteca de instancias, puede ver los paquetes instalados con un comando similar al siguiente:
installed.packages()
Consulte también
Obtención de información de paquetes de R
Tutoriales de R
Sugerencias para usar paquetes de R
14/07/2021 • 4 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
En este artículo se proporcionan sugerencias útiles sobre el uso de paquetes de R en SQL Server. Estas
sugerencias están destinadas a administradores de bases de datos que no están familiarizados con R y a
desarrolladores de R experimentados que no están familiarizados con el acceso a paquetes en una instancia de
SQL Server.
library("c:/Users/<username>/R/win-library/packagename")
Esto no funciona cuando se ejecutan soluciones de R en SQL Server, ya que los paquetes de R deben instalarse
en una biblioteca específica predeterminada que esté asociada a la instancia. Cuando un paquete no está
disponible en la biblioteca predeterminada, aparece este error al intentar llamar al paquete:
Error in library(xxx): there is no package called 'xxx' (Error en la biblioteca (xxx): no hay ningún paquete llamado
"xxx")
Para obtener información sobre cómo instalar paquetes de R en SQL Server, consulte Instalación de nuevos
paquetes de R en SQL Server Machine Learning Services o SQL Server R Services.
Cómo evitar los errores de tipo "paquete no encontrado"
Si sigue las instrucciones que se indican a continuación, podrá evitar los errores de tipo "paquete no
encontrado".
Elimine las dependencias de las bibliotecas de usuario.
Instalar los paquetes de R necesarios en una biblioteca de usuario personalizada es una práctica de
desarrollo incorrecta. Esto puede provocar errores si otro usuario que no tiene acceso a la ubicación de la
biblioteca ejecuta una solución.
Además, si un paquete está instalado en la biblioteca predeterminada, el tiempo de ejecución de R lo
cargará desde la biblioteca predeterminada, aunque se haya especificado una versión diferente en el
código de R.
Asegúrese de que el código pueda ejecutarse en un entorno compartido.
Evite instalar paquetes como parte de una solución. Si no tiene permisos para instalar paquetes, se
producirá un error en el código. Incluso aunque tenga permisos para instalar paquetes, debe hacerlo por
separado del resto de código que quiera ejecutar.
Comprobar el código para asegurarse de que no hay ninguna llamada a paquetes no instalados.
Actualice el código para quitar las referencias directas a las rutas de acceso de paquetes de R o
bibliotecas de R.
Sepa qué biblioteca de paquetes está asociada a la instancia. Para más información, vea Obtener
información sobre paquetes de R.
Vea también
Instalación de paquetes con herramientas de R
Instalación de nuevos paquetes de R con sqlmlutils
Supervisar la ejecución de scripts de R y Python
mediante informes personalizados en SQL Server
Management Studio
14/07/2021 • 2 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
Use informes personalizados en SQL Server Management Studio (SSMS) para supervisar la ejecución de scripts
externos (Python y R) y de los recursos usados, diagnosticar problemas y ajustar el rendimiento en SQL Server
Machine Learning Services.
En estos informes, puede ver detalles como:
Sesiones activas de R o Python
Opciones de configuración de la instancia
Estadísticas de ejecución para trabajos de aprendizaje automático
Eventos extendidos para R Services
Lista de paquetes de Python o R instalados en la instancia actual
En este artículo se explica cómo instalar y usar los informes personalizados proporcionados para SQL Server
Machine Learning Services.
Para obtener más información sobre los informes de SQL Server Management Studio, vea Informes
personalizados en Management Studio.
NOTE
No se admite el informe personalizado ML Ser vices: configuración de instancia no es compatible con
Azure SQL Managed Instance.
Informes
El repositorio de informes personalizados de SSMS en GitHub incluye los siguientes informes:
IN F O RM E DESC RIP C IÓ N
Eventos extendidos Eventos extendidos que están disponibles para obtener más
información sobre la ejecución de scripts externos.
Pasos siguientes
Supervisar SQL Server Machine Learning Services mediante vistas de administración dinámica (DMV)
Supervisar scripts de R y Python con eventos extendidos en SQL Server Machine Learning Services
Supervisar SQL Server Machine Learning Services
mediante vistas de administración dinámica (DMV)
14/07/2021 • 10 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
Use las vistas de administración dinámica (DMV) para supervisar la ejecución de scripts externos (Python y R) y
de los recursos usados, diagnosticar problemas y ajustar el rendimiento en SQL Server Machine Learning
Services.
En este artículo, encontrará las DMV específicas de SQL Server Machine Learning Services. También encontrará
consultas de ejemplo que muestran:
Valores y opciones de configuración para el aprendizaje automático
Sesiones activas que ejecutan scripts externos de Python o R
Estadísticas de ejecución del runtime externo para Python y R
Contadores de rendimiento para scripts externos
Uso de memoria para el sistema operativo, SQL Server y los grupos de recursos externos
Configuración de la memoria para SQL Server y los grupos de recursos externos
Grupos de recursos de Resource Governor, que incluyen los grupos de recursos externos
Paquetes instalados para Python y R
Para obtener más información general sobre las DMV, vea Vistas de administración dinámica del sistema.
TIP
También puede usar los informes personalizados para supervisar SQL Server Machine Learning Services. Para más
información, vea Monitor machine learning using custom reports in Management Studio (Supervisar el aprendizaje
automático mediante informes personalizados en Management Studio).
VISTA DE A DM IN IST RA C IÓ N
DIN Á M IC A T IP O DESC RIP C IÓ N
Para obtener información sobre la supervisión de instancias de SQL Server, vea Catalog Views (Vistas de
catálogo) y Resource Governor Related Dynamic Management Views (Vistas de administración dinámica
relacionadas con el regulador de recursos).
Valores y configuración
Vea la configuración de la instalación de Machine Learning Services y las opciones de configuración.
Ejecute la consulta siguiente para obtener este resultado. Para obtener más información sobre las vistas y
funciones usadas, vea sys.dm_server_registry, sys.configurations y SERVERPROPERTY.
SELECT CAST(SERVERPROPERTY('IsAdvancedAnalyticsInstalled') AS INT) AS IsMLServicesInstalled
, CAST(value_in_use AS INT) AS ExternalScriptsEnabled
, COALESCE(SIGN(SUSER_ID(CONCAT (
CAST(SERVERPROPERTY('MachineName') AS NVARCHAR(128))
, '\SQLRUserGroup'
, CAST(serverproperty('InstanceName') AS NVARCHAR(128))
))), 0) AS ImpliedAuthenticationEnabled
, COALESCE((
SELECT CAST(r.value_data AS INT)
FROM sys.dm_server_registry AS r
WHERE r.registry_key LIKE 'HKLM\Software\Microsoft\Microsoft SQL Server\%\SuperSocketNetLib\Tcp'
AND r.value_name = 'Enabled'
), - 1) AS IsTcpEnabled
FROM sys.configurations
WHERE name = 'external scripts enabled';
C O L UM N A DESC RIP C IÓ N
Sesiones activas
Vea las sesiones activas que ejecutan scripts externos.
Ejecute la consulta siguiente para obtener este resultado. Para obtener más información sobre las vistas de
administración dinámica utilizadas, vea sys.dm_exec_requests, sys.dm_external_script_requests y
sys.dm_exec_sessions.
Estadísticas de ejecución
Consulte las estadísticas de ejecución del runtime externo para R y Python. En la actualidad, solo están
disponibles las estadísticas de las funciones de paquete RevoScaleR, revoscalepy o microsoftml.
Ejecute la consulta siguiente para obtener este resultado. Para obtener más información sobre la vista de
administración dinámica utilizada, vea sys.dm_external_script_execution_stats. La consulta solo devuelve
funciones que se han ejecutado más de una vez.
C O L UM N A DESC RIP C IÓ N
Contadores de rendimiento
Consulte los contadores de rendimiento relacionados con la ejecución de scripts externos.
Ejecute la consulta siguiente para obtener este resultado. Para obtener más información sobre la vista de
administración dinámica utilizada, vea sys.dm_os_performance_counters.
C O N TA DO R DESC RIP C IÓ N
Autenticación implícita. Inicios de sesión Número de veces que se ha realizado una llamada de bucle
invertido ODBC mediante autenticación implícita (es decir, el
SQL Server ha ejecutado la llamada en nombre del usuario
que ha enviado la solicitud de script).
Errores de ejecución Número de veces que los scripts informaron de errores. Este
recuento no incluye errores de R o Python.
Uso de la memoria
Vea información sobre la memoria usada por el sistema operativo, SQL Server y los grupos externos.
Ejecute la consulta siguiente para obtener este resultado. Para obtener más información sobre las vistas de
administración dinámica utilizadas, vea sys.dm_resource_governor_external_resource_pools y
sys.dm_os_sys_info.
C O L UM N A DESC RIP C IÓ N
Configuración de la memoria
Consulte información sobre la configuración de la memoria máxima en porcentaje de SQL Server y los grupos
de recursos externos. Si SQL Server se está ejecutando con el valor predeterminado de max server memory (MB) ,
se considera un 100 % de la memoria del sistema operativo.
Ejecute la consulta siguiente para obtener este resultado. Para obtener más información sobre las vistas
utilizadas, vea sys.configurations y sys.dm_resource_governor_external_resource_pools.
C O L UM N A DESC RIP C IÓ N
Grupos de recursos
En Resource Governor de SQL Server, un grupo de recursos representa un subconjunto de los recursos físicos
de una instancia. Puede especificar los límites en la cantidad de CPU, E/S física y memoria que las solicitudes de
aplicaciones entrantes, incluida la ejecución de scripts externos, pueden usar en el conjunto de recursos. Vea los
grupos de recursos usados para SQL Server y los scripts externos.
Ejecute la consulta siguiente para obtener este resultado. Para obtener más información sobre las vistas de
administración dinámica utilizadas, vea sys.dm_resource_governor_resource_pools y
sys.dm_resource_governor_external_resource_pools.
Paquetes instalados
Puede ver los paquetes de R y Python instalados en SQL Server Machine Learning Services ejecutando un script
de R o Python que los genere.
Paquetes de R instalados
Vea los paquetes de R instalados en SQL Server Machine Learning Services.
Ejecute la consulta siguiente para obtener este resultado. En la consulta usa un script de R para determinar los
paquetes de R instalados con SQL Server.
C O L UM N A DESC RIP C IÓ N
Ejecute la consulta siguiente para obtener este resultado. En la consulta usa un script de Python para determinar
los paquetes de Python instalados con SQL Server.
C O L UM N A DESC RIP C IÓ N
Pasos siguientes
Eventos ampliados de aprendizaje automático
Vistas de administración dinámica relacionadas con Resource Governor
Vistas de administración dinámica del sistema
Supervisar Machine Learning con informes personalizados en Management Studio
Supervisar scripts de Python o R con eventos
extendidos en SQL Server Machine Learning
Services
14/07/2021 • 7 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
Obtenga información sobre cómo usar eventos extendidos para supervisar y solucionar problemas de
operaciones relacionadas con los scripts externos de trabajos de Python o R, SQL Server Machine Learning
Services y SQL Server Launchpad.
Para obtener más información sobre cómo usar eventos extendidos, vea Herramientas de eventos extendidos.
satellite_data_receive_completion Se activa cuando se reciben todos los Se activa solo desde procesos externos.
datos que necesita una consulta a Consulte las instrucciones sobre la
través de una conexión subsidiaria. colección de eventos desde procesos
externos.
satellite_schema_sent Se activa cuando se envía un mensaje Se activa solo desde procesos externos.
de esquema a través de la conexión Consulte las instrucciones sobre la
subsidiaria. colección de eventos desde procesos
externos.
IMPORTANT
A partir de SQL Server 2019, el mecanismo de aislamiento ha cambiado. Por lo tanto, debe conceder los permisos
adecuados al directorio donde se almacena el archivo de configuración de seguimiento de eventos. Para más información
sobre cómo establecer estos permisos, consulte la sección sobre los permisos de archivo en SQL Server 2019 en
Windows: Cambios de aislamiento para Machine Learning Services.
Para configurar el seguimiento, edite el marcador de posición nombre sesión, el marcador de posición del
nombre de archivo ( [SessionName].xel ) y los nombres de los eventos que quiere capturar (por ejemplo,
[XEvent Name 1] , [XEvent Name 1] ).
Es posible que aparezca cualquier número de etiquetas de paquete de eventos y se recopilarán siempre que
el atributo de nombre sea correcto.
Ejemplo: Capturar eventos de Launchpad
En el siguiente ejemplo se muestra la definición de un seguimiento de eventos para el servicio Launchpad:
Pasos siguientes
Supervisar la ejecución de scripts de Python y R mediante informes personalizados en SQL Server
Management Studio
Supervisar SQL Server Machine Learning Services mediante vistas de administración dinámica (DMV)
Supervisar instrucciones de T-SQL PREDICT con
eventos extendidos en SQL Server Machine
Learning Services
14/07/2021 • 2 minutes to read
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores de Instancia administrada de Azure SQL
Obtenga información sobre cómo usar eventos extendidos para supervisar y solucionar problemas de
instrucciones de T-SQL PREDICT en SQL Server Machine Learning Services.
SELECT *
FROM sys.dm_xe_object_columns
WHERE object_name LIKE 'predict%'
Ejemplos
Para capturar información sobre el rendimiento de una sesión de puntuación mediante PREDICT:
1. Cree una nueva sesión de eventos extendidos con Management Studio u otra herramienta compatible.
2. Agregue los eventos predict_function_completed y predict_model_cache_hit a la sesión.
3. Inicie la sesión de eventos extendidos.
4. Ejecute la consulta que usa PREDICT.
En los resultados, revise estas columnas:
El valor de predict_function_completed muestra la cantidad de tiempo que la consulta dedicó a cargar el
modelo y la puntuación.
El valor booleano de predict_model_cache_hit indica si la consulta usó o no un modelo almacenado en
caché.
Caché del modelo de puntuación nativo
Además de los eventos específicos de la predicción (PREDICT), puede utilizar las siguientes consultas para
obtener más información sobre el uso de la caché y el modelo en caché:
Ver la caché del modelo de puntuación nativo:
SELECT *
FROM sys.dm_os_memory_clerks
WHERE type = 'CACHESTORE_NATIVESCORING';
SELECT *
FROM sys.dm_os_memory_objects
WHERE TYPE = 'MEMOBJ_NATIVESCORING';
Pasos siguientes
Para obtener más información acerca de los eventos extendidos (a veces denominados XEvents) y cómo realizar
un seguimiento de los eventos de una sesión, vea estos artículos:
Supervisar scripts de R y Python con eventos extendidos en SQL Server Machine Learning Services
Conceptos y arquitectura de eventos extendidos
Configuración de la captura de eventos en SSMS
Administrar sesiones de eventos en el Explorador de objetos
Escalar la ejecución simultánea de scripts externos
en SQL Server Machine Learning Services
14/07/2021 • 4 minutes to read
NOTE
En SQL Server 2019, SQLRUserGroup solo tiene un miembro que ahora es la única cuenta de servicio de SQL Server
Launchpad, en lugar de varias cuentas de trabajo. En este artículo se describen las cuentas de trabajo para SQL Server
2016 y 2017.
Pasos siguientes
Supervisar la ejecución de scripts de Python y R mediante informes personalizados en SQL Server
Management Studio
Supervisar SQL Server Machine Learning Services mediante vistas de administración dinámica (DMV)
Administración de cargas de trabajo de Python y R
con Resource Governor en
SQL Server Machine Learning Services
14/07/2021 • 2 minutes to read
NOTE
Resource Governor es una característica de Enterprise Edition.
Asignaciones predeterminadas
De forma predeterminada, los tiempos de ejecución de scripts externos para aprendizaje automático están
limitados a un máximo del 20 % del total de memoria de la máquina. Aunque depende del sistema, este límite
suele ser inadecuado para tareas de aprendizaje automático importantes, como entrenar un modelo o realizar
una predicción en varias filas de datos.
NOTE
Aun así, no se admite la administración directa del servicio Launchpad mediante Resource Governor. Launchpad es un
servicio de confianza que solo puede hospedar iniciadores proporcionados por Microsoft. Los iniciadores de confianza se
configuran de manera explícita para evitar un uso excesivo de recursos.
Pasos siguientes
Creación de grupos de recursos para el aprendizaje automático
Grupos de recursos de Resource Governor
Crear un grupo de recursos para SQL Server
Machine Learning Services
14/07/2021 • 5 minutes to read
Ejemplo de resultados
Ejemplo de resultados
2 default 100 20 0 2
3. Con estos valores predeterminados de servidor, es probable que el tiempo de ejecución externo no tenga
recursos suficientes para completar la mayoría de las tareas. Para mejorar los recursos, se debe modificar
el uso de recursos de servidor de la siguiente manera:
Reducir la memoria máxima del equipo que puede usar el motor de base de datos.
Aumentar la memoria máxima del equipo que puede usar el proceso externo.
2. Ejecute la instrucción siguiente para limitar el uso de memoria de los procesos externos al 40 % de los
recursos totales del equipo.
3. Para aplicar estos cambios, debe volver a configurar y reiniciar Resource Governor de esta forma:
NOTE
Estas son solo opciones iniciales sugeridas. Debe evaluar las tareas de aprendizaje automático en función de otros
procesos del servidor para determinar el equilibrio correcto para el entorno y la carga de trabajo.
2. Cree un grupo de cargas de trabajo denominado ds_wg para usar en la administración de solicitudes de
sesión. Para las consultas SQL, usará el grupo predeterminado. Para las consultas de procesos externos
usará el grupo ds_ep .
CREATE WORKLOAD GROUP ds_wg WITH (importance = medium) USING "default", EXTERNAL "ds_ep";
Las solicitudes se asignan al grupo predeterminado siempre que no se puede clasificar la solicitud, o si
hay otros errores de clasificación.
Para más información, vea Resource Governor Workload Group (Grupo de cargas de trabajo de Resource
Governor) y CREATE WORKLOAD GROUP (Transact-SQL).
Crear una función de clasificación para el aprendizaje automático
Una función de clasificación examina las tareas entrantes. Determina si la tarea se puede ejecutar con el grupo
de recursos actual. Las tareas que no cumplen los criterios de la función de clasificación se vuelven a asignar al
grupo de recursos predeterminado del servidor.
1. Empiece por especificar una función clasificadora que Resource Governor debe usar para determinar los
grupos de recursos. Puede asignar un valor null como marcador de posición para la función
clasificadora.
USE master
GO
CREATE FUNCTION is_ds_apps()
RETURNS sysname
WITH schemabinding
AS
BEGIN
IF program_name() in ('Microsoft R Host', 'RStudio', 'Mashup') RETURN 'ds_wg';
RETURN 'default'
END;
GO
3. Cuando se haya creado la función, vuelva a configurar el grupo de recursos para asignar la nueva función
clasificadora al grupo de recursos externos que definió anteriormente.
Ejemplo de resultados
REQ UE
ST _M A REQ UE GRO UP
X_M EM REQ UE ST _M E _M A X_
O RY _G ST _M A M O RY _ REQ UES
RA N T _ X_C P U_ GRA N T TS EXT ERN
GRO UP IM P O R P ERC E T IM E_S _T IM EO M A X_D P O O L _I P O O L _I A L _P O
_ID NAME TA N C E NT EC UT _SEC OP D DD O L _ID
1 internal Media 25 0 0 0 0 1 2
2 default Media 25 0 0 0 0 2 2
Ejemplo de resultados
2 default 100 20 0 2
Para más información, vea Resource Governor Catalog Views (Transact-SQL) (Vistas de catálogo de
Resource Governor (Transact-SQL)).
3. Ejecute la instrucción siguiente para devolver información sobre los recursos del equipo que tienen
afinidad con el grupo de recursos externo, si procede:
No se mostrará ninguna información porque los grupos se crearon con la afinidad AUTO. Para más
información, vea sys.dm_resource_governor_resource_pool_affinity (Transact-SQL).
Pasos siguientes
Para obtener más información acerca de la administración de recursos del servidor, vea:
Regulador de recursos
Vistas de administración dinámica relacionadas con Resource Governor (Transact-SQL)
Para obtener información general sobre la regulación de recursos para el aprendizaje automático, vea:
Administración de cargas de trabajo de Python y R con Resource Governor en
SQL Server Machine Learning Services
Concesión de permisos de usuario de base de datos
para ejecutar scripts de Python y R con SQL Server
Machine Learning Services
14/07/2021 • 2 minutes to read
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Instancia administrada de Azure SQL
Obtenga información sobre cómo puede conceder a un usuario de base de datos permiso para ejecutar scripts
de Python y R externos en SQL Server Machine Learning Services y proporcionar permisos de lectura, escritura
o lenguaje de definición de datos (DDL) a las bases de datos.
Para obtener más información, vea la sección permisos de Seguridad para el marco de extensibilidad.
USE <database_name>
GO
GRANT EXECUTE ANY EXTERNAL SCRIPT TO [UserName]
NOTE
Los permisos no son específicos del lenguaje de script admitido. En otras palabras, no hay niveles de permisos
independientes para el script de R comparado con el script de Python.
USE ML_Samples
GO
EXEC sp_addrolemember 'db_datareader', 'MySQLLogin'
Pasos siguientes
Para obtener más información sobre los permisos incluidos en cada rol, vea Roles de nivel de base de datos.
Configuración del servicio de SQL Server
Launchpad
14/07/2021 • 4 minutes to read
Permisos de cuenta
De forma predeterminada, SQL Server Launchpad está configurado para ejecutarse con NT
Ser vice\MSSQLLaunchpad , que se aprovisiona con todos los permisos necesarios para ejecutar scripts
externos. Si se quitan los permisos de esta cuenta, puede ser que Launchpad no se pueda iniciar o no pueda
acceder a la instancia de SQL Server donde se deben ejecutar los scripts externos.
Si modifica la cuenta de servicio, asegúrese de usar la consola de la directiva de seguridad local.
En la tabla siguiente se muestran los permisos necesarios para esta cuenta.
Para más información sobre los permisos para ejecutar servicios de SQL Server, vea Configurar los permisos y
las cuentas de servicio de Windows.
Propiedades de configuración
Normalmente no hay ningún motivo para modificar la configuración del servicio. Las propiedades que se
pueden modificar incluyen la cuenta de servicio, el recuento de procesos externos (20 de forma
predeterminada) o la política de restablecimiento de contraseña para las cuentas profesionales.
1. Abra el Administrador de configuración de SQL Server.
2. En Servicios de SQL Server, haga clic con el botón derecho en Launchpad de SQL Server y elija
Propiedades .
Haga clic en la pestaña Iniciar sesión para ver la cuenta de servicio.
Para aumentar el número de usuarios, haga clic en la pestaña Avanzado y cambie la Cantidad de
contextos de seguridad .
NOTE
En las primeras versiones de SQL Server 2016 R Services, se podían cambiar algunas propiedades del servicio editando el
archivo de configuración de R Services (en bases de datos). Este archivo ya no se utiliza para cambiar las configuraciones.
El Administrador de configuración de SQL Server es el más adecuado para los cambios en la configuración del servicio,
como la cuenta de servicio y el número de usuarios.
Configuración de depuración
Solo se pueden cambiar algunas propiedades mediante el archivo de configuración de Launchpad, que puede
ser útil en determinados casos, como la depuración. Este archivo de configuración se crea durante la instalación
de SQL Server y, de manera predeterminada, se guarda como un archivo de texto sin formato en
<instance path>\binn\rlauncher.config .
Para realizar cambios en este archivo, debe ser administrador en el equipo que ejecuta SQL Server . Si edita el
archivo, se recomienda realizar una copia de seguridad antes de guardar los cambios.
En la siguiente tabla se muestran las configuraciones avanzadas para SQL Server, con los valores permitidos.
N O M B RE DE O P C IÓ N T IP O DESC RIP C IÓ N
Todas las opciones se presentan como un par clave-valor y cada una de ellas se encuentra en una línea aparte.
Por ejemplo, para cambiar el nivel de seguimiento, agregaría la línea Default: TRACE_LEVEL=4 .
Pasos siguientes
Plataforma de extensibilidad
Información general sobre seguridad
Configuración de firewall para SQL Server Machine
Learning Services
14/07/2021 • 2 minutes to read
NOTE
Si se requieren llamadas de red, puede deshabilitar las reglas de salida en Firewall de Windows.
Pasos siguientes
Configurar Firewall de Windows para conexiones enlazadas
Creación de un inicio de sesión para
SQLRUserGroup
14/07/2021 • 2 minutes to read
NOTE
Asegúrese de que SQLRUserGroup tiene los permisos "Permitir el inicio de sesión local". De forma predeterminada, este
derecho se concede a todos los usuarios locales nuevos, pero algunas de las directivas de grupo de las organizaciones
más estrictas podrían deshabilitarlo.
4. En el cuadro de diálogo Tipos de objeto , seleccione Grupos . Desactive las demás casillas.
5. Haga clic en Avanzadas , compruebe que la ubicación para buscar es el equipo actual y, después, haga
clic en Buscar ahora .
6. Desplácese por la lista de cuentas del grupo en el servidor hasta que encuentre una que comience por
SQLRUserGroup .
El nombre del grupo que está asociado con el servicio Launchpad para la instancia predeterminada
siempre es SQLRUserGroup , independientemente de si instaló R, Python o ambos. Seleccione esta
cuenta solo para la instancia predeterminada.
Si usa una instancia con nombre, el nombre de la instancia se anexa al nombre del grupo de trabajo
predeterminado, SQLRUserGroup . Por ejemplo, si la instancia se denomina "MLTEST", el nombre del
grupo de usuarios predeterminado para esta instancia sería SQLRUserGroupMLTest .
7. Haga clic en Aceptar para cerrar el cuadro de diálogo de búsqueda avanzada.
IMPORTANT
Asegúrese de que ha seleccionado la cuenta correcta para la instancia. Cada instancia solo puede utilizar su propio
servicio Launchpad y el grupo creado para ese servicio. Las instancias no pueden compartir el servicio de
Launchpad ni las cuentas de trabajo.
8. Vuelva a hacer clic en Aceptar para cerrar el cuadro de diálogo Seleccionar usuario o grupo .
9. En el cuadro de diálogo Inicio de sesión: Nuevo , haga clic en Aceptar . De forma predeterminada, el
inicio de sesión se asigna al rol público y tiene permiso para conectarse al motor de base de datos.
Pasos siguientes
Información general sobre seguridad
Plataforma de extensibilidad
Optimización del rendimiento y de los datos para R
14/07/2021 • 11 minutes to read
Factores
El lenguaje R tiene el concepto de factores, que son una variable especial para los datos categóricos. Los
científicos de datos suelen usar variables de factor en su fórmula, porque el control de las variables categóricas
como factores garantiza que los datos se procesan correctamente mediante las funciones de aprendizaje
automático.
Por diseño, las variables de factor se pueden convertir de cadenas a enteros y viceversa para el almacenamiento
o el procesamiento. La función de data.frame de R controla todas las cadenas como variables de factor, a
menos que el argumento stringsAsFactors se establezca en False . Esto significa que las cadenas se convierten
automáticamente en un entero para su procesamiento y, a continuación, se asignan de nuevo a la cadena
original.
Si los datos de origen de los factores se almacenan como un entero, el rendimiento puede verse afectado
porque R convierte los enteros de factor en cadenas en tiempo de ejecución y, a continuación, realiza su propia
conversión interna de cadena a entero.
Para evitar estas conversiones en tiempo de ejecución, le recomendamos que almacene los valores como
enteros en la tabla de SQL Server y que use el argumento colInfo para especificar los niveles de la columna que
se usa como factor. La mayoría de los objetos de origen de datos de RevoScaleR toman el parámetro colInfo.
Use este parámetro para asignar un nombre a las variables utilizadas por el origen de datos, especificar su tipo y
definir los niveles de variables o las transformaciones en los valores de columna.
Por ejemplo, la siguiente llamada de función de R obtiene los enteros 1, 2 y 3 de una tabla, pero asigna los
valores a un factor con los niveles "manzana", "naranja" y "plátano".
c("fruit" = c(type = "factor", levels=as.character(c(1:3)), newLevels=c("apple", "orange", "banana")))
Cuando la columna de origen contiene cadenas, siempre es más eficaz especificar los niveles con anterioridad
mediante el parámetro colInfo. Por ejemplo, el siguiente código de R trata las cadenas como factores a medida
que se leen.
Si no hay ninguna diferencia semántica en la generación del modelo, el último enfoque puede provocar un
rendimiento mejor.
Transformaciones de datos
Los científicos de datos suelen emplear funciones de transformación escritas en R como parte del análisis. La
función de transformación se aplica a todas las filas que se recuperan de la tabla. En SQL Server, estas
transformaciones se aplican a todas las filas recuperadas en un lote, lo que requiere comunicación entre el
intérprete de R y el motor de análisis. Para realizar la transformación, se mueven los datos de SQL al motor de
análisis y, después, al proceso del intérprete de R y viceversa.
Por esta razón, el uso de transformaciones como parte del código de R pueden tener un importante efecto
adverso en el rendimiento del algoritmo, según la cantidad de datos implicados.
Es más eficaz tener todas las columnas necesarias en la tabla o vista antes de realizar el análisis, y evitar las
transformaciones durante el cálculo. Si no es posible agregar más columnas a las tablas existentes, considere la
posibilidad de crear otra tabla o vista con las columnas transformadas y usar una consulta adecuada para
recuperar los datos.
Procesamiento paralelo
Para mejorar el rendimiento de las funciones analíticas de r x , puede aprovechar la capacidad de SQL Server de
ejecutar tareas en paralelo mediante núcleos disponibles en el equipo servidor.
Hay dos maneras de lograr la ejecución en paralelo con R en SQL Server:
Usar @parallel. Cuando se usa el procedimiento almacenado sp_execute_external_script para ejecutar
un script de R, se establece el parámetro @parallel en 1 . Este es el mejor método si el script de R no
usa funciones de RevoScaleR, que tienen otros mecanismos para el procesamiento. Si el script usa
funciones RevoScaleR (generalmente con el prefijo "rx"), el procesamiento en paralelo se realiza
automáticamente y no es necesario establecer explícitamente @parallel en 1 .
Si el script de R se puede ejecutar en paralelo, y la consulta SQL también, el motor de base de datos crea
varios procesos paralelos. El número máximo de procesos que se pueden crear es igual a la configuración
del grado de paralelismo máximo (MAXDOP) de la instancia. A continuación, todos los procesos
ejecutan el mismo script, pero reciben solo una parte de los datos.
Por lo tanto, este método no es útil con scripts que deben ver todos los datos, como al entrenar un
modelo. Pero resulta útil al realizar tareas como la predicción por lotes en paralelo. Para obtener más
información sobre el uso de paralelismo con sp_execute_external_script , vea la sección Sugerencias
avanzadas: procesamiento en paralelo de Uso de código de R en Transact-SQL.
Usar numTasks =1. Al usar funciones r x en un contexto de cálculo de SQL Server, establezca el valor
del parámetro numTasks en el número de procesos que desea crear. El número de procesos creados
nunca puede ser más de MAXDOP ; sin embargo, el número real de procesos creados viene determinado
por el motor de base de datos y puede ser menor que el solicitado.
Si el script de R se puede ejecutar en paralelo y la consulta SQL también, entonces el SQL Server crea
varios procesos en paralelo al ejecutar las funciones rx. El número real de procesos que se crean depende
de diversos factores. Estos incluyen la gobernanza de los recursos, el uso actual de los recursos, otras
sesiones y el plan de ejecución de consulta correspondiente a la consulta que se usa con el script de R.
Paralelización de consultas
En Microsoft R, puede trabajar con orígenes de datos de SQL Server definiendo los datos como un objeto de
origen de datos RxSqlServerData.
Crea un origen de datos basado en una tabla o vista completa:
NOTE
Si se especifica una tabla en el origen de datos en lugar de una consulta, R Services usa la heurística interna para
determinar las columnas necesarias que capturar de la tabla. Pero es poco probable que este enfoque dé como resultado
la ejecución en paralelo.
Para asegurarse de que los datos se pueden analizar en paralelo, la consulta utilizada para recuperar los datos
debe estar tramada de forma que el motor de base de datos pueda crear un plan de consulta paralelo. Si el
código o el algoritmo usan grandes volúmenes de datos, asegúrese de que la consulta proporcionada a
RxSqlServerData está optimizada para la ejecución en paralelo. Una consulta que no da como resultado un plan
de ejecución en paralelo puede producir un único proceso para el cálculo.
Si necesita trabajar con grandes conjuntos de recursos, use Management Studio u otro analizador de consultas
de SQL antes de ejecutar el código de R para analizar el plan de ejecución. A continuación, siga los pasos
recomendados para mejorar el rendimiento de la consulta. Por ejemplo, un índice que falta en una tabla puede
afectar al tiempo necesario para ejecutar una consulta. Para obtener más información, vea Supervisión y
optimización del rendimiento.
Otro error común que puede afectar al rendimiento es que una consulta recupera más columnas de las
necesarias. Por ejemplo, si una fórmula se basa solo en tres columnas, pero la tabla de origen tiene 30
columnas, el traslado de los datos no es necesario.
No use SELECT * .
Tómese un tiempo para revisar las columnas del conjunto de registros e identificar solo las necesarias para el
análisis.
Elimine de las consultas las columnas que contienen tipos de datos que no son compatibles con el código de
R, como GUID y ROWGUID.
Compruebe los formatos de fecha y hora no admitidos.
En lugar de cargar una tabla, cree una vista que seleccione determinados valores o convierta columnas para
evitar errores de conversión.
TIP
Una explicación general de la optimización de R está fuera del ámbito de este artículo. Sin embargo, si necesita que el
código sea más rápido, se recomienda el artículo popular The R Inferno. Trata las construcciones de programación en R y
los errores comunes en un lenguaje y detalle intensos, así como proporciona muchos ejemplos específicos de técnicas de
programación de R.
Pasos siguientes
Si quiere ver las funciones de R que puede usar para mejorar el rendimiento del código de R, consulte
Uso de funciones de generación de perfiles de código de R para mejorar el rendimiento.
Para información más completa sobre la optimización del rendimiento en SQL Server, consulte Centro de
rendimiento para el motor de base de datos de SQL Server y Base de datos SQL de Azure.
Uso de funciones de generación de perfiles de
código de R para mejorar el rendimiento
14/07/2021 • 2 minutes to read
TIP
En este artículo se ofrecen recursos básicos para comenzar. Para obtener orientación experta, se recomienda la sección
sobre rendimiento del libro "Advanced R" de Hadley Wickham.
Uso de RPROF
rprof es una función incluida en el paquete base utils , que se carga de manera predeterminada.
Por lo general, la función rprof escribe la pila de llamadas en un archivo, a intervalos especificados. Después, se
puede usar la función summaryRprof para procesar el archivo de salida. Una ventaja de rprof es que realiza el
muestreo, lo que, por tanto, disminuye la carga de rendimiento de la supervisión.
Para usar la generación de perfiles de R en el código, llame a esta función y especifique sus parámetros, incluido
el nombre de la ubicación del archivo de registro que se va a escribir. La generación de perfiles se puede activar
y desactivar en el código. La sintaxis siguiente muestra el uso básico:
# Restart profiling
Rprof(append=TRUE)
NOTE
El uso de esta función requiere que Windows Perl esté instalado en el equipo donde se ejecuta el código. Por consiguiente,
se recomienda generar perfiles del código durante el desarrollo en un entorno de R e implementar después el código
depurado en SQL Server.
Para obtener información sobre funciones individuales del sistema de R, escriba el nombre de la función como
argumento en la función help() de R desde un símbolo del sistema.
help("Sys.time")
Pasos siguientes
Para más información sobre la optimización de scripts de R en SQL Server, consulte Optimización del
rendimiento y de los datos para R.
Para información más completa sobre la optimización del rendimiento en SQL Server, consulte Centro de
rendimiento para el motor de base de datos de SQL Server y Base de datos SQL de Azure.
Para más información sobre el paquete de utilidades, consulte el artículo sobre el paquete de utilidades de R.
Para un análisis detallado de la programación R, consulte "Advanced R" de Hadley Wickham.
revoscalepy (paquete de Python en SQL Server
Machine Learning Services)
14/07/2021 • 5 minutes to read
Versiones y plataformas
El módulo de revoscalepy se basa en Python 3.5 y solo está disponible cuando se instala uno de los siguientes
productos o descargas de Microsoft:
SQL Server Machine Learning Services
Bibliotecas de cliente de Python para un cliente de ciencia de datos
NOTE
En SQL Server 2017, las versiones completas del producto son solo para Windows. Para revoscalepy en
SQL Server 2019 y versiones posteriores, se admiten tanto Windows como Linux.
F UN C IÓ N DESC RIP C IÓ N
TIP
Si no está familiarizado con la idea de los orígenes de datos o los contextos de cálculo, le recomendamos que comience
con el artículo Computación distribuida.
3- Aprendizaje y resumen
F UN C IÓ N DESC RIP C IÓ N
También debe revisar las funciones de microsoftml para ver otros enfoques.
4- Funciones de puntuación
F UN C IÓ N DESC RIP C IÓ N
Consulte también
Tutoriales de Python
Referencia de Python
microsoftml (paquete de Python en SQL Server
Machine Learning Services)
14/07/2021 • 3 minutes to read
Versiones y plataformas
El módulo de microsoftml se basa en Python 3.5 y solo está disponible cuando se instala uno de los siguientes
productos o descargas de Microsoft:
SQL Server Machine Learning Services
Bibliotecas de cliente de Python para un cliente de ciencia de datos
NOTE
En SQL Server 2017, las versiones completas del producto son solo para Windows. Para microsoftml en
SQL Server 2019, se admiten tanto Windows como Linux.
Dependencias de paquetes
Los algoritmos de microsoftml dependen de revoscalepy para:
Objetos de origen de datos. Los datos consumidos por las funciones de microsoftml se crean mediante las
funciones de revoscalepy .
Informática remota (cambio de la ejecución de la función a una instancia de SQL Server remota). El paquete
de revoscalepy proporciona funciones para crear y activar un contexto de cálculo remoto para SQL Server.
En la mayoría de los casos, los paquetes se cargarán juntos siempre que se use microsoftml .
2-Funciones de transformación
Control de variables de categorías
F UN C IÓ N DESC RIP C IÓ N
Manipulación de esquemas
F UN C IÓ N DESC RIP C IÓ N
Selección de variables
F UN C IÓ N DESC RIP C IÓ N
Análisis de texto
F UN C IÓ N DESC RIP C IÓ N
Análisis de imagen
F UN C IÓ N DESC RIP C IÓ N
Funciones de características
F UN C IÓ N DESC RIP C IÓ N
3-Funciones de puntuación
F UN C IÓ N DESC RIP C IÓ N
Consulte también
Tutoriales de Python
Referencia de Python
RevoScaleR (paquete de R en SQL Server Machine
Learning Services)
14/07/2021 • 8 minutes to read
Versiones y plataformas
El paquete de RevoScaleR se basa en R 3.4.3 y solo está disponible cuando se instala uno de los siguientes
productos o descargas de Microsoft:
SQL Server 2016 R Services
SQL Server Machine Learning Services
Cliente de Microsoft R
NOTE
En SQL Server 2017, las versiones completas del producto son solo para Windows. Para RevoScaleR en SQL Server 2019,
se admiten tanto Windows como Linux.
F UN C IÓ N DESC RIP C IÓ N
TIP
Si no está familiarizado con la idea de los orígenes de datos o los contextos de cálculo, le recomendamos que comience
con el artículo Computación distribuida.
F UN C IÓ N DESC RIP C IÓ N
F UN C IÓ N DESC RIP C IÓ N
4- Estadísticas descriptivas
N O M B RE DE F UN C IÓ N DESC RIP C IÓ N
5- Funciones de predicción
N O M B RE DE F UN C IÓ N DESC RIP C IÓ N
Consulte también
Tutoriales de R
Información sobre cómo usar contextos de cálculo
R para desarrolladores de SQL: Entrenar y hacer operativo un modelo
Ejemplos de productos de Microsoft en GitHub
Referencia de R
MicrosoftML (paquete de R en SQL Server Machine
Learning Services)
15/07/2021 • 5 minutes to read
Versiones y plataformas
El paquete MicrosoftML se basa en R 3.4.3 y solo está disponible cuando se instala uno de los siguientes
productos o descargas de Microsoft:
SQL Server 2016 R Services
SQL Server Machine Learning Services
Cliente de Microsoft R
NOTE
En SQL Server 2017, las versiones completas del producto son solo para Windows. Para MicrosoftML en
SQL Server 2019, se admiten tanto Windows como Linux.
Dependencias de paquetes
Los algoritmos de MicrosoftML dependen de RevoScaleR para:
Objetos de origen de datos. Los datos consumidos por las funciones de MicrosoftML se crean mediante las
funciones de RevoScaleR .
Informática remota (cambio de la ejecución de la función a una instancia de SQL Server remota). El paquete
RevoScaleR proporciona funciones para crear y activar un contexto de cálculo remoto para SQL Server.
En la mayoría de los casos, los paquetes se cargarán juntos siempre que se use MicrosoftML .
2- Funciones de transformación
N O M B RE DE F UN C IÓ N DESC RIP C IÓ N
library(microsoftml);
library(RevoScaleR);
logisticRegression(args);
Consulte también
Tutoriales de R
Información sobre cómo usar contextos de cálculo
R para desarrolladores de SQL: Entrenar y hacer operativo un modelo
Ejemplos de productos de Microsoft en GitHub
Referencia de R
OlapR (paquete de R en SQL Server Machine
Learning Services)
14/07/2021 • 2 minutes to read
Carga de paquete
El paquete olapR no se ha cargado previamente en una sesión de R. Ejecute el siguiente comando para cargar el
paquete.
library(olapR)
Disponibilidad y ubicación
Este paquete se proporciona en los siguientes productos, así como en varias imágenes de máquina virtual en
Azure. La ubicación del paquete varía en consecuencia.
P RO DUC TO LO C AT IO N
SQL Server Machine Learning Services (con la integración de C:\Archivos de programa\Microsoft SQL
R) Server\MSSQL14.MSSQLSERVER\R_SERVICES\library
1 integración de R
es opcional en SQL Server. El paquete olapr se instalará cuando agregue la característica
Machine Learning o de R durante la configuración de la máquina virtual.
Consulte también
Cómo crear consultas MDX con olapR
Sqlrutils (paquete de R en SQL Server Machine
Learning Services)
14/07/2021 • 6 minutes to read
NOTE
Si va a ejecutar el procedimiento almacenado desde un entorno de R llamando a la función executeStoredProcedure , debe
usar un proveedor ODBC 3.8, como ODBC Driver 13 para SQL Server.
Lista de funciones
En la sección siguiente se proporciona un resumen de las funciones que se pueden llamar desde el paquete
sqlrutils para desarrollar un procedimiento almacenado que contenga un código de R incrustado. Para obtener
información detallada sobre los parámetros de cada método o función, consulte la Ayuda de R del paquete:
help(package="sqlrutils")
F UN C IÓ N DESC RIP C IÓ N
NOTE
Puede cargar este paquete en un equipo que no tenga SQL Server (por ejemplo, en una instancia de cliente de R) si
cambia el contexto de cálculo a SQL Server y ejecuta el código en ese contexto de cálculo.
Definición de parámetros y entradas del procedimiento almacenado
StoredProcedure es el constructor principal empleado para crear el procedimiento almacenado. Este constructor
genera un objeto de procedimiento almacenado de SQL Server y, opcionalmente, crea un archivo de texto que
contiene una consulta que puede usarse para generar el procedimiento almacenado mediante un comando de
T-SQL.
Además, la función StoredProcedure también puede registrar el procedimiento almacenado en la instancia y la
base de datos especificadas.
Use el argumento func para especificar una función de R válida. Todas las variables que usa la función
deben definirse dentro de la función o deben proporcionarse como parámetros de entrada. Estos
parámetros pueden incluir una trama de datos como máximo.
La función de R debe devolver una trama de datos, una lista con nombre o un valor NULL. Si la función
devuelve una lista, esta puede contener una data.frame como máximo.
Utilice el argumento spName para especificar el nombre del procedimiento almacenado que quiere crear.
Puede pasar parámetros de salida y de entrada opcionales usando los objetos creados por las funciones
del asistente setInputData , setInputParameter y setOutputParameter .
Opcionalmente, use filePath para proporcionar la ruta de acceso y el nombre de un archivo .sql que
vaya a crear. Puede ejecutar este archivo en la instancia de SQL Server para generar el procedimiento
almacenado con T-SQL.
Para definir el servidor y la base de datos donde se guardará el procedimiento almacenado, use los
argumentos dbName y connectionString .
Para obtener una lista de los objetos InputData e InputParameter utilizados para crear un determinado
objeto StoredProcedure , llame a getInputParameters .
Para registrar el procedimiento almacenado en la base de datos especificada, use
registerStoredProcedure .
El objeto del procedimiento almacenado no suele tener datos o valores asociados, a menos que se haya
especificado un valor predeterminado. No se recuperan datos hasta que se ejecute el procedimiento
almacenado.
Especificación de entradas y ejecución
Utilice setInputDataQuery para asignar una consulta a un objeto InputParameter . Por ejemplo, si ha
creado un objeto de procedimiento almacenado en R, puede usar setInputDataQuery para pasar
argumentos a la función StoredProcedure con el objetivo de ejecutar el procedimiento almacenado con
las entradas deseadas.
Utilice setInputValue para asignar valores específicos a un parámetro almacenado como objeto
InputParameter . Luego, pase el objeto del parámetro y su asignación de valores a la función
StoredProcedure para ejecutar el procedimiento almacenado con los valores establecidos.
Utilice executeStoredProcedure para ejecutar un procedimiento almacenado definido como objeto
StoredProcedure . Llame a esta función solo cuando ejecute un procedimiento almacenado desde el
código de R. No la use si ejecuta el procedimiento almacenado desde SQL Server mediante T-SQL.
NOTE
La función executeStoredProcedure requiere un proveedor ODBC 3.8, como ODBC Driver 13 for SQL Server.
Consulte también
Cómo crear un procedimiento almacenado mediante sqlrutils
Notas de la versión de SQL Server 2019 (15.x)
14/07/2021 • 2 minutes to read
Documentación
Problema e impacto en el cliente : la documentación de SQL Server se puede filtrar por versión. Use el
control situado en la parte superior izquierda de cada página de documentación para filtrar según sus
requisitos.
Número de compilación
El número de compilación RTM de SQL Server 2019 es 15.0.2000.5 .
Intercalaciones UTF-8
Problema e impacto en el cliente : No se pueden usar las intercalaciones habilitadas para UTF-8 con
las siguientes características:
Tablas OLTP en memoria
Always Encrypted con enclaves seguros (cuando no se usa enclaves seguros, Always Encrypted puede
usar UTF-8)
WARNING
Se produce un error al crear un bacpac de una base de datos que contiene columnas de tabla definidas como
CHAR o VARCHAR que usan más de 4000 bytes.
NOTE
Actualmente, no hay ninguna compatibilidad de interfaz de usuario para elegir intercalaciones habilitadas para
UTF-8 en Azure Data Studio o SQL Server Data Tools (SSDT). La versión 18, la más reciente de SQL Server
Management Studio (SSMS), permite elegir las intercalaciones habilitadas para UTF-8 en la interfaz de usuario.
Consulte también
Requisitos de hardware y software para instalar SQL Server
Obtener ayuda
UserVoice: ¿Tiene sugerencias para mejorar SQL Server?
Preguntas y respuestas de Microsoft (SQL Server)
Stack Exchange de DBA (etiqueta sql-server): Preguntas sobre SQL Server
Stack Overflow (etiqueta sql-server): Respuestas a preguntas de desarrollo de SQL
Reddit: Debate general sobre SQL Server
Información y términos de licencia de Microsoft SQL Server
Opciones de soporte técnico para usuarios profesionales
Contacto con Microsoft
Comentarios y ayuda adicional sobre SQL Server
Notas de la versión de SQL Server 2017
14/07/2021 • 7 minutes to read
NOTE
Ya está disponible la versión preliminar de SQL Server 2019. Para más información, vea Novedades de SQL Server 2019.
Solución alternativa:
Conceda permisos a los subnodos en la vista de árbol en lugar de a nivel de raíz.
Analysis Services
Problema e impacto en el cliente: los conectores de datos de los siguientes orígenes aún no están
disponibles para los modelos tabulares en el nivel de compatibilidad 1400.
Amazon Redshift
IBM Netezza
Impala
Solución alternativa: Ninguno.
Problema e impacto en el cliente: los modelos de DirectQuery con el nivel de compatibilidad 1400
con perspectivas pueden generar errores al consultar o detectar metadatos.
Solución alternativa: elimine las perspectivas y vuelva a realizar la implementación.
Herramientas
Problema e impacto en el cliente: cuando se ejecuta DReplay se produce un error con el siguiente
mensaje: "Se ha producido un error inesperado de DReplay".
Solución alternativa: Ninguno.
regsvr32 /i ReportingServicesWMIProvider.dll
The module "ReportingServicesWMIProvider.dll" was loaded but the entry-point DLLInstall was
not found. Make sure that "ReportingServicesWMIProvider.dll" is a valid DLL or OCX file and
then try again.
1. El usuario actualiza la réplica secundaria que hospeda la instancia de SQL Server de acuerdo con los
procedimientos recomendados.
2. Después de actualizar, se produce una conmutación por error y la réplica secundaria que se acaba de
actualizar se convierte en la principal antes de completar la actualización de todas las réplicas
secundarias del grupo de disponibilidad. La réplica principal anterior es ahora una réplica secundaria que
tiene una versión anterior a la principal.
3. El grupo de disponibilidad está en una configuración no admitida y las réplicas secundarias restantes
pueden ser vulnerables a los bloqueos.
Solución alternativa: conéctese a la instancia de SQL Server que hospeda la nueva réplica principal y
quite la réplica secundaria errónea de la configuración.
Más información
notas de la versión de SQL Server Reporting Services.
Problemas conocidos de Machine Learning Services
Vínculos e información del Centro de actualizaciones de SQL Server sobre todas las versiones compatibles
Obtener ayuda
UserVoice: ¿Tiene sugerencias para mejorar SQL Server?
Preguntas y respuestas de Microsoft (SQL Server)
Stack Exchange de DBA (etiqueta sql-server): Preguntas sobre SQL Server
Stack Overflow (etiqueta sql-server): Respuestas a preguntas de desarrollo de SQL
Reddit: Debate general sobre SQL Server
Información y términos de licencia de Microsoft SQL Server
Opciones de soporte técnico para usuarios profesionales
Contacto con Microsoft
Comentarios y ayuda adicional sobre SQL Server
Uso del tiempo de espera de CPU para Mejora el control de las solicitudes de KB4038419
cancelar la solicitud de Resource consulta mediante la cancelación de la
Governor solicitud, si se alcanzan los umbrales de
CPU para una solicitud. Este
comportamiento se habilita en la
marca de seguimiento 2422.
C A RA C T ERÍST IC A DESC RIP C IÓ N M Á S IN F O RM A C IÓ N
SELECT INTO para crear la tabla de A partir de SQL Server 2016 SP2, la
destino en el grupo de archivos sintaxis T-SQL de SELECT INTO permite
cargar una tabla en un grupo de
archivos distinto del grupo de archivos
predeterminado del usuario mediante
la palabra clave ON en la sintaxis T-
SQL.
Mejoras relacionadas con la compatibilidad y el diagnóstico incluidas en SQL Server 2016 SP2.
Compatibilidad total de DTC con las Las transacciones entre varias bases de
bases de datos de un grupo de datos que no forman parte de un
disponibilidad grupo de disponibilidad no se admiten
por el momento en SQL Server 2016.
Con SQL Server 2016 SP2,
introducimos la compatibilidad total de
transacciones distribuidas con las
bases de datos de grupos de
disponibilidad.
C A RA C T ERÍST IC A DESC RIP C IÓ N M Á S IN F O RM A C IÓ N
Nueva DMV para supervisar el uso del En SQL Server 2016 SP2 se introduce
espacio de almacenamiento de una nueva DMV de
versiones de TempDB sys.dm_tran_version_store_space_usag
e para permitir la supervisión de
TempDB para el uso del
almacenamiento de versiones. Los
administradores de base de datos
ahora pueden planear de manera
proactiva el tamaño de TempDB en
función del requisito de uso de
almacenamiento de versiones por base
de datos, sin ninguna sobrecarga de
rendimiento cuando se ejecuta en los
servidores de producción.
C A RA C T ERÍST IC A DESC RIP C IÓ N M Á S IN F O RM A C IÓ N
Mejoras del XML del plan de Información sobre las estadísticas que
presentación se usaron para compilar el plan de
consulta, incluido el nombre de la
estadística, el contador de
modificaciones, el porcentaje de
muestreo y la última vez que se
actualizaron las estadísticas. Tenga en
cuenta que esto solo se agregó para
los modelos CE 120 y posteriores. Por
ejemplo, no es compatible con CE 70.
Se extendió la advertencia de
desbordamiento en el runtime para
informar el número de páginas escritas
en TempDB durante un
desbordamiento del operador de
paralelismo.
Inserción masiva en montones con La marca de seguimiento 715 permite Migrating SAP workloads to SQL
TABLOCK automático en TF 715 el bloqueo de tabla para operaciones Server just got 2.5x faster (La
de carga masiva en un montón sin migración de las cargas de trabajo de
índices no agrupados. SAP a SQL Server ahora es 2,5 veces
más rápida)
CREATE OR ALTER Implementación de objetos (por Blog del Motor de base de datos de
ejemplo, procedimientos almacenados, SQL Server
desencadenadores, funciones definidas
por el usuario o vistas).
C A RA C T ERÍST IC A DESC RIP C IÓ N M Á S IN F O RM A C IÓ N
Compatibilidad con DROP TABLE para Compatibilidad con DROP TABLE DDL KB 3170123
la replicación para la replicación para que se puedan
quitar artículos de replicación.
Firma del controlador FileStream RsFx El controlador Filestream RsFx se firma Migrating SAP workloads to SQL
y se certifica mediante el portal del Server just got 2.5x faster (La
panel del centro de desarrolladores de migración de las cargas de trabajo de
hardware de Windows (portal de SAP a SQL Server ahora es 2,5 veces
desarrollo), que permite instalar el más rápida)
controlador Filestream RsFx de SQL
Server 2016 SP1 en Windows Server
2016 o en Windows 10 sin ningún
problema.
LPIM en una cuenta de servicio SQL: Permite a los DBA identificar mediante Developers Choice: Programmatically
identificación mediante programación programación si el privilegio Bloquear identify LPIM and IFI privileges in SQL
páginas en la memoria (LPIM) está en Server (Elección de los desarrolladores:
vigor en el momento de iniciar el identificar mediante programación
servicio. privilegios LPIM e IFI en SQL Server)
Cambios del operador INSERT..SELECT Nuevo operador INSERT paralelo en Equipo de asesoramiento al cliente de
paralelo en las tablas temporales operaciones INSERT..SELECT. SQL Server
locales
USE HINT Use la opción de consulta Developers Choice: USE HINT query
OPTION(USE HINT('<option>')) para hints (Elección de los desarrolladores:
modificar el comportamiento del sugerencias de consulta USE HINT)
optimizador de consultas usando
sugerencias de nivel de consulta
admitidas. A diferencia de
QUERYTRACEON, la opción USE HINT
no requiere ningún privilegio de
administrador del sistema.
Considere también las opciones de limpieza manual para impedir que el almacén de consultas pase a modo de
solo lectura. Por ejemplo, ejecute la siguiente consulta para limpiar periódicamente el espacio de datos
completo:
ALTER DATABASE <database name> SET QUERY_STORE CLEAR
De igual modo, ejecute regularmente los siguientes procedimientos almacenados de almacén de consultas para
limpiar las estadísticas de tiempo de ejecución o consultas o planes específicos:
sp_query_store_reset_exec_stats
sp_query_store_remove_plan
sp_query_store_remove_query
Elegir Ayuda en línea o local para configurar la ayuda para "Quiero usar la Ayuda en línea".
Instalar contenido desde Internet y descargar el contenido de SQL Server 2014.
Ayuda F1: Por diseño, cuando se presiona F1 en SQL Server Management Studio, la versión en línea del
artículo de F1 Ayuda se muestra en el explorador. El problema es que aparece la ayuda basada en el explorador
incluso si se ha configurado e instalado la ayuda local.
Actualización de contenido: En SQL Server Management Studio y Visual Studio, la aplicación Visor de Ayuda
puede dejar de responder mientras se agrega la documentación. Para solucionar este problema, realice los
siguientes pasos. Para obtener más información sobre este problema, vea Visual Studio Help Viewer freezes(El
Visor de Ayuda de Visual Studio se bloquea).
Abra el archivo %LOCALAPPDATA%\Microsoft\HelpViewer2.2\HlpViewer_SSMS16_en-US.settings |
HlpViewer_VisualStudio14_en-US.settings en el Bloc de notas y cambie la fecha en el siguiente código a una
fecha en el futuro.
Información adicional
Instalación de SQL Server 2016
Vínculos e información del Centro de actualizaciones de SQL Server sobre todas las versiones compatibles
Obtener ayuda
UserVoice: ¿Tiene sugerencias para mejorar SQL Server?
Preguntas y respuestas de Microsoft (SQL Server)
Stack Exchange de DBA (etiqueta sql-server): Preguntas sobre SQL Server
Stack Overflow (etiqueta sql-server): Respuestas a preguntas de desarrollo de SQL
Reddit: Debate general sobre SQL Server
Información y términos de licencia de Microsoft SQL Server
Opciones de soporte técnico para usuarios profesionales
Contacto con Microsoft
Comentarios y ayuda adicional sobre SQL Server
SE APLICA A: SQL Server Azure SQL Database Azure Synapse Analytics Almacenamiento de
datos paralelos
En este artículo se describen problemas conocidos relacionados con las versiones de SQL Server 2014 (12.x),
incluidos los Service Packs relacionados.
Buffer Pool Extension Permite al grupo de búferes de SQL Extensión del grupo de búferes
Server escalar más allá de 8 TB.
Sugerencia MAXDOP para los Esta mejora es útil para ejecutar DBCC Sugerencias (Transact-SQL): consulta
comandos DBCC CHECK* CHECKDB con una opción MAXDOP
que no sea el valor sp_configure.
Registro del tiempo de espera de Se ha incorporado una nueva Diagnóstico mejorado del tiempo de
AlwaysON capacidad de registro para los espera de concesión de los grupos de
mensajes de tiempo de espera de disponibilidad AlwaysOn
concesión para que se registre el
tiempo actual y los tiempos de
renovación previstos.
DMF para recuperar el búfer de Ahora está disponible una nueva DMF sys.dm_exec_input_buffer
entrada en SQL Server para recuperar el búfer de entrada de
una sesión o solicitud
(sys.dm_exec_input_buffer). Es
funcionalmente equivalente a DBCC
INPUTBUFFER.
Compatibilidad con DROP DDL para la Permite quitar de la base de datos y de KB 3170123
replicación la publicación una tabla que se incluye
como un artículo en una publicación
de replicación transaccional.
Generación de perfiles ligera por cada Optimiza la recopilación de estadísticas Developers Choice: Query progress -
operador en la ejecución de consultas de ejecución de consultas por cada anytime, anywhere (Elección de los
operador (por ejemplo, el número real desarrolladores: progreso de la
de filas). consulta, en cualquier momento y en
cualquier lugar)
Diagnóstico de la ejecución de Las advertencias hash y las Mejora del diagnóstico del
consultas para el desbordamiento de advertencias de ordenación ahora desbordamiento de temptdb
tempdb tienen más columnas para realizar el
seguimiento de estadísticas de E/S
física, la memoria usada y las filas
afectadas.
Este mensaje es solo informativo y no se requiere ninguna acción por parte del usuario.
Solución alternativa: Ninguno. Este mensaje es meramente informativo.
Los detalles de índices que faltan indican incorrectamente columnas incluidas para la tabla optimizada para memoria
Problema: si SQL Server 2014 detecta que falta un índice para una consulta en una tabla optimizada para
memoria, notificará un índice que falta en SHOWPLAN_XML, así como en las DMV de índices que faltan, como
sys.dm_db_missing_index_details. En algunos casos, los detalles de los índices que faltan contendrán columnas
incluidas. Como todas las columnas se incluyen implícitamente con todos los índices de las tablas optimizadas
para memoria, no se permite especificar explícitamente columnas incluidas con índices optimizados para
memoria.
Solución alternativa: no especifique la cláusula INCLUDE con índices en tablas optimizadas para memoria.
Los detalles de índices que faltan omiten índices que faltan si un índice hash existe pero no es adecuado para la consulta
Problema: si tiene un índice HASH en columnas de una tabla optimizada para memoria a la que se hace
referencia en una consulta, pero el índice no se puede usar para la consulta, SQL Server 2014 no notificará
siempre un índice que falta en SHOWPLAN_XML y en la DMV sys.dm_db_missing_index_details.
En concreto, si una consulta contiene predicados de igualdad que implican un subconjunto de las columnas de
clave de índice o si contiene predicados de desigualdad que implican las columnas de clave de índice, el índice
HASH no se puede usar tal cual y se necesitaría otro índice para ejecutar la consulta de forma eficaz.
Solución alternativa: en caso de que esté usando índices hash, inspeccione las consultas y los planes de
consulta para determinar si las consultas pueden beneficiarse de operaciones Index Seek en un subconjunto de
la clave de índice, o de operaciones Index Seek en predicados de desigualdad. Si necesita buscar en un
subconjunto de la clave de índice, use un índice NO CLÚSTER, o use un índice HASH solamente en las columnas
en las que necesita buscar. Si necesita buscar en un predicado de desigualdad, use un índice NO CLÚSTER en
lugar de HASH.
Error al usar una tabla optimizada para memoria y una variable de tabla optimizada para memoria en la misma consulta, si la
opción de base de datos READ_COMMITTED_SNAPSHOT está establecida en ON
Problema: si la opción de base de datos READ_COMMITTED_SNAPSHOT está establecida en ON, y tiene acceso
a una tabla optimizada para memoria y a una variable de tabla optimizada para memoria en la misma
instrucción en un contexto que no sea de transacción de usuario, puede aparecer este mensaje de error:
Msg 41359
A query that accesses memory optimized tables using the READ COMMITTED
isolation level, cannot access disk based tables when the database option
READ_COMMITTED_SNAPSHOT is set to ON. Provide a supported isolation level
for the memory optimized table using a table hint, such as WITH (SNAPSHOT).
Solución alternativa: use la sugerencia de tabla WITH (SNAPSHOT) con la variable de tabla, o establezca la
opción de base de datos MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT en ON, con la siguiente instrucción:
Escritura:
SELECT((@v0 + ... + @v49) + (@v50 + ... + @v99)) + ((@v100 + ... + @v149) + (@v150 + ... + @v199))
2. Crear un segundo procedimiento con una expresión ligeramente simplificada, para el plan de
presentación: la forma general del plan debe ser al misma. Por ejemplo, en lugar de:
Escritura:
El uso de un parámetro o una variable de cadena con DATEPART y funciones relacionadas en un procedimiento almacenado
compilado de forma nativa produce un error
Problema: al usar un procedimiento almacenado que se ha compilado de forma nativa y que usa un parámetro
de cadena o una variable con las funciones integradas DATEPART, DAY, MONTH y YEAR, se muestra un mensaje
de error que indica que no se admite datetimeoffset con procedimientos almacenados que se han compilado de
forma nativa.
Solución alternativa: asigne el parámetro o la variable de cadena a una nueva variable de tipo datetime2 y
use esa variable en la función DATEPART, DAY, MONTH o YEAR. Por ejemplo:
DECLARE @d datetime2 = @string
DATEPART(weekday, @d)
Para obtener más información, vea Sugerencias, trucos y solución de problemas de SQL Server 2014 Reporting
Services.
Orden necesario para actualizar una granja de servidores de SharePoint de varios nodos a SQL Server 2014 Reporting Services
Problema: se produce un error en la representación de informes en una granja de varios nodos si las instancias
del servicio compartido de SharePoint de Reporting Services se actualizan antes que todas las instancias del
Complemento de Reporting Services para productos de SharePoint.
Solución alternativa: en una granja de SharePoint de varios nodos:
1. Actualice primero todas las instancias del Complemento de Reporting Services para productos de
SharePoint.
2. Actualice después todas las instancias del servicio compartido de SharePoint de Reporting Services .
Para obtener más información, vea Sugerencias, trucos y solución de problemas de SQL Server 2014 Reporting
Services.
SQL Server 2014 RTM en máquinas virtuales de Azure
El Asistente para agregar réplicas de Azure devuelve un error al configurar un agente de escucha del grupo de disponibilidad en
Azure
Problema: Si un grupo de disponibilidad tiene un agente de escucha, el Asistente para crear réplicas de Azure
devolverá un error al intentar configurar el agente de escucha en Azure.
Este problema se debe a que los agentes de escucha de los grupos de disponibilidad necesitan que se asigne
una dirección IP a cada subred que hospede réplicas de grupos de disponibilidad, incluida la subred de Azure.
Solución alternativa:
1. En la página Agente de escucha, asigne una dirección IP estática disponible en la subred de Azure que
hospedará la réplica del grupo de disponibilidad al Agente de escucha del grupo de disponibilidad.
Esta solución alternativa permitirá que el asistente agregue la réplica a Azure.
2. Cuando se complete el asistente, necesitará finalizar la configuración del agente de escucha en Azure
como se describe en Configuración del agente de escucha de los Grupos de disponibilidad AlwaysOn en
Azure.
Analysis Services (RTM )
Se debe descargar, instalar y registrar MSOLAP.5 para una nueva granja de SharePoint 2010 configurada con SQL Server 2014
Problema:
En SharePoint 2010 se debe descargar, instalar y registrar MSOLAP.5 para una nueva granja de SharePoint
2013 configurada con SQL Server 2014, configurada con una implementación de SQL Server 2014 RTM,
libros PowerPivot no se pueden conectar a los modelos de datos porque el proveedor al que se hace
referencia en la cadena de conexión no está instalado.
Solución alternativa:
1. Descargue el proveedor MSOLAP.5 desde SQL Server 2012 SP1 (11.0.3x) Feature Pack. Instale el
proveedor en los servidores de aplicaciones que ejecutan Excel Services. Para obtener más información,
vea la sección "Proveedor OLE DB de Microsoft Analysis Services para Microsoft SQL Server 2012 SP1"
de Microsoft SQL Server 2012 SP1 Feature Pack.
2. Registre MSOLAP.5 como proveedor de confianza con Servicios de Excel de SharePoint. Para obtener más
información, vea Agregar MSOLAP.5 como proveedor de datos de confianza en Excel Services.
Más información:
SQL Server 2014 (12.x) incluye MSOLAP.6. SQL Server 2012 (11.x) y SQL Server 2014 (12.x)Power Pivot
usan MSOLAP.5. Si MSOLAP.5 no está instalado en el equipo en el que se ejecuta Servicios de Excel, Servicios
de Excel no puede cargar los modelos de datos.
Se debe descargar, instalar y registrar MSOLAP.5 para una nueva granja de SharePoint 2013 configurada con SQL Server 2014
Problema:
En una granja de SharePoint 2013 configurada con una implementación de SQL Server 2014 (12.x) , libros
de Excel que hacen referencia al proveedor MSOLAP.5 no se pueden conectar a los modelos de datos
tabulares porque el proveedor al que se hace referencia en la cadena de conexión no está instalado.
Solución alternativa:
1. Descargue el proveedor MSOLAP.5 desde SQL Server 2012 SP1 (11.0.3x) Feature Pack. Instale el
proveedor en los servidores de aplicaciones que ejecutan Excel Services. Para obtener más información,
vea la sección "Proveedor OLE DB de Microsoft Analysis Services para Microsoft SQL Server 2012 SP1"
de Microsoft SQL Server 2012 SP1 Feature Pack.
2. Registre MSOLAP.5 como proveedor de confianza con Servicios de Excel de SharePoint. Para obtener más
información, vea Agregar MSOLAP.5 como proveedor de datos de confianza en Excel Services.
Más información:
SQL Server 2014 (12.x) incluye MSOLAP.6. Pero los libros PowerPivot de SQL Server 2014 usan MSOLAP.5.
Si MSOLAP.5 no está instalado en el equipo en el que se ejecuta Servicios de Excel, Servicios de Excel no
puede cargar los modelos de datos.
Programaciones de actualización de datos dañadas (RTM)
Problema:
Actualiza una programación de actualización y la programación resulta dañada y no se puede usar.
Solución alternativa:
1. En Microsoft Excel, desactive las propiedades avanzadas personalizadas. Vea la sección "Solución alternativa"
del siguiente artículo KB 2927748 de Knowledge Base.
Más información:
Si la longitud serializada de la programación de actualización es menor que la de la programación original, al
actualizar una programación de actualización de datos para un libro, el tamaño de búfer no se actualiza
correctamente y la nueva información de programación se combina con la información de programación
anterior, dando lugar a una programación dañada.
Data Quality Services (RTM )
No hay compatibilidad entre versiones con Data Quality Services de Master Data Services
Problema: Los siguientes escenarios no se admiten:
Master Data Services 2012 hospedado en una base de datos de motor de base de datos de SQL Server
en SQL Server 2012 con Data Quality Services 2012 instalado.
Master Data Services 2012 hospedado en una base de datos de motor de base de datos de SQL Server
en SQL Server 2014 con Data Quality Services 2014 instalado.
Solución alternativa: use la misma versión de Master Data Services que la base de datos del motor de base
de datos y Data Quality Services.
Problemas del Asesor de actualizaciones (RTM )
El Asesor de actualizaciones de SQL Server 2014 notifica problemas irrelevantes de actualización de SQL Server Reporting Services
Problema: el Asesor de actualizaciones de SQL Server (SSUA) incluido con SQL Server 2014 notifica
incorrectamente varios errores al analizar el servidor de SQL Server Reporting Services.
Solución alternativa: este problema se ha corregido en el Asesor de actualizaciones de SQL Server incluido
en el SQL Server 2014 Feature Pack para SSUA.
El Asesor de actualizaciones de SQL Server 2014 notifica un error al analizar el servidor de SQL Server Integration Services
Problema: el Asesor de actualizaciones de SQL Server (SSUA) incluido con SQL Server 2014 notifica un error al
analizar el servidor de SQL Server Integration Services. El error que se muestra al usuario es:
The installed version of Integration Services does not support Upgrade Advisor.
The assembly information is "Microsoft.SqlServer.ManagedDTS, Version=11.0.0.0,
Culture=neutral, PublicKeyToken=89845dcd8080cc91
Solución alternativa: este problema se ha corregido en el Asesor de actualizaciones de SQL Server incluido
en el SQL Server 2014 Feature Pack para SSUA.
Obtener ayuda
UserVoice: ¿Tiene sugerencias para mejorar SQL Server?
Preguntas y respuestas de Microsoft (SQL Server)
Stack Exchange de DBA (etiqueta sql-server): Preguntas sobre SQL Server
Stack Overflow (etiqueta sql-server): Respuestas a preguntas de desarrollo de SQL
Reddit: Debate general sobre SQL Server
Información y términos de licencia de Microsoft SQL Server
Opciones de soporte técnico para usuarios profesionales
Contacto con Microsoft
Comentarios y ayuda adicional sobre SQL Server
Problemas conocidos de Python y R en Machine
Learning Services de SQL Server
14/07/2021 • 36 minutes to read
IMPORTANT
La compatibilidad con Machine Learning Server (anteriormente conocido como R Server) finalizará el 1 de julio de 2022.
Para obtener más información, consulte ¿Qué sucederá con Machine Learning Server?
En este artículo se describen las limitaciones o los problemas conocidos de los componentes de Python y R que
se proporcionan en SQL Server Machine Learning Services y SQL Server 2016 R Services.
NOTE
Si está ejecutando SQL Server 2019 en Linux, edite o cree .bash_profile en el directorio principal de usuario y agregue la
línea export MKL_CBWR="AUTO" . Ejecute este archivo escribiendo source .bash_profile en un símbolo del sistema de
Bash. Para reiniciar R_SERVER, escriba Sys.getenv() en el símbolo del sistema de R.
2. Error de tiempo de ejecución del script de R (regresión de SQL Server 2017 CU5-CU7)
En el caso de SQL Server 2017, en las actualizaciones acumulativas de la 5 a la 7, hay una regresión en el
archivo rlauncher.config en que la ruta de acceso del archivo de directorio temporal incluye un espacio. Esta
regresión se ha corregido en CU8.
El error que verá al ejecutar el script de R incluye los siguientes mensajes:
No se puede comunicar con el tiempo de ejecución para el script "R". Compruebe los requisitos del tiempo
de ejecución "R".
Mensaje(s) STDERR del script externo:
Error irrecuperable: no se puede crear "R_TempDir"
Solución alternativa
Instale CU8 cuando esté disponible. Como alternativa, puede volver a crear rlauncher.config si ejecuta
registerrext con uninstall/install en un símbolo del sistema con privilegios elevados.
El error se produce porque, en un controlador de dominio, el servicio no puede crear las 20 cuentas locales
necesarias para ejecutar el aprendizaje automático. Como regla general, no se recomienda instalar SQL Server
en un controlador de dominio. Para obtener más información, vea el boletín de soporte técnico 2032911.
4. Instalar la versión de servicio más reciente para garantizar la compatibilidad con Microsoft R Client
Si instala la versión más reciente de Microsoft R Client y la usa para ejecutar R en SQL Server en un contexto de
proceso remoto, podría aparecer un error como el siguiente:
You are running version 9.x.x of Microsoft R Client on your computer, which is incompatible with Microsoft R
Server version 8.x.x. Download and install a compatible version. (Está ejecutando la versión 9.0.0 del Cliente
de Microsoft R en el equipo, que es incompatible con Microsoft R Server versión 8.0.3. Descargue e instale
una versión compatible).
SQL Server 2016 requiere que las bibliotecas de R del cliente coincidan exactamente con las bibliotecas de R del
servidor. La restricción se ha quitado para versiones posteriores a R Server 9.0.1. No obstante, si se encuentra
con este error, compruebe la versión de las bibliotecas de R que usan el cliente y el servidor; si es necesario,
actualice el cliente para que coincida con la versión del servidor.
La versión de R que se instala con SQL Server R Services se actualiza siempre que se instala una versión del
servicio SQL Server. Para garantizar que siempre tenga las versiones más actualizadas de los componentes de R,
asegúrese de instalar todos los Service Pack.
Para garantizar la compatibilidad con Microsoft R Client 9.0.0, instale las actualizaciones que se describen en
este artículo de soporte técnico.
Para evitar problemas con los paquetes de R, también puede actualizar la versión de las bibliotecas de R que
están instaladas en el servidor si cambia el contrato de servicio para que use la directiva de soporte técnico del
ciclo de vida moderno, como se describe en la siguiente sección. Cuando lo haga, la versión de R que se instala
con SQL Server se actualiza en la misma programación que se usa para las actualizaciones de Machine Learning
Server (anteriormente Microsoft R Server).
Se aplica a: SQL Server 2016 R Services, con la versión 9.0.0 o anterior de R Server
5. Faltan componentes de R en la configuración de CU3
Un número limitado de máquinas virtuales de Azure se ha aprovisionado sin los archivos de instalación de R
que deben incluirse con SQL Server. El problema se presenta en las máquinas virtuales aprovisionadas en el
período comprendido entre el 05-01-2018 y el 23-01-2018. Este problema también podría afectar a las
instalaciones locales si ha aplicado la actualización de CU3 para SQL Server 2017 durante el período del 05-01-
2018 al 23-01-2018.
Se ha proporcionado una versión de servicio que incluye la versión correcta de los archivos de instalación de R.
Paquete de actualización acumulativa 3 para SQL Server 2017 KB4052987.
Para instalar los componentes y reparar SQL Server 2017 CU3, debe desinstalar CU3 y reinstalar la versión
actualizada:
1. Descargue el archivo de instalación de CU3 actualizado, que incluye los instaladores de R.
2. Desinstale CU3. En el panel de control, busque Desinstalar una actualización y después seleccione
"Revisión 3015 para SQL Server 2017 (KB4052987) (64 bits)". Continúe con los pasos de desinstalación.
3. Reinstale la actualización de CU3; para ello, haga doble clic en la actualización de KB4052987 que acaba de
descargar: SQLServer2017-KB4052987-x64.exe . Siga las instrucciones de instalación.
6. No se pueden instalar los componentes de Python en instalaciones sin conexión de
SQL Server 2017 CTP 2.0 o versiones posteriores
Si instala una versión preliminar de SQL Server 2017 en un equipo sin acceso a Internet, es posible que el
instalador no muestre la página que solicita la ubicación de los componentes de Python descargados. En tal
caso, puede instalar la característica Machine Learning Services, pero no los componentes de Python.
Este problema se ha corregido en la versión de lanzamiento. Además, esta limitación no afecta a los
componentes de R.
Se aplica a: SQL Server 2017 con Python
Advertencia de versión incompatible al conectarse a una versión anterior de SQL Server R Services desde un
cliente mediante SQL Server 2017 (14.x)
Al ejecutar el código de R en un contexto de proceso de SQL Server 2016, es posible que vea el siguiente error:
You are running version 9.0.0 of Microsoft R Client on your computer, which is incompatible with the
Microsoft R Server version 8.0.3. Download and install a compatible version. (Está ejecutando la versión
9.0.0 del Cliente de Microsoft R en el equipo, que es incompatible con Microsoft R Server versión 8.0.3.
Descargue e instale una versión compatible).
Para obtener los instaladores más recientes, consulte Instalación de componentes de aprendizaje automático sin
acceso a Internet.
Se aplica a: SQL Server 2016 R Services, con la versión 9.0.0 o anterior de R Server
8. No se puede iniciar el servicio Launchpad si la versión es diferente de la versión de R
Si instala SQL Server R Services independientemente del motor de base de datos y las versiones de compilación
son diferentes, es posible que vea el siguiente error en el registro de eventos del sistema:
El servicio SQL Server Launchpad no pudo iniciarse debido al siguiente error: El servicio no respondió a la
petición de inicio o control de manera oportuna.
Por ejemplo, este error podría producirse si instala el motor de base de datos mediante la versión de
lanzamiento, aplica una revisión para actualizar el motor de base de datos y, después, agrega la característica R
Services mediante la versión de lanzamiento.
Para evitar este problema, use una utilidad como el administrador de archivos para comparar las versiones de
Launchpad.exe con la versión de los archivos binarios de SQL, como sqldk.dll. Todos los componentes deben
tener el mismo número de versión. Si actualiza un componente, asegúrese de aplicar la misma actualización a
los demás componentes instalados.
Busque Launchpad en la carpeta Binn de la instancia. Por ejemplo, en una instalación predeterminada de
SQL Server 2016, la ruta de acceso podría ser
C:\Program Files\Microsoft SQL Server\MSSQL.13.InstanceNameMSSQL\Binn .
9. Un firewall bloquea los contextos de proceso remoto en instancias de SQL Server que se ejecutan en
máquinas virtuales de Azure
Si ha instalado SQL Server en una máquina virtual de Azure, es posible que no pueda usar contextos de proceso
que requieran el uso del área de trabajo de la máquina virtual. El motivo es que, de forma predeterminada, el
firewall de las máquinas virtuales de Azure incluye una regla que bloquea el acceso a la red de las cuentas de
usuario locales de R.
Como alternativa, en la máquina virtual de Azure, abra Firewall de Windows con seguridad avanzada ,
seleccione Reglas de salida y deshabilite la regla siguiente: Block network access for R local user
accounts in SQL Ser ver instance MSSQLSERVER (Bloquear el acceso a la red de las cuentas de usuario
locales de R en la instancia de SQL Server MSSQLSERVER). También puede dejar la regla habilitada, pero
cambiar la propiedad de seguridad a Allow if secure (Permitir si es seguro).
10. Autenticación implícita en SQLEXPRESS
Al ejecutar trabajos de R desde una estación de trabajo de ciencia de datos remota mediante la autenticación
integrada de Windows, SQL Server usa la autenticación implícita para generar las llamadas ODBC locales que
solicite el script. Pero esta característica no funcionaba en la compilación RTM de SQL Server Express Edition.
Para corregir el problema, se recomienda que actualice a una versión de servicio posterior.
Si no puede actualizar, use un inicio de sesión de SQL como solución alternativa para ejecutar los trabajos de R
remotos que requieran llamadas ODBC insertadas.
Se aplica a: SQL Server 2016 R Services Express Edition
11. Límites de rendimiento cuando se llama a bibliotecas que usa SQL Server desde otras herramientas
Es posible llamar a las bibliotecas de aprendizaje automático que están instaladas para SQL Server desde una
aplicación externa, como RGui. Esta puede ser la manera más cómoda de realizar ciertas tareas, como instalar
nuevos paquetes o ejecutar pruebas ad hoc en ejemplos de código muy cortos. No obstante, fuera de
SQL Server, el rendimiento podría ser limitado.
Por ejemplo, incluso si usa SQL Server Enterprise Edition, R se ejecuta en modo de subproceso único si ejecuta
el código de R mediante herramientas externas. Para conseguir las ventajas de rendimiento en SQL Server, inicie
una conexión de SQL Server y use sp_execute_external_script para llamar al tiempo de ejecución del script
externo.
Como regla general, evite llamar a las bibliotecas de aprendizaje automático que usa SQL Server desde
herramientas externas. Si necesita depurar código de R o Python, suele ser más fácil hacerlo fuera de
SQL Server. Para obtener las mismas bibliotecas que están en SQL Server, puede instalar Microsoft R Client o
SQL Server 2017 Machine Learning Server (independiente).
12. SQL Server Data Tools no admite los permisos que requieren los scripts externos
Al usar Visual Studio o SQL Server Data Tools para publicar un proyecto de base de datos, si alguna entidad de
seguridad tiene permisos específicos para la ejecución de scripts externos, podría recibir un error similar al
siguiente:
TSQL Model: Error detected when reverse engineering the database. The permission was not recognized and
was not imported (Modelo TSQL: Error detectado al usar técnicas de ingeniería inversa en la base de datos.
El permiso no se ha reconocido y no se ha importado).
Actualmente, el modelo DACPAC no admite los permisos que usan R Services o Machine Learning Services,
como GRANT ANY EXTERNAL SCRIPT o EXECUTE ANY EXTERNAL SCRIPT. Este problema se corregirá en una
versión posterior.
Como solución alternativa, ejecute las instrucciones GRANT adicionales en un script posterior a la
implementación.
13. La ejecución de scripts externos está limitada debido a los valores predeterminados de gobernanza de
recursos
En Enterprise Edition, puede usar grupos de recursos para administrar procesos de script externos. En algunas
compilaciones anteriores, la memoria máxima que se podía asignar a los procesos de R era del 20 %. Por lo
tanto, si el servidor tenía 32 GB de RAM, los ejecutables de R (RTerm.exe y BxlServer.exe) podían usar un máximo
de 6,4 GB en una única solicitud.
Si encuentra limitaciones de recursos, compruebe el valor predeterminado actual. Si el 20 % no es suficiente,
consulte la documentación de SQL Server para informarse sobre cómo cambiar este valor.
Se aplica a: SQL Server 2016 R Services, Enterprise Edition
14. Error al usar sp_execute_external_script sin libc++.so en Linux
En un equipo Linux limpio que no tiene libc++.so instalado, se produce un error al ejecutar una consulta
sp_execute_external_script (SPEES) con Java o un lenguaje externo porque commonlauncher.so no puede cargar
libc++.so .
Por ejemplo:
Unable to communicate with the runtime for 'Java' script for request id: 94257840-1704-45E8-83D2-
2F74AEB46CF7. Please check the requirements of 'Java' runtime.
Solución alternativa
Puede usar una de las siguientes opciones:
1. Copie libc++* de /opt/mssql/lib a la ruta de acceso predeterminada del sistema /lib64 .
2. Agregue las siguientes entradas a /var/opt/mssql/mssql.conf para exponer la ruta de acceso:
[extensibility]
readabledirectories = /opt/mssql
Solución alternativa
Deshabilite FIPS antes de instalar SQL Server 2019 con la característica Microsoft Machine Learning
Ser vices y extensiones de lenguaje o la actualización de la instancia de SQL Server. Una vez completada la
instalación o la actualización, puede volver a habilitar FIPS.
Se aplica a: SQL Server 2019
El motivo es que una función de R intenta leer la ruta de acceso y produce un error si el grupo de usuarios
integrado SQLRUserGroup no tiene acceso de lectura. La advertencia que se genera no bloquea la ejecución
del script de R actual, pero la advertencia puede repetirse de forma reiterada siempre que el usuario ejecute
cualquier otro script de R.
Si ha instalado SQL Server en la ubicación predeterminada, este error no se produce porque todos los usuarios
de Windows tienen permisos de lectura en la carpeta Program Files .
Este problema se soluciona en una próxima versión de servicio. Como solución alternativa, proporcione al
grupo SQLRUserGroup acceso de lectura para todas las carpetas principales de ExternalLibraries .
2. Error de serialización entre versiones anteriores y nuevas de RevoScaleR
Al pasar un modelo con un formato serializado a una instancia de SQL Server remota, puede obtener el error:
Este error se produce si ha guardado el modelo con una versión reciente de la función de serialización
rxSerializeModel, pero la instancia de SQL Server donde se deserializa el modelo tiene una versión anterior de
las API de RevoScaleR, de SQL Server 2017 CU2 o versiones anteriores.
Como solución alternativa, puede actualizar la instancia de SQL Server 2017 a CU3 o una versión posterior.
El error no aparece si la versión de la API es la misma ni tampoco si va a mover un modelo guardado con una
función de serialización anterior a un servidor que usa una versión más reciente de la API de serialización.
En otras palabras, use la misma versión de RevoScaleR para las operaciones de serialización y deserialización.
3. La puntuación en tiempo real no controla correctamente el parámetro learningRate en los modelos de
árbol y bosque
Si crea un modelo mediante un método de árbol de decisión o de bosque de decisión y especifica la velocidad
de aprendizaje, podría ver resultados incoherentes al usar sp_rxpredict o la función PREDICT de SQL, en
comparación con el uso de rxPredict .
La causa es un error en la API que procesa modelos serializados y se limita al parámetro learningRate : por
ejemplo, en rxBTrees.
Este problema se soluciona en una próxima versión de servicio.
4. Limitaciones de la afinidad del procesador para trabajos de R
En la compilación de versión inicial de SQL Server 2016, se podía establecer la afinidad del procesador
únicamente para las CPU del primer grupo K. Por ejemplo, si el servidor es una máquina de dos sockets con dos
grupos K, solo se usan los procesadores del primer grupo K para los procesos de R. La misma limitación se
aplica al configurar la gobernanza de recursos para trabajos del script de R.
Este problema está corregido en SQL Server 2016 Service Pack 1. Se recomienda que actualice a la versión de
servicio más reciente.
Se aplica a: Versión RTM de SQL Server 2016 R Services
5. No se pueden realizar cambios en los tipos de columna al leer datos en un contexto de proceso de SQL
Server
Si el contexto de proceso está establecido en la instancia de SQL Server, no puede usar el argumento colClasses
(u otros argumentos similares) para cambiar el tipo de datos de las columnas en el código de R.
Por ejemplo, la instrucción siguiente producirá un error si la columna CRSDepTimeStr no es ya un entero:
Como solución alternativa, puede volver a escribir la consulta SQL para usar CAST o CONVERT y presentar los
datos a R con el tipo de datos correcto. En general, el rendimiento es mejor si trabaja con los datos mediante
SQL, en lugar de cambiar los datos en el código de R.
Se aplica a: SQL Server 2016 R Services
6. Límites en el tamaño de los modelos serializados
Al guardar un modelo en una tabla de SQL Server, debe serializar el modelo y guardarlo en un formato binario.
Teóricamente, el tamaño máximo de un modelo que se puede almacenar con este método es de 2 GB, que es el
tamaño máximo de las columnas varbinary en SQL Server.
Si necesita usar modelos de mayor tamaño, hay disponibles las siguientes soluciones alternativas:
Tome medidas para reducir el tamaño del modelo. Algunos paquetes de R de código abierto incluyen una
gran cantidad de información en el objeto de modelo y gran parte de esta información se puede quitar
para su implementación.
Use la selección de características para quitar columnas innecesarias.
Si usa un algoritmo de código abierto, considere la posibilidad de llevar a cabo una implementación
similar con el algoritmo correspondiente en MicrosoftML o RevoScaleR. Estos paquetes se han
optimizado para escenarios de implementación.
Después de racionalizar el modelo y reducir el tamaño con los pasos anteriores, vea si se puede usar la
función memCompress en base R para reducir el tamaño del modelo antes de pasarlo a SQL Server. Esta
opción es mejor si el modelo está cerca del límite de 2 GB.
En el caso de modelos de mayor tamaño, puede usar la característica FileTable de SQL Server para
almacenar los modelos, en lugar de usar una columna varbinary.
Para usar FileTable, debe agregar una excepción de firewall, ya que los datos almacenados en FileTable se
administran mediante el controlador de sistema de archivos de FileStream en SQL Server y las reglas de
Firewall predeterminadas bloquean el acceso a archivos de red. Para obtener más información, vea
Habilitar los requisitos previos de FileTable.
Después de haber habilitado FileTable, para escribir el modelo, obtendrá una ruta de acceso de SQL
mediante la API de FileTable y después escribirá el modelo en esa ubicación desde el código. Cuando
tenga que leer el modelo, obtenga la ruta de acceso de SQL y después llame al modelo mediante la ruta
de acceso del script. Para obtener más información, vea Obtener acceso a FileTables con API de entrada-
salida de archivo.
7. Evitar borrar áreas de trabajo al ejecutar código de R en un contexto de proceso de SQL Server
Si usa un comando de R para borrar los objetos del área de trabajo mientras se ejecuta código de R en un
contexto de proceso de SQL Server, o bien si borra el área de trabajo como parte de un script de R llamado
mediante sp_execute_external_script, podría recibir este error: workspace object 'revoScriptConnection' not
found (No se ha encontrado el objeto del área de trabajo "revoScriptConnection").
revoScriptConnection es un objeto del área de trabajo de R que contiene información sobre una sesión de R a la
que se llama desde SQL Server. Pero si su código de R incluye un comando para borrar el área de trabajo (como
rm(list=ls())) , también se borrarán toda la información sobre la sesión y otros objetos del área de trabajo de
R.
Como solución alternativa, evite borrar indiscriminadamente las variables y otros objetos mientras ejecuta R en
SQL Server. Aunque es habitual borrar el área de trabajo cuando se trabaja en la consola de R, puede tener
consecuencias no deseadas.
Para eliminar variables específicas, use la función remove de R: por ejemplo, remove('name1', 'name2', ...) .
Si quiere eliminar varias variables, guarde los nombres de las variables temporales en una lista y realice
periódicamente la recolección de elementos no utilizados.
8. Restricciones en los datos que se pueden proporcionar como entrada para un script de R
No puede usar un script de R en los siguientes tipos de resultados de consulta:
Datos de una consulta de Transact-SQL que haga referencia a columnas AlwaysEncrypted.
Datos de una consulta de Transact-SQL que haga referencia a columnas enmascaradas.
Si necesita usar datos enmascaradas en un script de R, una posible solución alternativa es realizar una
copia de los datos en una tabla temporal y usar esos datos en su lugar.
9. El uso de cadenas como factores puede provocar una degradación del rendimiento
El uso de variables de tipo de cadena como factores puede aumentar considerablemente la cantidad de
memoria que se usa para las operaciones de R. Se trata de un problema conocido en R en general y hay muchos
artículos sobre el tema. Por ejemplo, vea Factors are not first-class citizens in R (Los factores no son de primera
clase en R) de John Mount en R-bloggers o stringsAsFactors: An unauthorized biography (stringsAsFactors: una
biografía no autorizada) de Roger Peng.
Aunque el problema no es específico de SQL Server, puede afectar en gran medida al rendimiento de la
ejecución de código de R en SQL Server. Normalmente, las cadenas se almacenan como varchar o nvarchar y, si
una columna de datos de cadena tiene muchos valores únicos, el proceso de que R las convierta internamente
en enteros y de nuevo en cadenas puede incluso provocar errores de asignación de memoria.
Si no necesita en absoluto un tipo de datos de cadena para otras operaciones, la asignación de los valores de
cadena a un tipo de datos numérico (entero) como parte de la preparación de datos resultaría beneficiosa desde
una perspectiva del rendimiento y la escala.
Para obtener una explicación de este problema y otras sugerencias, vea Rendimiento de R Services: optimización
de datos.
10. Los argumentos varsToKeep y varsToDrop no se admiten en los orígenes de datos de SQL Server
Si usa la función rxDataStep para escribir los resultados en una tabla, utilizar los argumentos varsToKeep y
varsToDrop es una forma cómoda de especificar las columnas que se van a incluir o excluir como parte de la
operación. En cambio, estos argumentos no se admiten en los orígenes de datos de SQL Server.
11. Compatibilidad limitada con los tipos de datos SQL en sp_execute_external_script
No todos los tipos de datos que se admiten en SQL pueden usarse en R. Como solución alternativa, considere la
posibilidad de convertir el tipo de datos no admitido en un tipo de datos compatible antes de pasar los datos a
sp_execute_external_script.
Para obtener más información, consulte Bibliotecas de R y tipos de datos.
12. Posibles daños en las cadenas al usar cadenas Unicode en columnas varchar
El paso de datos Unicode en columnas varchar de SQL Server a R o Python puede producir daños en las
cadenas. Esto se debe a que la codificación de estas cadenas Unicode en las intercalaciones de SQL Server
puede no coincidir con la codificación UTF-8 predeterminada que se usa en R o Python.
Para enviar datos de cadena no ASCII de SQL Server a R o Python, use la codificación UTF-8 (disponible en SQL
Server 2019 (15.x)) o el tipo nvarchar.
13. Solo se puede devolver un valor de tipo raw desde sp_execute_external_script
Cuando se devuelve desde R un tipo de datos binarios (el tipo de datos raw de R), el valor debe enviarse en la
trama de datos de salida.
Con tipos de datos que no sean raw , puede devolver valores de parámetro con los resultados del procedimiento
almacenado si agrega la palabra clave OUTPUT. Para obtener más información, vea Parámetros.
Si quiere usar varios conjuntos de salida que incluyan valores de tipo raw , una posible solución alternativa es
realizar varias llamadas del procedimiento almacenado o enviar los conjuntos de resultados a SQL Server
mediante ODBC.
14. Pérdida de precisión
Dado que Transact-SQL y R admiten varios tipos de datos, los tipos de datos numéricos pueden perder precisión
durante la conversión.
Para obtener más información sobre la conversión implícita de tipos de datos, vea Bibliotecas de R y tipos de
datos.
15. Error de ámbito de variable al usar el parámetro transformFunc
Para transformar datos durante el modelado, puede pasar un argumento transfomFunc en una función como
rxLinmod o rxLogit . No obstante, las llamadas a funciones anidadas pueden provocar errores de ámbito en el
contexto de proceso de SQL Server, incluso si las llamadas funcionan correctamente en el contexto de proceso
local.
El conjunto de datos de ejemplo del análisis no tiene variables
Por ejemplo, supongamos que ha definido dos funciones f y g en su entorno global local, y que g llama a
f . En las llamadas remotas o distribuidas en las que participa g , la llamada a g podría generar un error
porque no se encuentra f , incluso si ha pasado f y g a la llamada remota.
Si se produce este problema, puede solucionarlo insertando la definición de f en la definición de g , en
cualquier lugar antes de que g llame a f .
Por ejemplo:
g <- function(y){
f <- function(x) { 2*x +3}
a <- 10 * y
f(a)
}
R --max-ppsize=500000
USE MASTER
DECLARE @language nvarchar(1) = N'R'
DECLARE @script nvarchar(max) = N'Sys.sleep(100)'
DECLARE @input_data_1 nvarchar(max) = N'select 1'
EXEC sp_execute_external_script @language = @language, @script = @script, @input_data_1 = @input_data_1 with
result sets none
go
USE [LibraryManagementFunctional]
go
El script externo de larga duración anterior en la base de datos maestra finalizará con el siguiente mensaje de
error:
Error de script 'R' durante la ejecución de 'sp_execute_external_script' con HRESULT 0x800704d4.
Solución alternativa
No ejecute la instalación de la biblioteca en paralelo a la consulta de larga duración. También puede volver a
ejecutar la consulta de larga duración una vez completada la instalación.
Se aplica a: SQL Server 2019 solo en clústeres de macrodatos y en Linux.
22. SQL Server deja de responder al ejecutar scripts de R que contienen la ejecución en paralelo
SQL Server 2019 contiene una regresión que afecta a los scripts de R que usan la ejecución en paralelo. Entre
los ejemplos se incluye el uso de rxExec con contexto de cálculo RxLocalPar y scripts que usan el paquete
paralelo. Este problema se debe a errores que el paquete paralelo encuentra al escribir en el dispositivo nulo
mientras se ejecuta en SQL Server.
Se aplica a: SQL Server 2019.
23. Pérdida de precisión en los tipos de datos Money/Numeric/decimal/BigInt
Si ejecuta un script de R con sp_execute_external_script se permiten los tipos de datos Money, Numeric,
Decimal y BigInt como datos de entrada. Pero, dado que se convierten al tipo numérico de R, sufren una pérdida
de precisión con valores muy altos o con valores de separador decimal.
Money : A veces, los valores de céntimos podrían ser imprecisos y, en este caso, se emitiría una advertencia:
Advertencia: No se pueden representar con precisión los valores de céntimos.
Numeric/Decimal : sp_execute_external_script con un script de R no admite el rango completo de esos
tipos de datos y modificaría los últimos dígitos decimales, especialmente aquellos con fracción.
BigInt : R solo admite enteros de 53 bits y, posteriormente, empezará a tener una pérdida de precisión.
declare @b varbinary(max);
exec sp_execute_external_script
@language = N'Python'
, @script = N'b = 0x0'
, @params = N'@b varbinary(max) OUTPUT'
, @b = @b OUTPUT;
go
declare @b varchar(30);
exec sp_execute_external_script
@language = N'Python'
, @script = N' b = "" '
, @params = N'@b varchar(30) OUTPUT'
, @b = @b OUTPUT;
go
[Código: 39004, estado de SQL: S1000] Error de script 'Python' durante la ejecución de
'sp_execute_external_script' con HRESULT 0x80004004.
[Código: 39019, estado de SQL: S1000] Error en el script externo:
SqlSatelliteCall error: Unsupported type in output schema. Supported types: bit, smallint, int, datetime,
smallmoney, real and float. char, varchar are partially supported. (Error de SqlSatelliteCall: tipo no
compatible en el esquema de salida. Tipos compatibles: bit, smallint, int, datetime, smallmoney, real y float.
char y varchar se admiten parcialmente)
/opt/mssql/mlservices/runtime/python/bin/pip -h
Solución alternativa
Instale pip desde Python Package Authority (PyPA):
wget 'https://bootstrap.pypa.io/get-pip.py'
/opt/mssql/mlservices/bin/python/python ./get-pip.py
Recomendación
Vea Instalación de paquetes de Python con sqlmlutils.
Se aplica a: SQL Server 2019 en Linux
7. No se pueden instalar paquetes de Python con pip después de instalar SQL Server 2019 en Windows
Después de instalar SQL Server 2019 en Windows, se producirá un error al intentar instalar un paquete de
Python mediante pip desde una línea de comandos de DOS. Por ejemplo:
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. (pip
se ha configurado con ubicaciones que requieren TLS/SSL, pero el módulo SSL de Python no está
disponible).
Se trata de un problema específico del paquete Anaconda. Se solucionará en una próxima versión de servicio.
Solución alternativa
Copie los archivos siguientes:
libssl-1_1-x64.dll
libcrypto-1_1-x64.dll
de la carpeta
C:\Program Files\Microsoft SQL Server\MSSSQL15.MSSQLSERVER\PYTHON_SERVICES\Library\bin
a la carpeta
C:\Program Files\Microsoft SQL Server\MSSSQL15.MSSQLSERVER\PYTHON_SERVICES\DLLs
Después, abra un nuevo símbolo del sistema del shell de comandos de DOS.
Se aplica a: SQL Server 2019 en Windows
8. Error al usar sp_execute_external_script sin libc++abo.so en Linux
En un equipo con Linux limpio que no tiene libc++abi.so instalado, la ejecución de una consulta
sp_execute_external_script (SPEES) produce el error "No se encontró el archivo o directorio".
Por ejemplo:
EXEC sp_execute_external_script
@language = N'Python'
, @script = N'
OutputDataSet = InputDataSet'
, @input_data_1 = N'select 1'
, @input_data_1_name = N'InputDataSet'
, @output_data_1_name = N'OutputDataSet'
WITH RESULT SETS (([output] int not null));
Msg 39012, Level 16, State 14, Line 0
Unable to communicate with the runtime for 'Python' script for request id: 94257840-1704-45E8-83D2-
2F74AEB46CF7. Please check the requirements of 'Python' runtime.
STDERR message(s) from external script:
Solución alternativa
Ejecute el siguiente comando:
Si recibe un error de "TLS/SSL", consulte 7. No se pueden instalar paquetes de Python con pip, anteriormente en
este artículo.
Se aplica a: SQL Server 2019 en Windows
Pasos siguientes
Recopilación de datos para solucionar problemas de Machine Learning Services de SQL Server
Recopilación de datos para resolver problemas de
scripts de Python y R con Machine Learning
Services de SQL Server
14/07/2021 • 10 minutes to read
IMPORTANT
La compatibilidad con Machine Learning Server (anteriormente conocido como R Server) finalizará el 1 de julio de 2022.
Para obtener más información, consulte ¿Qué sucederá con Machine Learning Server?
En este artículo se describe cómo recopilar los datos que necesita cuando intenta resolver problemas de
Machine Learning Services de SQL Server. Estos datos pueden ser útiles si está resolviendo problemas por su
cuenta o con la ayuda del servicio de atención al cliente de Microsoft.
TIP
Si R Services no funciona, pruebe a ejecutar solo la parte del script de R desde RGui.
Como último recurso, puede abrir archivos en el servidor para determinar la versión instalada. Para ello, busque
el archivo rlauncher.config para obtener la ubicación del runtime de R y el directorio de trabajo actual. Se
recomienda crear y abrir una copia del archivo para no cambiar ninguna de las propiedades por error.
SQL Server 2016
C:\Program Files\Microsoft SQL Server\MSSQL13.<instance_name\MSSQL\Binn\rlauncher.config
Para obtener la versión de R y las versiones de RevoScaleR, abra un símbolo del sistema de R o abra la RGui
asociada a la instancia.
SQL Server 2016
C:\Program Files\Microsoft SQL Server\MSSQL13.<instancename>\R_SERVICES\bin\x64\RGui.exe
La consola de R muestra información de la versión en el inicio. Por ejemplo, la siguiente versión representa la
configuración predeterminada de SQL Server 2017:
Versiones de Python
Hay varias maneras de obtener la versión de Python. La más sencilla consiste en ejecutar esta instrucción desde
Management Studio o cualquier otra herramienta de consulta SQL:
-- Get Python runtime properties:
exec sp_execute_external_script
@language = N'Python'
, @script = N'
import sys
import pkg_resources
OutputDataSet = pandas.DataFrame(
{"property_name": ["Python.home", "Python.version", "Revo.version", "libpaths"],
"property_value": [sys.executable[:-10], sys.version,
pkg_resources.get_distribution("revoscalepy").version, str(sys.path)]}
)
'
with WITH RESULT SETS (SQL keywords) ((PropertyName nvarchar(100), PropertyValue nvarchar(4000)));
Si Machine Learning Services no se está ejecutando, puede determinar la versión de Python instalada
examinando el archivo pythonlauncher.config. Se recomienda crear y abrir una copia del archivo para no
cambiar ninguna de las propiedades por error.
1. Solo en SQL Server 2017:
C:\Program Files\Microsoft SQL Server\MSSQL14.
<instance_name>\MSSQL\Log\ExtensibilityLog\pythonlauncher.config
2. Obtenga el valor de PYTHONHOME .
3. Obtenga el valor del directorio de trabajo actual.
NOTE
Si ha instalado tanto Python como R en SQL Server 2017, el directorio de trabajo y el grupo de cuentas de trabajo serán
comunes a ambos lenguajes.
NOTE
El nombre exacto de la carpeta varía en función del nombre de la instancia.
Python
NOTE
El nombre exacto de la carpeta varía en función del nombre de la instancia. Según la configuración, la carpeta podría estar
en otra unidad.
Por ejemplo, los siguientes mensajes de registro tienen que ver con el marco de extensibilidad:
Error de LogonUser para el usuario MSSQLSERVER01
Podría indicar que las cuentas de trabajo que ejecutan scripts externos no pueden acceder a la instancia.
Error de InitializePhysicalUsersPool
Este mensaje podría significar que la configuración de seguridad impide que el programa de instalación
cree el grupo de cuentas de trabajo necesarias para ejecutar scripts externos.
Security Context Manager initialization failed (Error de inicialización del administrador de contextos de
seguridad)
Satellite Session Manager initialization failed (Error de inicialización del administrador de sesiones
satélite)
Parámetros de configuración
En esta sección se enumeran otros componentes o proveedores que pueden ser origen de errores al ejecutar
scripts de R o Python.
¿Qué protocolos de red hay disponibles?
Machine Learning Services requiere los siguientes protocolos de red para la comunicación interna entre los
componentes de extensibilidad y para la comunicación con clientes de R o de Python externos.
Canalizaciones con nombre
TCP/IP
Abra el Administrador de configuración de SQL Server para saber si un protocolo está instalado y, si lo está,
para saber si está habilitado.
Permisos y configuración de seguridad
En cuentas de trabajo:
1. En el Panel de control, abra Usuarios y grupos y busque el grupo usado para ejecutar trabajos de script
externos. Ese grupo es SQLRUserGroup de forma predeterminada.
2. Compruebe que el grupo existe y que contiene al menos una cuenta de trabajo.
3. En SQL Server Management Studio, seleccione la instancia en la que se van a ejecutar trabajos de R o Python,
seleccione Seguridad y, después, determine si hay un inicio de sesión para SQLRUserGroup.
4. Revise los permisos del grupo de usuarios.
En cuentas de usuario individuales:
1. Determine si la instancia admite solo la autenticación de modo mixto, solo inicios de sesión de SQL o solo
la autenticación de Windows. Esta configuración afecta a los requisitos de código de R o de Python.
2. Por cada usuario que necesite ejecutar código de R, determine el nivel de permisos necesario en cada
base de datos donde se van a escribir objetos desde R, donde se va a acceder a los datos o donde se van
a crear objetos.
3. Para habilitar la ejecución de scripts, cree roles o agregue usuarios a los siguientes roles, según sea
necesario:
Todos excepto db_owner: se requiere EXECUTE ANY EXTERNAL SCRIPT.
db_datawriter: para escribir resultados de R o de Python.
db_ddladmin: para crear objetos.
db_datareader: para leer los datos que el código de R o de Python usa.
4. Tenga en cuenta si cambió alguna cuenta de inicio predeterminada al instalar SQL Server 2016.
5. Si un usuario necesita instalar nuevos paquetes de R o usar paquetes de R instalados por otros usuarios,
puede que tenga que habilitar la administración de paquetes en la instancia y, luego, asignar más
permisos.
¿Qué carpetas están sujetas a bloqueos del software antivirus?
El software antivirus puede bloquear carpetas, lo que impide que se instalen las características de Machine
Learning y los scripts se ejecuten correctamente. Determine si alguna carpeta del árbol de SQL Server está
sujeta a la detección de virus.
Cuando se instalan varios servicios o características en una instancia, puede resultar complicado enumerar
todas las carpetas posibles que esa instancia usa. Por ejemplo, cuando se agregan nuevas características, se
deben identificar y excluir las nuevas carpetas.
Además, algunas características crean carpetas dinámicamente en tiempo de ejecución. Es el caso de las tablas
OLTP en memoria, los procedimientos almacenados y las funciones: todos ellos crean directorios en tiempo de
ejecución. Estos nombres de carpeta suelen contener GUID y no se pueden predecir. SQL Server Trusted
Launchpad crea directorios de trabajo para los trabajos de script de R y de Python.
Dado que existe la posibilidad de que no se puedan excluir todas las carpetas que el proceso de SQL Server y
sus características necesitan, se recomienda excluir todo el árbol de directorio de instancias de SQL Server.
¿Está abierto el firewall para SQL Server? ¿Admite la instancia conexiones remotas?
1. Para saber si SQL Server admite conexiones remotas, vea Configurar conexiones de servidor remoto.
2. Averigüe si se ha creado una regla de firewall para SQL Server. Por motivos de seguridad, en una
instalación predeterminada es posible que el cliente de R o de Python remoto no pueda conectarse a la
instancia. Para más información, vea Solucionar problemas de conexión a SQL Server.
Consulte también
Solución de problemas de Machine Learning en SQL Server
Solución de problemas con el servicio Launchpad al
ejecutar scripts de Python y R en Machine Learning
Services de SQL Server
14/07/2021 • 11 minutes to read
NOTE
Esta limitación no se aplica si usa inicios de sesión de SQL para ejecutar scripts de R desde una estación de trabajo remota.
Para conceder los permisos necesarios a la nueva cuenta de servicio, use la aplicación de directiva de seguridad
local y actualice los permisos de la cuenta para que incluya los siguientes:
Ajustar las cuotas de memoria de un proceso (SeIncreaseQuotaPrivilege)
Omitir la comprobación transversal (SeChangeNotifyPrivilege)
Iniciar sesión como servicio (SeServiceLogonRight)
Reemplazar un token de nivel de proceso (SeAssignPrimaryTokenPrivilege)
No se puede comunicar con el tiempo de ejecución para el script "R". Compruebe los requisitos del tiempo
de ejecución "R".
A la vez, el tiempo de ejecución del script externo escribe el siguiente mensaje como parte del mensaje de
STDERR:
Fatal error: creation of tmpfile failed. (Error irrecuperable: no se pudo crear tmpfile).
Este error indica que la cuenta que Launchpad intenta usar no tiene permiso para iniciar sesión en la base de
datos. Esta situación puede producirse si se implementan directivas de seguridad estrictas. Para determinar si
este es el caso, revise los registros de SQL Server y compruebe si se ha denegado la cuenta MSSQLSERVER01
durante el inicio de sesión. En los registros que son específicos de R_SERVICES o PYTHON_SERVICES se
proporciona la misma información. Busque ExtLaunchError.log.
De forma predeterminada, se configuran 20 cuentas que se asocian al proceso Launchpad.exe, con los nombres
MSSQLSERVER01 a MSSQLSERVER20. Si usa mucho R o Python, puede aumentar el número de cuentas.
Para resolver el problema, asegúrese de que el grupo tiene el permiso Permitir el inicio de sesión local en la
instancia local en la que se han instalado y habilitado las características de aprendizaje automático. En algunos
entornos, este nivel de permiso puede necesitar una excepción de GPO del administrador de red.
Ejemplo de resultados
Mensaje(s) STDOUT del script externo:
[1] "C:\Archivos de programa\Microsoft SQL Server\MSSQL13.SQL2016\R_SERVICES"
[1] "C:/Archivos de programa/Microsoft SQL Server/MSSQL13.SQL2016/R_SERVICES/library"
Para resolver el problema, debe reinstalar el paquete en la biblioteca de instancias de SQL Server.
NOTE
Si ha actualizado una instancia de SQL Server 2016 para usar la versión más reciente de Microsoft R, la ubicación
predeterminada de la biblioteca es diferente. Para más información, vea Uso de SqlBindR para actualizar una instancia de R
Services.
Para mantener la compatibilidad con R, SQL Server 2016 R Services (en base de datos) requería la unidad en la
que se ha instalado la característica para permitir crear nombres de archivo cortos mediante la notación 8.3. Un
nombre de archivo 8.3 también se denomina nombre de archivo corto y se usa para que sea compatible con
versiones anteriores de Microsoft Windows o como una alternativa a los nombres de archivo largos.
Si el volumen donde está instalando R no admite los nombres de archivo cortos, los procesos que inicien R
desde SQL Server podrían no encontrar el ejecutable correcto y Launchpad no se iniciará.
Como solución alternativa, puede habilitar la notación 8.3 en el volumen donde estén instalados SQL Server y R
Services. Después, debe proporcionar el nombre corto del directorio de trabajo en el archivo de configuración
de R Services.
1. Para habilitar la notación 8.3, ejecute la utilidad fsutil con el argumento 8dot3name, como se muestra
aquí: fsutil 8dot3name.
2. Una vez que se haya habilitado la notación 8.3, abra el archivo RLauncher.config y apunte la propiedad de
WORKING_DIRECTORY . Para más información sobre cómo encontrar este archivo, vea Solución de problemas
de recopilación de datos para Machine Learning.
3. Use la utilidad fsutil con el argumento file para especificar una ruta de acceso del archivo corta para la
carpeta especificada en WORKING_DIRECTORY.
4. Edite el archivo de configuración para especificar el mismo directorio de trabajo que ha indicado en la
propiedad WORKING_DIRECTORY. También puede especificar otro directorio de trabajo y elegir una ruta
de acceso existente que sea compatible con la notación 8.3.
Pasos siguientes
Recopilación de datos para la solución de problemas de aprendizaje automático
Instalación de SQL Server Machine Learning Services
Solución de problemas de conexiones de motor de base de datos
Errores comunes de scripts de R en Machine
Learning Services de SQL Server
14/07/2021 • 5 minutes to read
USE [master]
GO
Pasos siguientes
Recopilación de datos para la solución de problemas de Machine Learning Services de SQL Server
Instalación de SQL Server Machine Learning Services
Solución de problemas de conexiones de motor de base de datos