Resumen del curso/Haz que perdure2 de 3

Proyecto final: encuentra las seis consultas incorrectas

AnteriorSiguiente

Proyecto final: encuentra las seis consultas incorrectas

Diez consultas se ejecutan sin error y exactamente seis son incorrectas. Encuéntralas, nombra el fallo y corrige cada una.

La auditoría del proyecto final

El proyecto incluye diez consultas en queries/audit-lab/, llamadas q01.sql a q10.sql. Todas se ejecutan sin errores y devuelven una respuesta ordenada, y cada una lleva su pregunta de negocio en un comentario al principio. Exactamente seis de las diez son incorrectas. Las otras cuatro son correctas, y eso importa igualmente - quien marca las diez ha aprendido sospecha, no auditoría. Parte de la habilidad consiste en dejar tranquila una consulta correcta.

Para cada consulta, da un veredicto: correcta o incorrecta. Si es incorrecta, nombra la clase de fallo, escribe una consulta corregida, registra el número incorrecto y el correcto, y anota qué representaba una fila antes y después de tu corrección.

Una advertencia. docs/known-defects.md describe lo que está mal deliberadamente en los datos, que es distinto de lo que está mal en estas consultas. Leerlo esperando encontrar veredictos te confundirá. La clave de respuestas está al final de esta página, deliberadamente fuera del repositorio, para que no puedas abrirla por accidente antes de emitir tus veredictos.

Las clases de fallo

Cada consulta incorrecta falla de una manera identificable, y cada una de estas seis aparece exactamente una vez:

  • Una multiplicación de filas en una unión que infla una medida de la cabecera del pedido.
  • Un filtro != o IN que elimina silenciosamente order_status NULL.
  • La columna de ingresos equivocada, unit_price cuando debía usarse net_price.
  • Un BETWEEN sobre una columna de marca de tiempo que elimina el último día.
  • Un INNER JOIN a una dimensión que elimina filas con claves huérfanas.
  • Un DISTINCT que oculta una fila duplicada de dimensión.

Tu tarea

Ejecuta cada consulta y después aplica la lista de siete puntos de «Audita lo que escribió». Copia queries/audit-lab/findings-template.md a queries/audit-lab/findings.md y escribe una sección por consulta: el veredicto, la clase de fallo si es incorrecta, la consulta corregida, ambos números y qué representaba una fila antes y después de tu corrección. No cambies los archivos de consulta.

Rúbrica

Puntúate sobre 10. Diez sobre diez significa que el proyecto final cumple los requisitos del curso.

ÁreaPuntosEvidencia
Veredictos correctos3Las diez están clasificadas correctamente, incluidas las cuatro correctas
Nombre del fallo2Cada consulta incorrecta lleva la clase de fallo que realmente aplica
Consultas corregidas2Cada corrección se ejecuta y devuelve el número correcto
Ambos números indicados1El número incorrecto y el correcto aparecen en cada hallazgo
Calidad del razonamiento1Cada hallazgo dice qué representaba una fila antes y después de la corrección
Sin falsos positivos1Las cuatro consultas correctas no se «corrigen»

Extensiones opcionales

  • Termina la parte de clientes de la pregunta central: audita la unión a customers que encuentra qué clientes impulsaron el crecimiento de las categorías ganadoras, usando lo que q09 te enseñó a comprobar.
  • Pide al agente que audite las mismas diez consultas y compara sus hallazgos con los tuyos. Cuando discrepasteis, ¿quién tenía razón?
  • Escribe una comprobación de calidad de Bruin que hubiera detectado automáticamente uno de los seis errores.
  • Añade a AGENTS.md el fallo que te resultó más difícil y comprueba si el agente lo evita la próxima vez.

Comprueba tu comprensión

  • ¿Cuántas de las diez consultas son incorrectas?
  • ¿Por qué importan tanto las cuatro consultas correctas como las seis incorrectas?
  • Nombra tres de las seis clases de fallo.

Hazlo con tu agente

Di next lesson y tu agente te enseñará esto, te hará estas preguntas y después asignará la tarea anterior. Hazla a mano y luego di review my work - comparará tu trabajo con una rúbrica y te dirá qué corregir o marcará la lección como terminada.

Warning

Aviso: contiene las respuestas de todo el laboratorio. Comprométete con un veredicto sobre las diez consultas en findings.md antes de seguir leyendo.

Clave de respuestas

Las seis consultas incorrectas son q02, q04, q05, q07, q08, q09. Las cuatro correctas son q01, q03, q06 y q10. Cada clase de fallo aparece exactamente una vez y todos los valores son exactos, porque los datos se generan igual en todas las máquinas.

ConsultaVeredictoTal como estáCorrectoPor qué
q01correcta1,2001,200COUNT(*) simple sobre una tabla; nada puede multiplicar filas.
q02incorrectaLondon 261,246.42London 102,911.39order_total pertenece a la cabecera del pedido; la unión a order_items repite cada pedido por línea. Suma solo desde orders.
q03correctaParis 190Paris 190La unión a stores solo añade el nombre de la ciudad; el grano no cambia.
q04incorrecta1,0691,093!= 'cancelled' elimina 24 pedidos con estado NULL. Usa IS DISTINCT FROM.
q05incorrecta381,357.00338,209.56unit_price es el precio de catálogo; los ingresos son quantity * net_price.
q06correcta503.39503.39AVG(order_total) solo sobre orders; el denominador es correcto.
q07incorrecta478480ordered_at es una marca de tiempo; BETWEEN ... AND '2024-12-31' se detiene a medianoche y elimina dos pedidos posteriores de ese día. Usa un rango semiabierto.
q08incorrecta847,979.80 en 8 categorías851,617.69 incluido el grupo Unknown15 líneas apuntan a un product_id que no está en products; el INNER JOIN las elimina, junto con 3,637.89.
q09incorrecta1,411.161,310.60Diez filas duplicadas en customers repiten esos pedidos en la unión; COUNT(DISTINCT customer_id) sigue siendo correcto, por eso parece seguro.
q10correcta2.42.4Líneas divididas entre pedidos distintos, ambos desde order_items en su propio grano.

El factor de multiplicación es exactamente 2.4 en toda la tabla, pero oscila aproximadamente entre 2.31 y 2.54 por tienda, porque los pedidos con más líneas no se distribuyen de forma uniforme; por eso una proporción por tienda cercana, pero no exactamente 2.4, es correcta y no un error aritmético.

Sign up to our newsletter

Practical updates on open-source data pipelines, AI analysts, governance, and what we are shipping at Bruin.

The signup form is hosted by Brevo. Allow marketing cookies to load it.