Configuración de base de datos source y entorno para ETL en Python
Clase 6 de 25 • Curso de Fundamentos de ETL con Python y Pentaho
Contenido del curso
¡Hola! En esta clase conocerás cómo configurar una base de datos con SQL, que será una de las 3 fuentes para extraer datos en el proyecto de ETL. Las otras dos fuentes son un archivo JSON y otro CSV que conocerás en clases posteriores.
Además, conocerás cómo conectarte a esta base de datos OLTP con un software de administración de bases de datos. Puede ser DataSpell, DBeaver o el de tu preferencia.
Te sugiero usar DataSpell. Más adelante de este tutorial verás cómo configurarlo.
💡Algo que tenemos que destacar es que la base de datos SQL source no se tendría que crear en un proceso de ETL. Esta base de datos ya estaría creada en algún lado de la infraestructura de los sistemas y aplicaciones de la empresa donde estés colaborando.
En este caso lo estamos haciendo por fines educativos para que tengas una base de datos de donde tomar datos y conozcas el proceso de extracción.
Para la configuración de nuestra base de datos source usaremos PostgreSQL. Podemos utilizarlo de dos formas, una instalación local de PostgreSQL o una configuración por Docker. Te sugiero hacerlo por Docker.
1. Crear container en Docker
Recordemos que Docker es un entorno de gestión de contenedores, de manera que usaremos una imagen base con toda la configuración que requerimos sin instalar necesariamente en nuestra máquina. Solo utilizando los recursos del sistema para correr dicha imagen, algo similar a una máquina virtual.
Por ahora, solo necesitas haber tomado el Curso de Python: PIP y Entornos Virtuales para conocer lo esencial de cómo usar esta herramienta con Python. En ese curso encontrarás la clase para saber cómo instalarlo en tu computador.
Una vez que tengas instalado Docker en tu computador, ejecuta este comando en tu terminal:
WSL 2, Linux o macOS
sudo docker run -d --name=postgres -p 5432:5432 -v postgres-volume:/var/lib/postgresql/data -e POSTGRES_PASSWORD=mysecretpass postgres
Windows
docker run -d --name=postgres -p 5432:5432 -v postgres-volume:/var/lib/postgresql/data -e POSTGRES_PASSWORD=mysecretpass postgres
Como podrás notar, en este comando se específico lo siguiente para la creación de la base de datos con Docker:
--name=postgres-p 5432:5432-v postgres-volume:/var/lib/postgresql/dataPOSTGRES_PASSWORD=mysecretpass1.5 Instalación local de PostgreSQL (opcional)
De no usar Docker podrías ver la clase del curso de PostgreSQL en donde aprendes a instalarlo localmente, pero te sugiero intentarlo con Docker ya que puede agilizar tu flujo de trabajo. 😉
2. Validar container creado
Una vez que hayas creado el container de Docker usa el comando docker ps en tu terminal. Podrás ver todos los contenedores que se encuentran en ejecución actualmente y una descripción.
Deberás ver la IMAGE postgres.
3. Configurar DataSpell
Para conectarte a la base de datos usarás un software de administración de bases de datos. Existen varios que puedes utilizar. Para el seguimiento del curso te sugiero utilizar DataSpell o, en su defecto, DBeaver.
DataSpell es un IDE completo para ciencia de de datos donde, además de conectarte y hacer consultas a bases de datos, podrás ejecutar Jupyter Notebooks. ¡Todo en el mismo lugar! 💪🏽
💡 Una de sus desventajas es que es de pago, pero tiene un período de prueba de 30 días para que lo pruebes con este curso. Además existen ciertas opciones para obtener licencias para estudiantes de bachillerato y universidad.
⚠️🦫 En caso de que decidas usar DBeaver en lugar de DataSpell, utiliza tu entorno local de Jupyter Notebooks con Anaconda para la ejecución del código Python de las siguientes clases. 🐍
Instalación de DataSpell
Para instalar DataSpell ve a su sitio web aquí y descarga la versión para tu sistema operativo.📥
Instálalo siguiendo las instrucciones que te aparezcan en el instalador.
⚠️ Cuando te solicite actualizar PATH Variable acepta marcando la opción que te indique. Esto es para evitar errores de ambientes en el futuro. En Windows se ve así:
Al finalizar te pedirá reiniciar el computador:
Abre DataSpell ya que se haya instalado. Al hacer esto por primera vez te pedirá iniciar sesión. Elige la versión free trial registrando tu cuenta para ello.
Una vez que tengas tu cuenta configurada te pedirá elegir un intérprete de Python 🐍.
Previamente deberás tener instalado Anaconda en tu sistema operativo. Te recomiendo que crees un ambiente de Anaconda (Conda environment) único para el proyecto del curso. Llama al ambiente fundamentos-etl.
Elige el ambiente de Anaconda que usarás para el proyecto y presiona el botón Launch DataSpell.
Elegir un intérprete de Anaconda servirá para ejecutar Jupyter Notebooks en DataSpell.
fundamentos-etl al workspace y presiona el botón azul Create.
Elegir ambiente de WSL2 (opcional si usas WSL)
Si quieres usar DataSpell con tu entorno en Windows con WSL 2, deberás conectar DataSpell al ambiente de Anaconda que tenga tu WSL.🐍
fundamentos-etlconda create --name fundamentos-etl python=3.9
fundamentos-etl creado anteriormente en DataSpell.⚠️OJO: el workspace y el Anaconda Environment no son lo mismo. El Anaconda Environment lo vamos a cargar dentro del Workspace de DataSpell.
Después presiona el botón Add Interpreter e inmediatamente selecciona la opción On WSL.
Mara la casilla Use existing environment. Elige el Conda Environment de WSL que usarás para tu proyecto. Anteriormente debiste crearlo desde tu terminal en WSL y llamarlo fundamentos-etl.
Finalmente, presiona el botón azul Create.
⚠️Si te aparece un error que indique que el ambiente no puede ser usado como el intérprete del workspace es porque estás intentando cargar el ambiente en el workspace general y no en un workspace de DataSpell que creaste.
Aquí encuentras la guía oficial de cómo conectar tu DataSpell al intérprete de Python o Anaconda en WSL, por si necesitas aprender a configurarlo a detalle.
Recuerda que otra alternativa en Windows es instalar Anaconda para Windows y conectar DataSpell directamente a esta versión.
4. Conexión a la base de datos PostgreSQL
Sigue estos pasos para conectarte a la base de datos postgres desde DataSpell.
4. Cargar datos en la base de datos Postgres
Dentro de DataSpell, ya con la conexión a la base de datos previamente creada, ejecutarás el script postgres_public_trades.sql.
Descárgalo aquí de Google Drive. 📥
⚠️Este archivo pesa cerca de 500 MB, por lo que puede demorar su descarga. Contiene la creación de una tabla llamada trades y los insert de registros de la tabla.
⚠️Es posible que al intentar correr este script en DBeaver no sea posible por falta de memoria. Te sugerimos cortarlo en varias partes y cargar cada script independientemente.
Una vez descargado el archivo postgres_public_trades.sql sigue estos pasos para cargar los datos con DataSpell:
⚠️La creación de la tabla y la carga de datos puede demorar cerca de 15-20 minutos en DataSpell.
5. Prueba la tabla trades
Una vez terminada la ejecución del script, consulta la tabla Trades ya cargada. Abre el editor de queries desde tu base de datos en DataSpell e ingresa la siguiente consulta:
SELECT * FROM trades;
¡Listo! Ya tienes lo esencial para comenzar a extraer datos de una base de datos OLTP y correr tus notebooks de Python.
Avanza a la siguiente clase. ⚙️