Rúbrica Bloc 6 — Formats de dades
Aquesta rúbrica s'aplica a la pràctica PR507406 — Benchmark de formats de dades del Bloc 6 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 — Generació del dataset i correcció del codi (15%)
Avalua la qualitat de la generació del dataset d'1 milió de files (Part 1) i la correcció general del codi lliurat.
| Nivell | Puntuació | Descriptor |
|---|---|---|
| Excel·lent | 14-15 pts | El dataset generat té exactament 1 milió de files, amb un esquema realista d'almenys 8 columnes que combina tipus numèrics, categòrics, textuals i de data. La generació és vectoritzada (numpy/pandas) i s'executa en pocs segons. El codi és net, comentat i segueix bones pràctiques (noms de variables clars, reproductibilitat amb seed). Tot el codi lliurat s'executa sense errors de principi a fi. |
| Bé | 11-13 pts | El dataset té la mida i la varietat de tipus requerides, però l'esquema és una mica pobre (menys de 8 columnes o poca varietat de tipus). La generació pot ser lenta (bucles no vectoritzats) però funciona. El codi s'executa amb algun ajust menor. Comentaris presents però escassos. |
| Suficient | 8-10 pts | El dataset no arriba a 1 milió de files o l'esquema és mínim (poques columnes, un sol tipus de dada predominant). El codi requereix correccions per executar-se. Pocs o cap comentari explicatiu. |
| Insuficient | 0-7 pts | No es genera el dataset requerit o el codi no s'executa. No hi ha cap mena de documentació o comentari al codi. |
Criteri 2 — Benchmark CSV / JSON / Parquet / Avro (25%)
Avalua la implementació de l'escriptura, lectura i mesura de temps i mida per als quatre formats (Part 2), i la qualitat de la taula comparativa i l'anàlisi (Part 3).
| Nivell | Puntuació | Descriptor |
|---|---|---|
| Excel·lent | 23-25 pts | Els quatre formats (CSV, JSON/NDJSON, Parquet, Avro) s'escriuen i es llegeixen correctament amb codi funcional. Els temps es mesuren amb time.perf_counter() de forma rigorosa (sense incloure operacions alienes a l'escriptura/lectura) i la mida es verifica amb os.path.getsize(). La taula comparativa final és completa i clara. L'anàlisi respon totes les preguntes plantejades amb arguments fonamentats en els resultats numèrics propis (no en valors genèrics del temari), i identifica correctament per què Parquet i Avro es comporten de manera diferent a CSV i JSON. |
| Bé | 18-22 pts | Els quatre formats es processen correctament, però la mesura de temps pot incloure petites imprecisions (per exemple, no aïllar prou bé l'operació mesurada). La taula comparativa és completa. L'anàlisi respon la majoria de les preguntes, però alguna conclusió no està prou fonamentada en les pròpies dades. |
| Suficient | 13-17 pts | Falta algun format (per exemple, Avro no implementat o implementat incorrectament) o les mesures de temps/mida són poc fiables. La taula comparativa existeix però és incompleta. L'anàlisi és superficial o usa valors genèrics en lloc dels resultats propis. |
| Insuficient | 0-12 pts | Falten dos o més formats, o el codi no produeix resultats vàlids. No hi ha taula comparativa ni anàlisi, o aquesta no es basa en cap dada real. |
Criteri 3 — Predicate pushdown i column pruning amb pyarrow (20%)
Avalua la demostració empírica dels avantatges del format columnar sobre el fitxer Parquet (Part 4).
| Nivell | Puntuació | Descriptor |
|---|---|---|
| Excel·lent | 18-20 pts | El column pruning es demostra correctament comparant la lectura completa amb pq.read_table(columns=[...]), amb una mesura de temps clara i una explicació tècnica correcta de per què Parquet permet aquesta optimització (column chunks independents). El predicate pushdown es demostra amb el paràmetre filters de pyarrow, comparant-lo amb un filtratge post-lectura amb pandas, i s'explica correctament el paper de les estadístiques min/max del footer i dels row groups. Els resultats numèrics (factor d'acceleració) es presenten i s'interpreten correctament. Es verifica que els resultats filtrats són equivalents en ambdós mètodes. |
| Bé | 14-17 pts | Tant el column pruning com el predicate pushdown es demostren amb codi funcional i es mesura el temps, però l'explicació tècnica del per què és incompleta o imprecisa en algun punt. Falta la verificació que els resultats dels dos mètodes de filtratge són equivalents. |
| Suficient | 9-13 pts | Només es demostra un dels dos conceptes (column pruning o predicate pushdown), o tots dos es demostren però sense mesura de temps que permeti quantificar la millora. L'explicació tècnica és vaga o incorrecta. |
| Insuficient | 0-8 pts | No es demostra cap dels dos conceptes, o el codi presentat no utilitza realment les funcionalitats de pyarrow (columns, filters) que els implementen. |
Criteri 4 — Taula Delta Lake i time travel (25%)
Avalua la creació de la taula Delta Lake, la generació de múltiples versions i la demostració del time travel (Part 5).
| Nivell | Puntuació | Descriptor |
|---|---|---|
| Excel·lent | 23-25 pts | Es crea una taula Delta Lake vàlida amb almenys 3 versions diferenciades (per exemple: escriptura inicial, append, overwrite o update), totes documentades amb dt.history(). El time travel es demostra consultant explícitament almenys dues versions diferents (per número de versió) i es mostra una diferència real i verificable entre els estats de la taula (canvi de dades, nombre de files o valors d'una columna). S'explica correctament el paper del _delta_log/ i de les transaccions ACID en aquest mecanisme. El codi s'executa sense errors. |
| Bé | 18-22 pts | La taula Delta Lake té almenys 3 versions i el time travel funciona correctament, però la diferència entre versions mostrada és poc clara o mínima. L'explicació del _delta_log/ és correcta però poc detallada. |
| Suficient | 13-17 pts | La taula Delta Lake té menys de 3 versions (per exemple, només l'escriptura inicial i un append) o el time travel es demostra de forma incompleta (no es consulten realment versions diferents, o el codi no verifica que el resultat canviï). |
| Insuficient | 0-12 pts | No es crea cap taula Delta Lake funcional, o no es demostra el time travel en cap forma. |
Criteri 5 — Reflexió, conclusions i presentació (15%)
Avalua la qualitat de l'informe, les respostes a les preguntes de reflexió i la presentació global del lliurament.
| Nivell | Puntuació | Descriptor |
|---|---|---|
| Excel·lent | 14-15 pts | L'informe respon totes les preguntes de reflexió amb arguments propis i fonamentats en els resultats obtinguts (no en respostes genèriques del temari). Inclou captures o sortides de text rellevants (taula de resultats, sortida del time travel). El lliurament està ben organitzat (codi separat per parts, informe llegible) i el codi inclou comentaris que expliquen les decisions de disseny. Es nota una comprensió real dels conceptes treballats, no només la seva execució mecànica. |
| Bé | 11-13 pts | L'informe respon la majoria de les preguntes de reflexió de forma correcta, encara que alguna resposta sigui poc fonamentada en les dades pròpies. El lliurament està organitzat de forma raonable. El codi té alguns comentaris. |
| Suficient | 8-10 pts | L'informe respon les preguntes de forma molt breu o genèrica. El lliurament és desorganitzat o difícil de seguir. El codi té pocs o cap comentari. |
| Insuficient | 0-7 pts | No hi ha informe o reflexió, o les respostes no tenen relació amb la feina realitzada. El lliurament no permet identificar clarament les diferents parts de la pràctica. |
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 codi (script o notebook) dins el termini establert al Campus Virtual sense causa justificada prèvia.
- Lliurar codi que no s'executa en cap punt de la pràctica (errors de sintaxi o dependències no resoltes que impedeixen avaluar-ne el funcionament).
- No incloure la taula de resultats del benchmark (Part 3) al lliurament.
Política de plagi i ús d'IA generativa
Aquesta és una pràctica de programació i avalua la capacitat de l'alumne d'escriure, executar i interpretar codi propi. Per tant:
- Copiar codi d'altres companys o de fonts externes sense citar-les és plagi i comporta una nota de 0 i l'obertura d'un expedient acadèmic.
- Usar IA generativa (ChatGPT, Claude, Gemini, etc.) per generar tot el codi de la pràctica i presentar-lo sense comprendre'l és equivalent al plagi i té les mateixes conseqüències. L'ús d'IA com a eina de suport (resoldre dubtes puntuals de sintaxi, depurar un error concret) és permès, sempre que l'alumne sigui capaç d'explicar i justificar cada part del codi lliurat.
- El professorat pot convocar l'alumne a una defensa oral o a una modificació en directe del codi lliurat per verificar-ne la comprensió real.
Pes de la pràctica en la qualificació final del mòdul
| Element | Pes |
|---|---|
| PR507406 — Benchmark de formats de dades | 9% de la nota final del mòdul M5074 |
| Activitats del Bloc 6 (AC5074/06/01, 02, 03) | 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 PR507406 | Mòdul M5074 Sistemes de Big Data | Institut Sa Palomera (Blanes) | Curs CEIABD 2026-2027