Seeds, snapshots y source freshness

Objetivo

Gestionar referencias pequeñas, historia y actualidad de fuentes.

Explicación

seed carga CSV pequeños versionados; snapshot captura cambios históricos de una entidad; source freshness comprueba si una fuente recibe datos con la frecuencia esperada. 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 Seeds, snapshots y source freshness 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: Puedes explicar qué mecanismo resuelve cada necesidad sin intercambiarlos. La verificación principal será: Una snapshot conserva versiones; un seed no observa cambios externos. 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

{% snapshot customers_snapshot %}
{{ config(unique_key='customer_id',strategy='timestamp',updated_at='updated_at') }}
select * from {{ source('raw','customers') }}
{% endsnapshot %}

Archivos o datos de entrada

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

Práctica guiada

Define cuándo usarías seed para países y snapshot para clientes.

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 «Seeds, snapshots y source freshness».
  • Ejecuta la práctica guiada: Define cuándo usarías seed para países y snapshot para clientes. Documenta el comando, consulta o acción exacta y el resultado obtenido.
  • Resuelve el reto sin mirar la solución: Diseña freshness para una fuente diaria que debería llegar antes de las 08:00. Si falla, registra el mensaje de error y formula una hipótesis antes de cambiar código.
  • Compara tu resultado con el criterio esperado: Puedes explicar qué mecanismo resuelve cada necesidad sin intercambiarlos. Después ejecuta la comprobación: Una snapshot conserva versiones; un seed no observa cambios externos.
  • Provoca deliberadamente un caso problemático relacionado con este error frecuente: Usar snapshot como sustituto de todo SCD puede generar volumen innecesario.. Comprueba que sabes detectarlo y corregirlo.

Reto sin ayuda

Diseña freshness para una fuente diaria que debería llegar antes de las 08:00.

Resultado esperado

Puedes explicar qué mecanismo resuelve cada necesidad sin intercambiarlos.

Cómo verificarlo

Una snapshot conserva versiones; un seed no observa cambios externos.

Checklist de validación

  • El resultado cumple: Puedes explicar qué mecanismo resuelve cada necesidad sin intercambiarlos.
  • Has ejecutado esta verificación y puedes explicar el resultado: Una snapshot conserva versiones; un seed no observa cambios externos.
  • 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

Pregunta si el dato es referencia estática, historia o señal de llegada.

Solución paso a paso

1) Empieza reproduciendo el caso base con los datos indicados. 2) Aplica esta estrategia específica: seed=lookup pequeño; snapshot=historia; freshness=actualidad. 3) Usa como referencia técnica el ejemplo de la lección ({% snapshot customers_snapshot %} {{ config(unique_key=’customer_id’,strategy=’timestamp’,updated_at=’updated_at’) }} select * from {{ source(‘raw’,’customers’) }} {% endsnapshot %}). 4) Ejecuta la verificación: Una snapshot conserva versiones; un seed no observa cambios externos. 5) Compara con el resultado esperado: Puedes explicar qué mecanismo resuelve cada necesidad sin intercambiarlos. 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 «Usar snapshot como sustituto de todo SCD puede generar volumen innecesario.», corrige la causa antes de continuar; no ocultes el fallo ni cambies el resultado esperado para que la prueba pase.

Errores frecuentes

  • Usar snapshot como sustituto de todo SCD puede generar volumen innecesario.

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 «Seeds, snapshots y source freshness».
  • ¿Cómo comprobarías que el cambio no rompe modelos downstream? Explica qué evidencia enseñarías al revisor.

Siguiente paso

Optimizarás materializaciones e incrementales.

Recursos de esta lección

Quiz de la lección

¿Qué comprueba source freshness?

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.