Ejecutar scripts en Vantage
Información general
A veces, es necesario aplicar una lógica compleja a los datos que no se puede expresar fácilmente en SQL. Una opción es envolver su lógica en una función definida por el usuario (User Defined Function, UDF). ¿Qué pasa si ya tiene esta lógica codificada en un lenguaje que no es compatible con UDF? Script Table Operador es una característica de Vantage que le permite llevar su lógica a los datos y ejecutarlos en Vantage. La ventaja de este enfoque es que no es necesario recuperar datos de Vantage para operar con él. Además, al ejecutar sus aplicaciones de datos en Vantage, aprovecha su naturaleza paralela. No es necesario pensar en cómo se escalarán sus aplicaciones. Puedes dejar que Vantage se encargue de ello.
Prerrequisitos
Necesita acceso a una instancia de Teradata Vantage.
Si necesita una instancia de prueba de Vantage, puede obtener una de forma gratuita en https://clearscape.teradata.com
Hello World
Comencemos con algo simple. ¿Qué pasaría si quisiera que la base de datos imprimiera "Hello World"?
Esto es lo que tengo:
Analicemos lo que acaba de pasar aquí. El SQL incluye echo Hello World!
. Este es un comando Bash. Bien, ahora sabemos cómo ejecutar comandos Bash. ¿Pero por qué obtuvimos 2 filas y no una? Esto se debe a que nuestro script simple se ejecutó una vez en cada AMP y resulta que tengo 2 AMP:
Devoluciones:
Este sencillo script demuestra la idea detrás del Script Table Operador (STO). Usted proporciona su script y la base de datos lo ejecuta en paralelo, una vez para cada AMP. Este es un modelo atractivo en caso de que tenga lógica de transformación en un script y muchos datos para procesar. Normalmente, necesitaría incorporar simultaneidad en su aplicación. Al permitir que STO lo haga, permite que Teradata seleccione el nivel de concurrencia correcto para sus datos.
Idiomas admitidos
Bien, hicimos echo
en Bash, pero Bash no es un entorno productivo para expresar lógica compleja. ¿Qué otros idiomas son compatibles entonces? La buena noticia es que cualquier binario que pueda ejecutarse en nodos Vantage se puede utilizar en STO. Recuerde que el binario y todas sus dependencias deben instalarse en todos sus nodos Vantage. En la práctica, significa que sus opciones estarán limitadas a lo que su administrador esté dispuesto y sea capaz de mantener en sus servidores. Python es una opción muy popular.
Cargar guiones
De acuerdo, Hello World es muy emocionante, pero ¿qué pasa si tenemos lógica existente en un archivo grande? Seguramente no querrá pegar todo el script y las comillas de escape en una consulta SQL. Solucionamos el problema de carga de scripts con la función Archivos instalados por el usuario (User Installed Files, UIF).
Supongamos que tiene el script helloworld.py
con el siguiente contenido:
Supongamos que el script está en su máquina local en /tmp/helloworld.py
.
Primero, necesitamos configurar permisos en Vantage. Haremos esto usando una nueva base de datos para mantenerla limpia.
Puede cargar el script en Vantage mediante la siguiente llamada al procedimiento:
Ahora que se ha subido el script, puede llamarlo así:
La última llamada debería devolver:
Fue mucho trabajo y todavía estamos en Hello World. Intentemos pasar algunos datos a SCRIPT
.
Pasar datos almacenados en Vantage a SCRIPT
Hasta ahora, hemos estado usando el operador SCRIPT
para ejecutar scripts independientes. Pero el objetivo principal de ejecutar scripts en Vantage es procesar los datos que se encuentran en Vantage. Veamos cómo podemos recuperar datos de Vantage y pasarlos a SCRIPT
.
Comenzaremos creando una tabla con algunas filas.
Usaremos el siguiente script para analizar los parámetros de consulta:
Tenga en cuenta que los scripts suponen que las URL se introducirán en stdin
una por una, línea por línea. Además, observe cómo imprime los resultados línea por línea, utilizando el carácter de tabulación como delimitador entre valores.
Instalemos el script. Aquí, asumimos que el archivo de script está en /tmp/urlparser.py
en nuestra máquina local:
Con el script instalado, ahora recuperaremos datos de la tabla urls
y los introduciremos en el script para recuperar los parámetros de consulta:
Como resultado, obtenemos parámetros de consulta y sus valores. Hay tantas filas como pares clave/valor. Además, dado que insertamos una pestaña entre la clave y el valor de salida en el script, obtenemos 2 columnas de STO.
Insertar salida SCRIPT en una tabla
Hemos aprendido cómo tomar datos de Vantage, pasarlos a un script y obtener resultados. ¿Existe una manera sencilla de almacenar este resultado en una tabla? Claro que la hay. Podemos combinar la selección anterior con la declaración CREATE TABLE
:
Ahora, inspeccionemos el contenido de la tabla url_params
:
Debería ver el siguiente resultado:
Resumen
En este inicio rápido, hemos aprendido cómo ejecutar scripts con datos en Vantage. Ejecutamos scripts utilizando Script Table Operador (STO). El operador nos permite aportar lógica a los datos. Descarga consideraciones de concurrencia a la base de datos al ejecutar nuestros scripts en paralelo, uno por AMP. Todo lo que necesita hacer es proporcionar un script y la base de datos lo ejecutará en paralelo.
Lectura adicional
- Teradata Vantage™: Operadores SQL y funciones definidas por el usuario - SCRIPT
- Análisis de R y Python con operador de tabla SCRIPT
Si tiene alguna pregunta o necesita más ayuda, visite nuestro foro de la comunidad donde podrá obtener ayuda e interactuar con otros miembros de la comunidad.