Author Topic: Como realizar un ETL utilizando postgresql  (Read 9181 times)

0 Members and 1 Guest are viewing this topic.

Offline E-minero

  • Sv Jr.
  • **
  • Posts: 90
Como realizar un ETL utilizando postgresql
« on: June 07, 2012, 04:24:15 pm »
Buenas comunos, les solicito su ayuda  :sur: Una pequena orientacion, tengo que realizar un ETL para un sistema de informacion gerencial (Es con fines academicos, pero a la vez se dejara en funcionamiento el sistema), la  cuestion es que nunca e realizado uno, he leido que hay herramientas que te ayudan a realizar esto (no se que tan conveniente sea esto)
Ej: http://wiki.postgresql.org/wiki/Migrating_from_one_database_to_another_with_Pentaho_ETL
pero he leido que tambien que se puede hacer con triggers y procedimientos almacenados. Me gustaria me dieran una orientacion con su experiencia sobre el tema. La base de datos a utilizar es posgresql.  Gracais de Antemano!!!
La principal cualidad del lenguaje es la claridad. --Galen

Offline murraybozinsky

  • Sv Jr.
  • **
  • Posts: 54
Re:Como realizar un ETL utilizando postgresql
« Reply #1 on: June 07, 2012, 06:07:41 pm »
navengado por alli encontre esto....

http://www.pentaho.com/explore/pentaho-data-integration/

podrias probarlo, dice que es Open Source.

yo he hecho algunos ETL pero en Integration Services del SQL 2005

Offline tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Posts: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re:Como realizar un ETL utilizando postgresql
« Reply #2 on: June 07, 2012, 06:16:02 pm »
ok, pero un ETL, hasta donde sé utiliza más de una fuente de datos,.... tu estas diciendo que utilizaras postgres, pero yo me pregunto; queres Extraer de postgres o Load to postgres?
te pregunto, porque mencionas que se puede con triggers o procedimientos almacenados...porque de utilizarlos se te reduce el listado de fuentes de datos...

Pentaho es uno de los mejorcitos..

io para hacer ETL's que lo hago a diario por un sistema de BI que tengo, utilizo los siguientes ingredientes: SqlServer 2000, VB 6.0, Excel 2000, Postgres 9.1.0


WT, PG 9.1 ya soporta DataWrapers... lo que me recuerda hacer un tuto para decir Helou Mysql from Postgres :)
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Offline E-minero

  • Sv Jr.
  • **
  • Posts: 90
Re:Como realizar un ETL utilizando postgresql
« Reply #3 on: June 07, 2012, 06:31:39 pm »
Si @tekun, lo que sucede que la base de datos transaccional esta en posgre (De ahi extraere y transformare los datos) y la base de datos gerencial tambien estara en posgres (ahi cargare los datos transformados), pero queria orientacion de ustedes, sobre la manera adecuada de realizar esto :thumbsup:
La principal cualidad del lenguaje es la claridad. --Galen

Offline tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Posts: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re:Como realizar un ETL utilizando postgresql
« Reply #4 on: June 07, 2012, 08:14:50 pm »
si colocho, pero si no explicas bien tu escenario, es paja no podremos decirte nada "cuerdo"...

por ejemplo, io me "vuelvo" a auto-preguntar, tenes dos servidores físicamente distintos para ambas db, la transaccional y gerencial... ese dato, "creo" sería bueno que lo mencionaras, como muchos más...

sin ánimos de ofender, tu preguntaste por cómo hacer un ETL, así a secas te respondo "estas en lo cierto utiliza Pentaho", pero si querés ayuda en la implementación debes dar más detalles... particularmente no me gusta sacar la información a cucharadas...


lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Offline E-minero

  • Sv Jr.
  • **
  • Posts: 90
