Carga de datos a SQL: Mal Performance
- Suscribirse a un feed RSS
- Marcar tema como nuevo
- Marcar tema como leído
- Flotar este Tema para el usuario actual
- Favorito
- Suscribir
- Silenciar
- Página de impresión sencilla
- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Notificar al moderador
¡Hola a todos comunidad!
Estoy intentando automatizar un proceso en donde al final la data debe almacenarse en una Base de Datos de PosgreSQL, sin embargo el workflow toma 1hr aproximadamente para ejecutarse por completo.
Se que al utilizar las DB Tools se podria optimizar todo, pero el problema es que el imput proviene de un archivo tipo excel (.xlsx) y que antes de alojar la información en la Base de Datos debe ser tratada/limpiada antes.
¿Saben de alguna alternativa que pueda agilizar/optimizar la carga de datos?
¡Saludos!
¡Resuelto! Ir a solución.
- Etiquetas:
- Alteryx automation
- Alteryx Designer
- Alteryx Tools
- db write
- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Notificar al moderador
Puedes hacer algunas cosas para mejorar.
Primero, antes de usar o excel y hacer o tratar dos datos, lo ideal sería un conversor o un archivo xls en una yxdb (extensión alteryx)
Después de la conversión, lo usa (yxdb) como entrada. Esta extensión se lee más rápido que xls.
En segundo lugar, es posible que eliminar el mayor volumen de columnas no inicie el flujo de trabajo, lo que le permitirá usar solo el final o el final.
En tercer lugar, si está utilizando las últimas versiones de Alteryx (2020.2), puede habilitar la opción para utilizar el mecanismo amplificador.
https://help.alteryx.com/es-419/current/designer/alteryx-amp-engine
Y finalmente, es posible, no sé mucho sobre postgrado, usar un cargador masivo o un tipo de conexión de mayor rendimiento que ODBC (si está usando), por ejemplo. JDC, OCI, etc.
Espero que estos consejos te ayuden a mejorar el rendimiento.
Avísame aquí si alguno de ellos funcionó para ti
- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Notificar al moderador
Adicionalmente a lo que @carlosteixeira te comenta, lo que se puede hacer es procesar los excel y luego utilizar un Stream In (En la categoría IN Database), para "subir" los datos de los excel ya procesados y continuar con el proceso de actualización de Base de datos en forma In-DB
Esta herramienta, permite pasar de proceso local a In-DB (Subiendo los datos a una nueva tabla, creando una temporal o reemplazando una existente)
- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Notificar al moderador
Hola @carlosteixeira y @Aguisande !
Muchas gracias por su respuesta, les comento que comence a utilizar la opción Stream In, dividiendo mi workflow en dos partes de tal manera que la primera solo se encargue de subir la data a la Base de Datos y posteriormente hacer todo con DB-Tools. Sin embargo, sigue tomando mucho tiempo para lograrlo, aproximadamente 1 hora y no se si se deba a las caracteristicas de mi equipo o driver:
Mi equipo es un servidor que cuenta con 12 GB de RAM
El ODBC que estoy utilizando es la versión 3.51
El input tiene 17500 registros y 9 columnas
A mi entender deberia funcionar bien, aqui el primer workflow que tarda 25 minutos
Adicional a esto les comento que ejecutando toda la transformación de manera local y escribiendo el output en un archivo excel tarda unicamente 20 segundos, entonces asumo que el problema esta en la carga de datos a la Base.
¿Saben si podria haber alguna opción más?
- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Notificar al moderador
Al parecer, tu problema es cuando ingresas como datos y no como post-juego.
Sugerencia, ¿por qué no se enfrenta a lo contrario, o en lugar de cargar sus datos a o Postgree, por qué no rastrea los datos desde postgree o alteryx usando o datastream out? Obviamente, este no es el caso si tiene una gran cantidad de datos.
Esta es solo una sugerencia para el otro lado que hemos enumerado anteriormente.
Otra opción, intente utilizar otra conexión JDBC, por ejemplo.
Vea algunas comparaciones a continuación.
Sigue el enlace donde lo encontré: https://stackoverflow.com/questions/21795119/odbc-vs-jdbc-performance
Deciding Between ODBC and JDBC Drivers Use native ODBC for:
- Fastest performance for data imports and exports
- Memory-intensive data imports and exports
Use JDBC for:
- Platform independence allowing you to work with any operating system (including Mac and Linux®), driver version, or bitness (32-bit or 64-bit)
- Using Database Toolbox functions not supported by the native ODBC interface (such as runstoredprocedure)
- Working with complex or long data types (e.g., LONG, BLOB, text, etc.)
Tip:
- On Windows systems that support both ODBC and JDBC drivers, pure JDBC drivers and the native ODBC interface provide better connectivity and performance than the JDBC/ODBC bridge.
- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Notificar al moderador
@carlosteixeira De hecho intente usar la primera opcion que comentas,
Intente cargar unicamente los datos y posteriormente utilizar un Data Stream Out, de la siguiente manera para posteriormente utilizar unicamente DB Tools:
Pero a pesar de eso tarda demasiado tiempo (lleva 1 hr en ese momento), entonces considero que el problema esta en el tipo de conexión e intentare verificar si funciona mejor con un Driver JDBC como comentas.
Esperemos funcione.
- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Notificar al moderador
- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Notificar al moderador
Sorry, pero me surge una duda... Mencionaste que estás utilizando el driver de ODBC de PostreSQL v. 3.51. Eso es correcto?
Revisando la página de drivers oficial de PostgreSQL (https://www.postgresql.org/ftp/odbc/versions/msi/), el driver ODBC actual es el 13 y versiones previas a la 7 no tienen más soporte.
Antes que seguir modificando workflows, creo que es conveniente revisar el mismo driver.
Por otro lado, yo uso el de Simba, que si tienes acceso al portal de licencias de Alteryx (o alguien en tu empresa), en la sección drivers lo puedes conseguir.
Adicionalmente, por lo que vi, estás subiendo datos a Azure (Estás utilizando una VPN?)
Podrás medir la velocidad de transferencia de tu conexión?
A mí PostgreSQL me está cargando 1MM de registros en 1:07 minutos
Nota adicional: Tengo entendido que no hay forma de hacer una conexión JDBC desde Alteryx. Si saben cómo hacerla, me encantaría aprenderlo.
- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Notificar al moderador
Grandes comentarios mi amigo @Aguisande
Creo que descubrió el problema de nuestro amigo.
- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Notificar al moderador
Hola @Aguisande @carlosteixeira @dsmdavid
En efecto, como comenta @Aguisande estoy utilizando la versión 3.51, me imagino que el problema viene por ahi y necesito hacer un upgrade, ya que hice varias pruebas cambiando el tipo de dato como comenta @dsmdavid y aun asi tarda demasiado. Adicionalmente hice pruebas de velocidad en el internet ayer por la noche y hoy por la mañana, a mi parecer la velocidad es buena y no muestran mucha varianza entre cada prueba a pesar de que no ocupo una VPN como tal (todo es por medio de citrix para conecarse a los servers), estos son los resultados:
Por la Noche:
Por la Mañana:
Entonces, considero que la opción es a intentar cambiar el driver ODBC por uno más reciente que tenga soporte o contactar a alguien que pueda tener acceso a SIMBA como comenta @Aguisande , muchisimas gracias por su tiempo y si tienen alguna idea adicional se los agradeceria mucho, un saludo
- « Anterior
-
- 1
- 2
- Siguiente »