Salta el contingut

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.
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.
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.
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.
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.
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
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 .py dels 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