Re:Como realizar un ETL utilizando postgresql
« Reply #5 on: June 07, 2012, 08:45:30 pm »
Ok! disculpas sino especifique bien, como puse es con fines academicos pero se dejara funcionando, se utilizara el mismo servidor fisico, ahi estaran alojadas las dos bd, en la programada estamos utilizando java, el servidor web que se utilizara es apache. Si faltan detalles me avisas!
La principal cualidad del lenguaje es la claridad. --Galen

Offline Non Servium

  • Sv Member
  • ***
  • Posts: 426
  • Ilix Punx :)
Re:Como realizar un ETL utilizando postgresql
« Reply #6 on: June 08, 2012, 08:08:52 am »
No precisamente un ETL tiene que pasar de una fuente a otra. tekun tomas un caso particular.

Yo hice uno hace no mucho. La idea era tomar datos migrados, los cuales les llamabamos "crudos" por así decirle porque se importaba (mediante el comando BULK INSERT de sql server) archivos de texto (*.txt) recibidos aca por "equis" empresas! Para procesar por ejemplo "equis indicador de usuarios suscritos al servicio" se evaluan mediante un procedimiento almacenado y los que cumplieran un criterio se guardan (en otra tabla de SQL Server pero otra base de datos tipo "DataWarehouse"). Al final siguiendo este mismo paso, trabajé con 4 tablas llenandolas con procedimientos almacenados que contienen todos los cálculos y busqueda de índices a tablas relacionadas denominadas "dimensiones" para trabajarlas con SQL Analysis Services y crear un "cubo" de información para presentar informes ejecutivos, análisis de diferencias, etc.
♫ Condenados a perder la libertad! Por no acatar las leyes que les asignaron. ♪ ♫
Decididos, decididos a emprender! Un camino largo y duro por no ser esclavos ♫


Watch

Offline tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Posts: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re:Como realizar un ETL utilizando postgresql
« Reply #7 on: June 08, 2012, 09:48:48 am »
io lo dije bajo este contexto: me referí a "fuentes de datos" no como dos origenes de información distintas, sino como dos instancias diferentes.

el chamaco hablo de hacer ETL, y nada más menciono postgres, no dijo "la fuente de datos" un ETL puro, según mi criterio, es extraer datos de "una fuente" de datos, procesarlas e insertar "en otra" fuente de datos.... puede ser del mismo tipo, pero de instancias distintas.



el comuniter acá, no necesita la "E", sólo "TL", porque no va a "Extraer" de algúna fuente de datos diferente, sólo va a procesar lo que tiene.

Tu mencionas archivos de Texto como origen y SqlServer como destino... para mí, ahí están mas de una fuente de datos

@E-minero:
   Yo te recomiendo un funcion en plpgsql.
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Offline E-minero

  • Sv Jr.
  • **
  • Posts: 90
Re:Como realizar un ETL utilizando postgresql
« Reply #8 on: June 08, 2012, 11:02:15 am »
@Non Servium muy interesante lo que mencionas de Datawarehouse!!! y @tekun creo que lo hare con lo que me dices, tendre que investigar xq de momento solo conozco pl/Sql para oracle.... Gracias x sus aportes!!! :thumbsup: :thumbsup:
La principal cualidad del lenguaje es la claridad. --Galen

Offline murraybozinsky

  • Sv Jr.
  • **
  • Posts: 54
Re:Como realizar un ETL utilizando postgresql
« Reply #9 on: June 08, 2012, 11:19:55 am »
Esa seria la ventaja de una herramienta ETL, que no se necesitas mucho conocimiento de programacion en cuanto a la base de datos origen o destino,
ya que solo se sigue un flujo de datos, mas bien tendrias que aprender de la herramientas mas que lo demas. aunque sean el mismo servidor se puede con una herramienta ETL, pero tambien siendo que es el mismo servidor, podria ser en un simple procedimiento de base de datos ya sea del  lado origen o destino y se puede ejecutar en demanda o automatico. pero necesitaras saber de PostGresQL. Suerte con tu proyecto.   ;)

