Rúbrica PR507405 — Pipeline ETL amb Airflow i Docker
Aquesta rúbrica s'aplica a la pràctica PR507405 — Pipeline ETL amb Airflow i Docker del Bloc 5 del mòdul M5074 Sistemes de Big Data.
Nota final de la pràctica = suma ponderada dels cinc criteris (total 100 punts → escala 0-10).
Criteris d'avaluació
Criteri 1 — Instal·lació i configuració d'Airflow (15%)
Avalua si l'entorn Docker Compose d'Airflow està correctament desplegat i operatiu (Part 1 de la pràctica).
| Nivell | Puntuació | Descriptor |
|---|---|---|
| Excel·lent | 14-15 pts | Tots els serveis (webserver, scheduler, worker, postgres) estan healthy, amb captura de docker compose ps que ho demostra. La UI és accessible i s'han creat correctament Variables des de la interfície. Les dependències Python addicionals (pandas, pandera, great-expectations) s'han afegit correctament al docker-compose.yaml i estan disponibles als workers, demostrat amb l'execució real d'un DAG que les usa. |
| Bé | 11-13 pts | Els serveis principals estan en marxa i la UI és accessible, però falta alguna captura o evidència (per exemple, no es demostra la Variable creada). Les dependències addicionals estan configurades però amb algun problema menor (versió incorrecta, calia reiniciar més d'una vegada). |
| Suficient | 8-10 pts | L'entorn arriba a funcionar però amb incidències notables (calen diverses reconfiguracions, algun servei reinicia constantment). Les captures aportades són mínimes o incompletes. |
| Insuficient | 0-7 pts | L'entorn Docker Compose no arriba a funcionar, o no s'aporta cap evidència que Airflow s'ha instal·lat i explorat. |
Criteri 2 — DAG bàsic: PythonOperator i BashOperator (15%)
Avalua el DAG d'extracció de dades de la Part 2: correcció del codi, ús adequat dels operadors i evidència d'execució.
| Nivell | Puntuació | Descriptor |
|---|---|---|
| Excel·lent | 14-15 pts | El DAG s'executa sense errors, combina correctament una tasca Python (crida a l'API, generació del CSV) i una tasca Bash amb dependència explícita entre elles. El codi és net, amb task_id descriptius i sense valors fixats que haurien de ser paràmetres. S'ha afegit i documentat correctament la tercera tasca addicional demanada (compressió). Captures de la Graph view amb totes les tasques en verd. |
| Bé | 11-13 pts | El DAG s'executa correctament amb els dos operadors bàsics, però la tasca addicional és incompleta o no s'ha provat. El codi és funcional però amb algunes àrees millorables (manca de comentaris, codi dur). |
| Suficient | 8-10 pts | El DAG arriba a executar-se però amb errors puntuals corregits a mà des de la UI, o únicament un dels dos operadors està ben implementat. Falten captures d'evidència. |
| Insuficient | 0-7 pts | El DAG no s'executa o no inclou els dos tipus d'operador exigits. No hi ha evidència d'execució. |
Criteri 3 — DAG complex: branching, sensors i gestió d'errors (25%)
Avalua el disseny i funcionament del pipeline de la Part 3: ús correcte de FileSensor, BranchPythonOperator i mecanismes de tolerància a errors.
| Nivell | Puntuació | Descriptor |
|---|---|---|
| Excel·lent | 23-25 pts | El FileSensor espera correctament l'arribada del fitxer amb poke_interval i timeout raonats. El BranchPythonOperator decideix la branca correctament en funció del volum de dades, i les tasques de la branca no executada apareixen com a skipped a la UI (evidenciat amb captura). Els retries, retry_delay i on_failure_callback estan configurats i s'ha demostrat el seu funcionament provocant un error real, amb captura dels logs que mostren els reintents. L'informe explica amb claredat per què s'ha triat aquest punt de branching. |
| Bé | 18-22 pts | El sensor i el branching funcionen correctament, però la prova de l'error gestionat és parcial (per exemple, no es mostren els 3 reintents complets, o el on_failure_callback no s'ha verificat amb captura). El disseny és correcte però l'explicació a l'informe és breu. |
| Suficient | 13-17 pts | El DAG inclou sensor i branching però amb algun problema funcional (la branca alternativa no s'activa mai, o el sensor no s'ha provat amb un escenari real d'espera). La gestió d'errors està configurada al codi però no demostrada en funcionament. |
| Insuficient | 0-12 pts | Manca el sensor, el branching o la gestió d'errors. El DAG no demostra cap escenari de fallada controlada. |
Criteri 4 — Càrrega incremental idempotent (25%)
Avalua si el pipeline de la Part 4 garanteix idempotència real, demostrada amb proves d'execució repetida.
| Nivell | Puntuació | Descriptor |
|---|---|---|
| Excel·lent | 23-25 pts | El mecanisme d'idempotència (upsert per clau primària combinat amb watermark, o equivalent) és correcte i ben justificat. S'aporta evidència clara (consulta COUNT(*) abans i després) que executar el DAG dues vegades seguides no duplica registres. Es demostra també que una actualització d'un registre existent es reflecteix correctament (UPDATE, no INSERT duplicat). L'informe explica amb precisió per què el disseny garanteix idempotència i identifica correctament què passaria si el watermark es guardés en el moment equivocat. |
| Bé | 18-22 pts | El mecanisme d'idempotència funciona i es demostra amb una prova d'execució repetida, però l'explicació teòrica a l'informe és incompleta o l'evidència (captures, consultes) és parcial. |
| Suficient | 13-17 pts | S'implementa algun patró de càrrega (per exemple, un INSERT simple) però sense garantir realment la idempotència, o la prova de duplicació no es fa o és poc concloent. |
| Insuficient | 0-12 pts | No hi ha mecanisme d'idempotència, o la càrrega genera duplicats evidents en re-executar el pipeline sense que l'alumne ho detecti ni ho corregeixi. |
Criteri 5 — Checks de qualitat de dades (20%)
Avalua la integració de validacions de qualitat dins el DAG (Part 5), amb Great Expectations o Pandera/dbt tests.
| Nivell | Puntuació | Descriptor |
|---|---|---|
| Excel·lent | 18-20 pts | La tasca de validació està correctament integrada al flux del DAG (abans de la càrrega), cobreix com a mínim tres dimensions de qualitat diferents (per exemple, completitud, exactitud, unicitat) amb regles concretes i ajustades al domini de les dades. Es demostra amb un cas de prova que la validació detecta errors reals i envia els registres invàlids a una taula o fitxer de quarantena. L'informe relaciona explícitament cada regla amb la dimensió de qualitat que comprova. |
| Bé | 14-17 pts | La validació està integrada i funciona, cobrint almenys dues dimensions de qualitat, però la quarantena és incompleta o l'informe no relaciona clarament regles i dimensions. |
| Suficient | 10-13 pts | Hi ha alguna validació de qualitat però aplicada fora del flux del DAG (script independent) o amb regles molt bàsiques (només comprovació de nuls). |
| Insuficient | 0-9 pts | No hi ha cap validació de qualitat de dades integrada a la pràctica, o les regles aportades no es corresponen amb cap dimensió de qualitat reconeguda. |
Taula de conversió de puntuació a nota
| Puntuació (sobre 100) | Nota (sobre 10) | Qualificació |
|---|---|---|
| 90 - 100 | 9,0 - 10 | Excel·lent |
| 80 - 89 | 8,0 - 8,9 | Notable alt |
| 70 - 79 | 7,0 - 7,9 | Notable baix |
| 60 - 69 | 6,0 - 6,9 | Bé |
| 50 - 59 | 5,0 - 5,9 | Suficient |
| 0 - 49 | 0 - 4,9 | Insuficient (no superat) |
La nota mínima per superar la pràctica és 5,0 (50 punts sobre 100).
Criteris de no presentació i plagi
Causes d'avaluació com a no presentat (NP)
Les situacions següents comporten la qualificació de No Presentat (NP) independentment del contingut de la pràctica:
- No lliurar el fitxer comprimit dins el termini establert al Campus Virtual sense causa justificada prèvia.
- No incloure els fitxers
.pydels DAGs (no es pot avaluar codi que no s'entrega). - No aportar cap captura de pantalla que demostri l'execució real dels DAGs a la UI d'Airflow.
Política de plagi i ús d'IA generativa
La pràctica avalua la capacitat de dissenyar, implementar i depurar pipelines amb Airflow. Per tant:
- Copiar DAGs sencers d'altres companys o de fonts externes sense comprensió ni adaptació és plagi i comporta una nota de 0 i l'obertura d'un expedient acadèmic.
- L'ús d'IA generativa (ChatGPT, Claude, Copilot, etc.) com a eina assistent de codi (suggerir sintaxi, depurar un error, completar un patró) és permès i no cal declarar-lo explícitament, sempre que l'alumne entengui i pugui explicar cada línia del codi entregat.
- Presentar codi generat per IA que l'alumne no sap explicar durant una revisió o defensa oral es considera equivalent al plagi i té les mateixes conseqüències.
- El professorat pot convocar l'alumne a una defensa oral de qualsevol pràctica entregada per verificar-ne la comprensió: es podrà demanar que expliqui el funcionament d'un DAG concret, que modifiqui una regla de validació en directe o que justifiqui el mecanisme d'idempotència triat.
Pes de la pràctica en la qualificació final del mòdul
| Element | Pes |
|---|---|
| PR507405 — Pipeline ETL amb Airflow i Docker | 12% de la nota final del mòdul M5074 |
| Activitats del Bloc 5 (AC5074/05/01 fins a AC5074/05/04) | Incloses a la nota de participació |
Consulta la programació del mòdul per al pes complet de cada bloc i instrument d'avaluació.
Rúbrica PR507405 | Mòdul M5074 Sistemes de Big Data | Institut Sa Palomera (Blanes) | Curs CEIABD 2026-2027