Tests genéricos y singulares

Objetivo

Convertir contratos de datos en pruebas automáticas.

Explicación

Los tests genéricos cubren patrones como unique/not_null/relationships/accepted_values. Un test singular es un SELECT que devuelve filas inválidas; cero filas significa éxito. dbt aporta valor cuando las transformaciones dejan de ser consultas sueltas y pasan a formar un DAG versionado, testeable y documentado. En trabajo real tendrás que justificar dependencias, contratos de datos y cómo despliegas cambios sin romper modelos downstream. Para trabajar Tests genéricos y singulares 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: dbt test pasa con datos válidos y señala filas al introducir un importe negativo. La verificación principal será: El SQL singular debe devolver exactamente las filas inválidas. Si no puedes explicar por qué pasa esa comprobación, vuelve al paso anterior antes de continuar.

Contexto profesional

dbt aporta valor cuando las transformaciones dejan de ser consultas sueltas y pasan a formar un DAG versionado, testeable y documentado. En trabajo real tendrás que justificar dependencias, contratos de datos y cómo despliegas cambios sin romper modelos downstream.

Ejemplo real

columns:
  - name: order_id
    data_tests: [not_null, unique]

Archivos o datos de entrada

  • dbt/dbt_project.yml
  • dbt/models/staging/stg_orders.sql

Práctica guiada

Añade tests a order_id y customer_id.

Laboratorio paso a paso

  • Prepara el entorno y localiza los datos/archivos de entrada: dbt/dbt_project.yml, dbt/models/staging/stg_orders.sql. 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 «Tests genéricos y singulares».
  • Ejecuta la práctica guiada: Añade tests a order_id y customer_id. Documenta el comando, consulta o acción exacta y el resultado obtenido.
  • Resuelve el reto sin mirar la solución: Crea un test singular que falle si amount < 0. Si falla, registra el mensaje de error y formula una hipótesis antes de cambiar código.
  • Compara tu resultado con el criterio esperado: dbt test pasa con datos válidos y señala filas al introducir un importe negativo. Después ejecuta la comprobación: El SQL singular debe devolver exactamente las filas inválidas.
  • Provoca deliberadamente un caso problemático relacionado con este error frecuente: Testear sólo PK y olvidar reglas de negocio deja huecos importantes.. Comprueba que sabes detectarlo y corregirlo.

Reto sin ayuda

Crea un test singular que falle si amount < 0.

Resultado esperado

dbt test pasa con datos válidos y señala filas al introducir un importe negativo.

Cómo verificarlo

El SQL singular debe devolver exactamente las filas inválidas.

Checklist de validación

  • El resultado cumple: dbt test pasa con datos válidos y señala filas al introducir un importe negativo.
  • Has ejecutado esta verificación y puedes explicar el resultado: El SQL singular debe devolver exactamente las filas inválidas.
  • 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

Escribe select * from {{ ref(…) }} where condición inválida.

Solución paso a paso

1) Empieza reproduciendo el caso base con los datos indicados. 2) Aplica esta estrategia específica: where amount < 0. 3) Usa como referencia técnica el ejemplo de la lección (columns: – name: order_id data_tests: [not_null, unique]). 4) Ejecuta la verificación: El SQL singular debe devolver exactamente las filas inválidas. 5) Compara con el resultado esperado: dbt test pasa con datos válidos y señala filas al introducir un importe negativo. 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 «Testear sólo PK y olvidar reglas de negocio deja huecos importantes.», corrige la causa antes de continuar; no ocultes el fallo ni cambies el resultado esperado para que la prueba pase.

Errores frecuentes

  • Testear sólo PK y olvidar reglas de negocio deja huecos importantes.

Qué debes recordar

dbt debe hacer explícitas dependencias, tests y documentación de tus transformaciones.

Preguntas de entrevista

  • ¿Qué test o contrato añadirías a este modelo y por qué? Aplícalo concretamente a «Tests genéricos y singulares».
  • ¿Cómo comprobarías que el cambio no rompe modelos downstream? Explica qué evidencia enseñarías al revisor.

Siguiente paso

Verás seeds, snapshots y freshness.

Recursos de esta lección

Quiz de la lección

¿Qué devuelve un singular test correcto cuando todo está bien?

Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.