Offline Non Servium

  • Sv Member
  • ***
  • Posts: 426
  • Ilix Punx :)
Re:Como realizar un ETL utilizando postgresql
« Reply #10 on: June 08, 2012, 11:34:41 am »
el comuniter acá, no necesita la "E", sólo "TL", porque no va a "Extraer" de algúna fuente de datos diferente, sólo va a procesar lo que tiene.
Ta buena la definición quitandole la "E"  :@  :thumbsup:

@Non Servium muy interesante lo que mencionas de Datawarehouse!!! y @tekun creo que lo hare con lo que me dices, tendre que investigar xq de momento solo conozco pl/Sql para oracle.... Gracias x sus aportes!!! :thumbsup: :thumbsup:
Suerte con tu proyecto!  :thumbsup:
♫ Condenados a perder la libertad! Por no acatar las leyes que les asignaron. ♪ ♫
Decididos, decididos a emprender! Un camino largo y duro por no ser esclavos ♫


Watch

Offline Juancho

  • The Communiter-
  • *
  • Posts: 1311
Re:Como realizar un ETL utilizando postgresql
« Reply #11 on: June 09, 2012, 09:46:22 am »
@E-minero, si no m equivoco, en estos momentos estas llevando la materia "Sistemas de Informacion Gerencial - UES" con controlito..., vaya si es asi, entonces no solo te dejes ir con lo q t dice controlito. es de entender los conceptos de BI y aplicarlos a tu aplicacion gerencial. TE voy a dar unos tips para tu tarea de gerenciales.

  • Controlito en sus clase habla sobre los ETL q son parte para nuestro sistema gerencial. Ahora, asumo que les tuvo q hacer los diagramas S-E-P, si t fijas, tus entradas son: Tu base transaccional, documentos de textos, hojas de calculo, etc...  Todo eso son tu fuente para alimentar tu base de datos gerencial. Controlito tiene razon, realmente ya en la "Aplicacion", en un sistema gerencia puedes tener diversas fuentes, NO SOLO TU BASE TRANSACCIONAL, por lo tanto para unificar esa informacion se utilizan los ETL, q asi como explicaba @Tekun, E: primero extraes los datos de tus fuentes, T: transforma tus datos d las fuentes en tipo de datos, concatenaciones, etc, L: y por ultimo lo cargas en tu base de datos gerencial
  • Ahora, para tu aplicacion, tienes q evaluar, ¿Cual va a ser la fuente para tu base de datos gerencial? Solo tu BD transaccional o tienes otros documentos a utilizar. Al menos en mi caso y creo q la d todos (cuando curse la materia), la fuente era nuestra base de datos transaccional y solamente eso.
  • Entonces si es asi, como algunos t dijeron arriba, solo es necesario utilizar PROCEDIMIENTOS ALMACENADOS, con eso t basta y sobra para hacer tus ETL en tu proyecto de SIG, si utilizas otro tipo d fuente a tu BD Transaccional entonces si necesitas una herramienta para ETL. En mi caso he utilizado SSIS (Sql Server Integration Services) es muy buena e intuitiva, y si utilizas como RDBMS SQL Server, puedes programar los Jobs, para que se ejecuten cada cierto tiempo el ETL de manera automatica.

Bueno espero q t sirvan mis consejos cualquier duda puedes preguntar. Por cierto mi tarea de Gerenciales esta en linea, por si t quieres apoyar. Yo o programe nada, solo utilize SSRS (SQL Server Reporting Services), la interfaz ya la tiene y todo en al Web, y solo t enfocas en hacer consultas y los reportes para mostrarlos.

En otros momentos pongo el link de mi tarea de Gerenciales por si t sirve d algo y veo si creo una cuenta para el acceso a la BD Transaccional y Gerencail del sistema si t sirver de ayuda los ETL.
<a href="http://www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/" target="_blank">
<img src="http://cache.www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/b_560x95.png" border="0" width="560" height="95" alt="" />
</a>