Puedes leer todo sin registrarte. Solo crearemos un perfil anónimo cuando decidas guardar tu progreso.
Lección 2 de 5
For each task
Job parameters, task values y referencias dinámicas trasladan contexto entre tareas sin acoplarlas a estado de notebook.
- Duración
- 17 min aprox.
- Objetivo
- Job parameters, task values y referencias dinámicas trasladan contexto entre tareas sin acoplarlas a estado de notebook.
- Siguiente paso
- Continuar con la siguiente lección
Ver detalles del módulo
Lakeflow Jobs avanzado: control flow y repairs
Orquesta decisiones, bucles y recuperaciones sin convertir el DAG en lógica opaca.
- Usar branching y for-each con límites
- Aplicar retries y repairs correctamente
- Transferir parámetros y task values
02ImplementaciónFor each task
Job parameters, task values y referencias dinámicas trasladan contexto entre tareas sin acoplarlas a estado de notebook.
+
For each task
Job parameters, task values y referencias dinámicas trasladan contexto entre tareas sin acoplarlas a estado de notebook.
Los job parameters describen entradas del run y se propagan a tareas compatibles. Una tarea puede publicar un valor pequeño mediante `dbutils.jobs.taskValues.set`; downstream lo referencia como `{{tasks.<task>.values.<key>}}`. Las referencias se sustituyen como texto, no evalúan expresiones.
Los task values sirven para contadores, rutas o listas pequeñas, no para transportar DataFrames. Los datos voluminosos se materializan en tablas/Volumes y se pasa un identificador. Un nombre mal escrito puede tratarse como literal, así que la validación del bundle y una prueba smoke son esenciales.
Modelo mental
Los parámetros describen intención de ejecución; los task values transportan resultados pequeños calculados durante esa ejecución; las referencias dinámicas enlazan ambos sin copiar estado a notebooks. Un job parameter como `business_date` o `environment` debe tener tipo y validación conceptual, aunque llegue como texto. Puede propagarse a tareas mediante configuración, mientras `dbutils.jobs.taskValues.set` publica un valor para una tarea downstream o un `If/else`. No es un almacén de datos: payloads grandes pertenecen a tablas, Volumes u object storage y se pasan por referencia. Las referencias `{{...}}` se resuelven por el servicio antes de ejecutar la tarea y algunas no fallan si se escriben mal, por lo que deben revisarse y probarse. Secretos nunca viajan como parámetros visibles. El contrato incluye default seguro, timezone, formato, origen y comportamiento de rerun para que un repair use el mismo intervalo lógico.
Entrada definida en el ámbito del Job que configura una ejecución y puede propagarse de forma consistente a múltiples tareas.
Centraliza fecha, entorno o modo y hace reproducibles runs normales, manuales, backfills y reparaciones.Valor pequeño producido durante una tarea y expuesto por clave a condiciones o tareas posteriores dentro del mismo run.
Permite comunicar decisiones y referencias sin acoplar notebooks a variables globales o archivos temporales implícitos.Plantilla resuelta por Lakeflow Jobs con contexto del run, trigger, parámetros, tareas o metadatos disponibles oficialmente.
Conecta configuración declarativa con valores de ejecución, pero exige sintaxis y alcance verificados para evitar literales accidentales.invalid_rows = spark.table("main.ops.validation_results").where(
"run_id = :run_id AND is_valid = false"
).count()
total_rows = spark.table("main.ops.validation_results").where(
"run_id = :run_id"
).count()
ratio = invalid_rows / total_rows if total_rows else 1.0
dbutils.jobs.taskValues.set(key="invalid_ratio", value=ratio)El downstream referencia `{{tasks.validate.values.invalid_ratio}}`; conserva el detalle de filas en una tabla, no en el task value.
Puntos clave
- Job parameter identifica el run; task value comunica un resultado pequeño de upstream.
- Referencias dinámicas usan doble llave y no ejecutan código.
- Datos grandes se comparten mediante almacenamiento gobernado, no mediante valores del DAG.
Evita
- Pasar miles de filas como JSON en un task value y alcanzar límites de tamaño.
- Usar una referencia dinámica inexistente y no detectar que quedó como texto literal.
Recuerdo activo