Objetivo
Convertir supuestos de datos en consultas de control.
Explicación
Antes de optimizar, comprueba corrección. Los controles típicos son unicidad de clave, nulos inesperados, integridad referencial, rangos y reconciliación de totales. Después revisa filtros, columnas y plan de ejecución según el motor. En un equipo de datos, SQL no se evalúa sólo por devolver filas: debe responder una pregunta de negocio, conservar el grain correcto y permitir que otra persona valide el resultado. Esta práctica usa el ecommerce del curso para obligarte a reconciliar conteos y totales, igual que harías antes de publicar una métrica en un dashboard. Para trabajar SQL de calidad y rendimiento de forma profesional, no te quedes con el ejemplo: identifica la entrada, ejecuta el caso base, provoca al menos un caso incorrecto y compara el resultado con un control independiente. En este laboratorio el criterio de salida es concreto: Las consultas de control devuelven 0 filas o diferencias 0 cuando los datos son correctos. La verificación principal será: Automatiza cada consulta para que un resultado inesperado falle el pipeline. Si no puedes explicar por qué pasa esa comprobación, vuelve al paso anterior antes de continuar.
Contexto profesional
En un equipo de datos, SQL no se evalúa sólo por devolver filas: debe responder una pregunta de negocio, conservar el grain correcto y permitir que otra persona valide el resultado. Esta práctica usa el ecommerce del curso para obligarte a reconciliar conteos y totales, igual que harías antes de publicar una métrica en un dashboard.
Ejemplo real
-- duplicados
SELECT order_id,COUNT(*) FROM orders GROUP BY order_id HAVING COUNT(*)>1;
-- huérfanos
SELECT o.* FROM orders o LEFT JOIN customers c ON o.customer_id=c.customer_id WHERE c.customer_id IS NULL;
Archivos o datos de entrada
- data/ecommerce_customers.csv
- data/ecommerce_orders.csv
Práctica guiada
Ejecuta cinco controles de calidad sobre ecommerce.
Laboratorio paso a paso
- Prepara el entorno y localiza los datos/archivos de entrada: data/ecommerce_customers.csv, data/ecommerce_orders.csv. Antes de modificar nada, anota el número de filas, columnas u objetos que esperas usar.
- Reproduce el ejemplo real de la lección y guarda la salida. No avances hasta poder explicar qué hace cada bloque relacionado con «SQL de calidad y rendimiento».
- Ejecuta la práctica guiada: Ejecuta cinco controles de calidad sobre ecommerce. Documenta el comando, consulta o acción exacta y el resultado obtenido.
- Resuelve el reto sin mirar la solución: Diseña una reconciliación entre revenue del mart y revenue de RAW para pedidos completados. Si falla, registra el mensaje de error y formula una hipótesis antes de cambiar código.
- Compara tu resultado con el criterio esperado: Las consultas de control devuelven 0 filas o diferencias 0 cuando los datos son correctos. Después ejecuta la comprobación: Automatiza cada consulta para que un resultado inesperado falle el pipeline.
- Provoca deliberadamente un caso problemático relacionado con este error frecuente: Comparar totales con filtros distintos genera falsas alarmas.. Comprueba que sabes detectarlo y corregirlo.
Reto sin ayuda
Diseña una reconciliación entre revenue del mart y revenue de RAW para pedidos completados.
Resultado esperado
Las consultas de control devuelven 0 filas o diferencias 0 cuando los datos son correctos.
Cómo verificarlo
Automatiza cada consulta para que un resultado inesperado falle el pipeline.
Checklist de validación
- El resultado cumple: Las consultas de control devuelven 0 filas o diferencias 0 cuando los datos son correctos.
- Has ejecutado esta verificación y puedes explicar el resultado: Automatiza cada consulta para que un resultado inesperado falle el pipeline.
- Has probado al menos un caso límite o dato inválido y el comportamiento es explícito, no silencioso.
- Puedes repetir la práctica desde cero sin copiar la solución y dejar evidencia (consulta, commit, captura o salida de consola).
Pista específica
Un buen test suele devolver las filas que incumplen la regla.
Solución paso a paso
1) Empieza reproduciendo el caso base con los datos indicados. 2) Aplica esta estrategia específica: Compara SUM(amount) con la misma definición de status/fechas en ambos lados. 3) Usa como referencia técnica el ejemplo de la lección (– duplicados SELECT order_id,COUNT(*) FROM orders GROUP BY order_id HAVING COUNT(*)>1; — huérfanos SELECT o.* FROM orders o LEFT JOIN customers c ON o.customer_id=c.customer_id WHERE c.customer_id IS NULL;). 4) Ejecuta la verificación: Automatiza cada consulta para que un resultado inesperado falle el pipeline. 5) Compara con el resultado esperado: Las consultas de control devuelven 0 filas o diferencias 0 cuando los datos son correctos. 6) Repite el reto cambiando un dato o condición para demostrar que entiendes el comportamiento y no has obtenido el resultado por casualidad. Si aparece el error «Comparar totales con filtros distintos genera falsas alarmas.», corrige la causa antes de continuar; no ocultes el fallo ni cambies el resultado esperado para que la prueba pase.
Errores frecuentes
- Comparar totales con filtros distintos genera falsas alarmas.
Qué debes recordar
Debes poder explicar qué filas produce la consulta y por qué.
Preguntas de entrevista
- ¿Cómo demostrarías que una consulta no está duplicando métricas? Aplícalo concretamente a «SQL de calidad y rendimiento».
- ¿Qué comprobaciones harías antes de publicar este resultado a negocio? Explica qué evidencia enseñarías al revisor.
Siguiente paso
Ya puedes afrontar los 100 retos SQL incluidos.
Recursos de esta lección
Preparando contenido…
Quiz de la lección
¿Qué debe devolver idealmente un test singular de filas inválidas?