GuíaIntermedio
Guía de Calidad de Datos y Testing en SQL
Aprende a medir y garantizar la calidad de los datos con SQL, y a testear el SQL mismo. Data quality aparece en buena parte de las vacantes de datos: se trata de detectar datos incompletos, inválidos, duplicados e inconsistentes, codificar reglas de negocio como consultas que devuelven las violaciones, y probar que tus consultas y migraciones dan el resultado correcto. Trabajas sobre la base de datos de Reservo, poblada a propósito con datos sucios reales, y sales sabiendo construir un sistema de chequeos de calidad de datos que corre y reporta.
- 64
- lecciones
- 8
- módulos
- Inglés · Español
- disponible en
- Sí
- certificado
- Gratis
- acceso
Resultados
Lo que vas a poder hacer
- Entender las dimensiones de calidad de datos (completitud, validez, unicidad, consistencia) y la diferencia entre prevenir con una restricción y detectar con un chequeo
- Medir completitud: analizar NULLs, calcular el porcentaje de completitud por columna y distinguir 0, NULL y cadena vacía
- Detectar validez: valores fuera de rango o de dominio, y formatos de fecha inválidos, expresados como un SELECT que representa la regla
- Encontrar duplicados con GROUP BY... HAVING COUNT(*) > 1, incluidos los "casi iguales", y decidir cuál registro conservar
- Cazar inconsistencias: filas huérfanas sin integridad referencial, campos que no cuadran entre sí y totales que no coinciden
- Codificar reglas de negocio como aserciones SQL que devuelven las violaciones, donde cero filas significa que todo está sano
- Testear el SQL mismo: fixtures con resultado esperado, aserciones PASS/FAIL, y testear una migración comparando antes y después
- Construir el sistema de calidad de datos completo de Reservo: chequeos por dimensión, un reporte de salud agregado y los tests de las consultas clave
Antes de empezar
Qué necesitas traer
Es para ti si...
- Analistas y devs de datos que heredan bases con datos sucios y necesitan un proceso sistemático para detectarlos
- Quien se prepara para roles de datos donde la calidad de datos aparece explícitamente en la vacante
- Equipos que codifican reglas de negocio, como "un reembolso nunca supera el cargo", pero no las verifican con SQL
- Devs que quieren testear sus consultas y migraciones antes de confiar en el resultado
Requisitos y materiales
- SQL básico: SELECT, WHERE, GROUP BY
- Python 3 instalado (el módulo `sqlite3` viene en la librería estándar)
- Se recomienda haber visto JOINs y CTEs, o cursar en paralelo la guía de SQL avanzado
Contenido
El temario, módulo por módulo
Abre cualquiera para ver sus lecciones.
- Introducción al Módulo 1: Datos malos y las dimensiones de la calidad
- Por qué la calidad de datos importa: el costo de un dato malo
- Qué es una dimensión de calidad
- Completitud y validez
- Unicidad y consistencia
- Exactitud y actualidad
- Prevenir con restricciones vs detectar con chequeos
- Mini-proyecto: cargar el Reservo sucio
- Módulo 2 — Completitud: ¿está todo lo que debería estar?
- Qué es la completitud y por qué un `NULL` duele
- `IS NULL`: listar las filas incompletas
- `COUNT(*)` vs `COUNT(col)`: contar lo que falta
- El porcentaje de completitud por columna
- El trío `0` vs `NULL` vs `''`: tres cosas distintas
- El perfil de completitud de una tabla
- Mini-proyecto: el reporte de completitud de Reservo
- Introducción al Módulo 3: Validez — rangos, formatos y dominios
- Validez de rango: números fuera de límite
- Validez de dominio: valores fuera del conjunto permitido con `NOT IN`
- Validez de formato: fechas ISO 8601 con `date()`
- El patrón `WHERE NOT (regla)`: el molde único de todo chequeo
- Validez con `GLOB` y patrones: validar la forma del texto
- Por qué chequear validez aunque haya un `CHECK`
- Mini-proyecto: los chequeos de validez de Reservo
- Introducción al Módulo 4: Unicidad y duplicados
- Qué es un duplicado y por qué duele
- El patrón canónico: `GROUP BY ... HAVING COUNT(*) > 1`
- El `UNIQUE` que faltó: prevenir vs detectar
- Duplicados exactos vs casi-iguales: `LOWER(TRIM())`
- Ver las filas duplicadas completas
- Criterio para decidir cuál conservar
- Mini-proyecto: encontrar y resolver duplicados en Reservo
- Introducción al Módulo 5: Consistencia e integridad referencial
- Qué es la consistencia y la integridad referencial
- Huérfanas con `LEFT JOIN ... IS NULL`
- `PRAGMA foreign_key_check` y por qué SQLite las dejó entrar
- Consistencia entre campos: `end_at > start_at`
- Recalcular `price_cents` con la regla
- Totales que deben conciliar: `payments` vs `price_cents`
- Mini-proyecto: chequeos de consistencia de Reservo
- Introducción al Módulo 6: Reglas de negocio como aserciones SQL
- Qué es una aserción de calidad (el patrón "0 filas = PASS")
- Regla: un reembolso nunca supera el cargo
- Regla: no hay dos reservas confirmadas solapadas en la misma sala
- Regla: el precio corresponde al tier del socio
- Regla: la coherencia entre el estado y los pagos de una reserva
- Aserción de calidad vs `CHECK` de tabla: detectar vs prevenir
- Mini-proyecto: la batería de reglas de negocio de Reservo
- Módulo 7 — Testear tu SQL: ¿tu consulta da la respuesta correcta?
- Por qué testear una consulta: el número plausible pero falso
- El fixture conocido: entrada controlada, salida esperada
- La aserción SQL: que la base emita el veredicto
- Testear una migración: el antes, el después y los invariantes
- Un runner de tests de datos en Python
- Frameworks de testing de datos: el mismo patrón, con nombre
- Mini-proyecto: un suite de tests para las consultas de Reservo
- Módulo 8: El sistema de calidad de datos de Reservo
- Reunir los chequeos por dimensión
- El patrón de un chequeo reutilizable y nombrado
- El tablero de salud que agrega con UNION ALL
- El puntaje de salud global y su interpretación
- El runner de tests en Python que valida los chequeos
- Empaquetar el sistema: quality.sql + run_checks.py
- Proyecto: el sistema de calidad de datos de Reservo
Dónde encaja
Esta guía es parte de algo más grande
Se estudia dentro de estos programas, con acompañamiento y fechas.
Dudas frecuentes
Lo que suele preguntarse
Sin límite. Es una guía gratuita: entras cuando quieras, las veces que quieras.
No. Los módulos están ordenados de menos a más, pero puedes saltar al que necesites. Tu progreso se guarda por lección.
Lo que haga falta está en «Qué necesitas traer», arriba. Si no aparece nada ahí, puedes empezar desde cero.
En el grupo de WhatsApp del Club, y cada quince días hay un live con un instructor donde se resuelven dudas en vivo.
Sí. Al terminar todas las lecciones se emite automáticamente, con un código verificable que puedes compartir en LinkedIn.
No. Esta guía es autoguiada y sin fechas. El bootcamp es en vivo, por cohorte, con entregas que alguien revisa.
Empieza cuando quieras
Lo que dicen los estudiantes
Estas reseñas son de estudiantes inscritos que completaron al menos el 50% del curso. Moderamos las reseñas solo por motivos de contenido (spam, lenguaje ofensivo, datos personales), nunca por ser críticas o negativas.
Aún no hay reseñas aprobadas.
¡Sé el primero en compartir tu experiencia!