ETL con Python y Pentaho
Este es un pequeño proyecto para el curso de fundamentos etl de platzi. En este proyecto, tendremos datos de difrentes fuentes (SQL, JSON y CSV) los cuales deberemos extraer y traformar usando Python y Pentaho (ambas herramientas se usaran para lo mismo, pero a su manera). Cuando los datos esten limpios, pueden ser cargados para un mejor analisis.
Ambos metodos de ejecucion son independientes uno del otro.
Contenido
Requisitos
Nota: este proyecto lo ejecute en en una laptop con Xubuntu 22.04 (64bits) y en otra laptop con Xubuntu 18.04 (32 bits)
Instalacion
- Crea la carpeta en donde estara el proyecto:
mkdir fundamentos-etl
- Descarga/clona el repo:
git clone https://github.com/carchobe/fundamentos-etl-platzi.git
- Crea el ambiente virtual usando Anaconda o miniconda e instala las dependencias:
- para una pc con 64bits:
conda create --name py-etl --file etl-env64.txt
- para una pc con 32bits:
conda create --name py-etl --file etl-env32.txt
- ….O tambien puedes crear el ambiente y usar las verisones mas recientes de los paquetes necesarios con el comando:
conda create -name py-etl pandas jupyter sqlalchemy psycopg2 pip
- Activa el ambiente con
conda activate py-etl
- Cuando termines de ejecutar todo el proyecto, desactiva el ambiente con
conda deactivate
.
Ejecucion Jupyter
- Ubicate en la carpeta del proyecto
- Abre la terminal y descarga la imagen de PosrgreSQL con el comando:
docker image pull postgres:13.9
- Construye la imagen con el comando:
docker build -t postgres:etl .
- Ya con la imagen terminada, enciende el contenedor con:
docker compose up -d
- Con el contenedor ejecutandose, entra a la terminal de PSQL ejecutando el comando
docker compose exec db psql
- Dentro de PSQL, ejecuta el comando
\i sources/public_trades_small.sql
Con este comando estas importando la base datos SQL hacia PostgreSQL, esto puede tardar. - Listo, la base de datos esta cargada. puedes salirte de la terminal de PSQL escribiendo
exit
Ya la base de datos esta cargada y el contenedor esta ejecutandose. Ahora ya puedes abrir la jupyter notebook para ejecutar los pasos del proyecto usando una de dos formas. (Recuerda que tanto el entorno virtual de anaconda y el contenedor de PostgreSQL deben estar activados)
- Desde Vscode con la extension de jupter notebooks
- Desde la teminal usando el comando
jupyter notebook
Cuando la notebook se ejecute, tendras la tabla final en dos ubicaciones distintas:
- En el contenedor de postgresql con el nombre trades_final. Puedes revisarla metiendote en el contenedor con
docker compose exec db psql
. - En un archivo CSV que se creara en la carpeta principal del proyecto.
Ejecucion Pentaho
- Haz todos los pasos de la seccion de Ejecucion de Jupyter hasta el paso 4.
- Dentro de PSQL, ejecuta el comando
\i sources/final_pentaho_script.sql
- Si ya instalaste Pentaho, solo debes ejecutarlo abriendo el archivo
spoon.sh
desde la terminal.
./spoon.sh
- Una vez abierto, tienes que configurar la conexion al contenedor de postgres:
- En
view
, haz click derecho en ladatabase connections
. - Escoge el tipo de conexion PostgreSQL y llena todas las lineas con los datos que ya estan en el
docker-compose.yml
. En HOSTNAME, pones localhost.
- En
- Todo deberia estar listo para empezar. Ejecuta el proyecto en el boton RUN.
- Si todo sale bien, el proceso ETL creara una nueva TABLE en el contenedor de postgresql. Esta nueva TABLE tiene la Informacion limpia y preparada para analizar.
- Si quieres, puedes meterte en PSQL y revisar la base datos limpia.
docker compose exec db psql
y luego...
SELECT * FROM pentaho_ETLDB;
Cierre
Al terminar de ejecutar el proyecto, sigue los siguientes pasos para borrar todo:
- Para apagar el contenedor recuerda ejecutar el comando
docker compose down
. - Elimina el volumen con la informacion del contenedor con el comando
docker volume rm pgdata
- Elimina la imagen que se creo con el comando
docker image rm postgres:elt