Pràctica 5: Pipeline ETL - API a Base de Dades
Objectiu
Crear un pipeline ETL que extregui dades d'una API pública, les transformi i les carregui en una base de dades PostgreSQL.
Descripció
Extreure dades d'usuaris d'una API (JSONPlaceholder), netejar i transformar les dades, i carregar-les a PostgreSQL.
Part A: Preparació de la base de dades
Crear contenidor PostgreSQL:
docker run --name n8n-postgres-test \
-e POSTGRES_PASSWORD=postgres \
-e POSTGRES_DB=n8n_test \
-p 5432:5432 \
-d postgres:15
Crear taula:
CREATE TABLE usuaris (
id SERIAL PRIMARY KEY,
user_id INTEGER UNIQUE,
nom VARCHAR(100),
username VARCHAR(50),
email VARCHAR(100),
ciutat VARCHAR(100),
empresa VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Part B: Configurar credencials a N8N
- Credentials > New Credential
- Seleccionar Postgres
- Configurar:
- Host:
localhost(o IP del contenidor) - Database:
n8n_test - User:
postgres - Password:
postgres - Port:
5432
Part C: Crear el workflow ETL
Nodes del workflow:
- Schedule Trigger
- Configurar: cada 1 hora
-
Per testing: usar Manual Trigger
-
HTTP Request - Extract
- Method: GET
- URL:
https://jsonplaceholder.typicode.com/users -
Name: "Extreure_Usuaris"
-
Function - Transform
-
Postgres - Load
- Operation: Insert
- Table:
usuaris - Columns: automàtic
- Options > On Conflict: "Update"
Part D: Verificació
SELECT * FROM usuaris;
SELECT COUNT(*) FROM usuaris;
SELECT ciutat, COUNT(*) as total FROM usuaris GROUP BY ciutat;
Repte addicional
- Afegir node de validació abans de carregar
- Implementar gestió d'errors
- Afegir logs a una taula separada
- Crear un report d'execució que s'enviï per email
Lliurables
- Workflow exportat
- Script SQL amb l'estructura de taules
- Captures de dades carregades a PostgreSQL
- Document explicant les transformacions realitzades