Todos los productos
Search
Centro de documentos

DataWorks:Principios de programación para dependencias complejas

Última actualización: Sep 04, 2026

DataWorks permite crear dependencias entre tareas con activación automática que tienen diferentes frecuencias de programación, como por minuto, hora, día, semana, mes y año. Cada ejecución de tarea es una instancia, y la frecuencia de programación determina cuántas instancias se generan. Este tema explica cómo DataWorks establece dependencias entre las instancias de tareas antecesoras y descendientes cuando sus frecuencias de programación difieren.

Contexto

  • En DataWorks, una tarea con activación automática genera instancias según su frecuencia de programación. Por ejemplo, una tarea horaria genera un número correspondiente de instancias cada día. Las dependencias de tareas se establecen entre sus instancias. Cuando las tareas antecesoras y descendientes tienen diferentes frecuencias de programación, el número de instancias y la forma en que dependen entre sí variarán.

  • DataWorks admite diversos escenarios de dependencia de programación. Puede elegir configurar una dependencia de programación del mismo ciclo o una dependencia de programación entre ciclos. Para obtener más información, consulte Configure a same-cycle scheduling dependency y Configure a cross-cycle scheduling dependency.

  • Para escenarios con zonas horarias distintas donde una tarea diaria depende de tareas horarias o por minuto, además de lograrlo indirectamente mediante la autodependencia y el principio de proximidad, puede habilitar la Configuración avanzada de dependencia de programación para usar directamente la dependencia de Rango especificado y configurar el intervalo de dependencia requerido (como [-5, 19]), o bien utilizar la dependencia de Conjunto especificado para configurar con precisión las dependencias en instancias a horas fijas, sin necesidad de establecer autodependencia para las tareas horarias ascendentes. Para obtener más información, consulte Configure a same-cycle scheduling dependency.

Comprenda estos conceptos antes de configurar una dependencia de programación.

N.º

Descripción

Referencias

1

DataWorks admite múltiples frecuencias de programación, incluidas minuto, hora, día, semana, mes y año. Cuando una tarea antecesora y una descendiente tienen diferentes frecuencias de programación, DataWorks establece la dependencia de programación mediante el principio de proximidad del tiempo de programación.

Nota
  • Si una tarea horaria depende de otra tarea horaria y ambas generan el mismo número de instancias por día, este principio no aplica. La dependencia no está relacionada con el tiempo de programación.

  • De forma predeterminada, una tarea diaria depende de todas las instancias generadas por sus tareas antecesoras horarias o por minuto en el mismo día. La tarea diaria se inicia solo después de que se procesan todos los datos de ese día provenientes de las tareas antecesoras.

Mount dependencies: proximity principle

2

Una dependencia de programación establece una dependencia de datos entre tareas. La tarea descendiente no se ejecutará hasta que su tarea antecesora finalice correctamente, independientemente del propio tiempo de programación de la descendiente.

Impact of dependencies on task execution

3

Puede comprender mejor el principio de proximidad a través de los siguientes ejemplos de escenarios.

Appendix 1: Summary of complex dependency scenarios

Los escenarios incluyen:

Resolución de dependencias: El principio de proximidad del tiempo de programación

Cuando se ejecuta una tarea con activación automática en DataWorks, se generan múltiples instancias. Las instancias descendientes dependen de las instancias antecesoras. A menos que se designe una instancia antecesora específica, la instancia descendiente sigue el principio de proximidad al establecer dependencias. Esto significa que la instancia descendiente depende de la instancia antecesora cuyo tiempo de programación es el más cercano, pero no posterior, al tiempo de programación de la descendiente y que no ha sido reclamada por otra instancia descendiente. Los principios de dependencia para diferentes escenarios son los siguientes:

Nota
  • Si el tiempo de programación de la tarea descendiente es anterior al tiempo de programación de la tarea antecesora, la tarea descendiente no se programará incluso cuando llegue su hora programada. Debe esperar hasta que la tarea antecesora finalice antes de poder programarse.

  • Cuando se establecen dependencias basadas en el principio de proximidad, si ninguna instancia antecesora está programada antes que la primera instancia de la tarea descendiente en un día determinado, la instancia descendiente depende de la primera instancia antecesora de ese día de forma predeterminada.

Escenario

Descripción

Diagrama

Dependencias entre tareas horarias y por minuto

  • Las dependencias están relacionadas con el tiempo de programación de las instancias

    • Comportamiento predeterminado: Las instancias descendientes reciben asignaciones de dependencia basadas en el principio de proximidad. DataWorks asigna cada instancia descendiente a la instancia antecesora cuyo tiempo de programación es anterior a o igual que el tiempo de programación de la descendiente y que no ha sido reclamada por otra instancia descendiente.

      Nota

      Cuando el nodo ascendente se ejecuta con mayor frecuencia que el nodo descendente (es decir, el antecesor genera más instancias que el descendiente), la instancia descendente realmente depende de todas las instancias antecesoras producidas dentro de su intervalo de programación (inicio, fin].

    • Caso especial: Si tanto los nodos antecesores como los descendientes tienen configurada la autodependencia (es decir, cross-cycle dependency on the node itself), la instancia descendiente actual depende de solo una instancia antecesora cuyo tiempo de programación es anterior a o igual que el tiempo de programación de la descendiente.

      Nota

      Puede consultar los diagramas para ver escenarios detallados donde las tareas horarias y por minuto están configuradas con autodependencias.

  • Las dependencias no están relacionadas con el tiempo de programación de las instancias.

    Cuando una tarea horaria depende de otra tarea horaria, o una tarea por minuto depende de otra tarea por minuto, y los nodos antecesores y descendientes generan el mismo número de instancias por día, las dependencias se establecen en una asignación uno a uno basada en la secuencia de instancias.

La siguiente figura muestra una descripción general de los escenarios detallados para dependencias entre tareas horarias y por minuto:

Tarea horaria depende de tarea horaria

image

Tarea horaria depende de tarea por minuto

image

Tarea por minuto depende de una tarea horaria

image

Ejemplo:

Una tarea horaria depende de otra tarea horaria.

image
  • Escenario 1: La tarea horaria B depende de la tarea horaria A.

    Configuración:

    • El rango de tiempo se establece de 00:00 a 23:59 cada día.

    • Tanto la tarea A como la tarea B se programan cada 5 horas.

    • La tarea A y la tarea B generan el mismo número de instancias por día.

    Dependencia: La tarea A y la tarea B generan el mismo número de instancias por día, por lo que las dependencias de instancias se asignan uno a uno.

  • Escenario 2:

    Configuración:

    • La tarea A se programa cada 4 horas durante el rango de tiempo de 06:10 a 21:59 cada día, generando 4 instancias en total.

    • La tarea B se programa cada 4 horas durante el rango de tiempo de 08:00 a 23:59 cada día, generando 4 instancias en total.

    Dependencia: La tarea A y la tarea B generan el mismo número de instancias por día, por lo que las dependencias de instancias se asignan uno a uno.

Tarea diaria depende de una tarea horaria o por minuto

Comportamiento predeterminado: De forma predeterminada, una tarea diaria depende de todas las instancias generadas por sus tareas antecesoras horarias o por minuto en el mismo día. La tarea diaria se inicia solo después de que se procesan todos los datos de ese día provenientes de las tareas antecesoras.

Otros casos: Si la tarea diaria solo necesita depender de la instancia horaria o por minuto más cercana a su propio tiempo de programación, puede configurar self-dependency para la tarea horaria o por minuto. Después de esta configuración, la tarea diaria se inicia tan pronto como finaliza esa instancia horaria o por minuto.

image

Para obtener detalles sobre las dependencias y el comportamiento de ejecución en diversos escenarios de programación, consulte Appendix 1: Summary of complex dependency scenarios.

Cómo afectan las dependencias a la ejecución de tareas

Una vez que una tarea descendiente tiene configurada una dependencia, la tarea no se ejecutará a su hora programada si la tarea antecesora no ha finalizado correctamente.

Por ejemplo, la tarea horaria B depende de la tarea diaria A, y la tarea horaria B no tiene configurada la autodependencia.

  • Tarea diaria A: La hora programada se establece en 07:00.

  • Tarea horaria B: Las horas programadas se establecen en 00:00, 08:00 y 16:00.

Si la tarea diaria A no ha finalizado, la tarea horaria B no se ejecutará incluso cuando llegue su hora programada 00:00. La hora de ejecución real más temprana de la tarea descendiente B es 07:00.

image

Apéndice 1: Resumen de escenarios de dependencias complejas

Si la hora programada de una tarea descendiente es anterior a la de su tarea antecesora, la tarea descendiente no se despachará incluso cuando llegue su hora programada. Debe esperar hasta que la tarea antecesora finalice. Para la primera instancia de la tarea descendiente en un día determinado, si la tarea antecesora no tiene ninguna instancia programada antes, la tarea descendiente depende de la primera instancia de la tarea antecesora de ese día de forma predeterminada.

Tarea horaria depende de otras tareas

Escenario

Detalles de dependencia y ejecución

Diagrama

Tarea horaria depende de una tarea horaria

  • Antecesor y descendiente tienen el mismo número de instancias

    Las instancias generadas por las tareas antecesoras y descendientes en el mismo día se asignan uno a uno. La primera instancia descendiente depende de la primera instancia antecesora, la segunda instancia descendiente depende de la segunda instancia antecesora, y así sucesivamente.

  • Antecesor y descendiente tienen diferente número de instancias

    Las instancias generadas por las tareas antecesoras y descendientes en el mismo día se asignan según el principio de proximidad del tiempo de programación. Cada instancia descendiente depende de la instancia antecesora cuyo tiempo programado es el más cercano (en o antes) al propio tiempo programado de la instancia descendiente.

    Caso especial: En una configuración de dependencia de programación donde la tarea antecesora se ejecuta con mayor frecuencia que la tarea descendiente (el escenario "más antecesores, menos descendientes"), la lógica de dependencia para las instancias descendientes sigue el principio de cobertura de intervalo en lugar de la simple proximidad.

    Alcance de la dependencia: Una instancia descendiente depende de todas las instancias antecesoras producidas dentro de su intervalo de ciclo (inicio, fin].

    • inicio se refiere al tiempo programado de la instancia descendiente anterior.

    • fin se refiere al tiempo programado de la instancia descendiente actual.

image

Tarea horaria depende de una tarea diaria

  • Tarea horaria sin autodependencia

    Todas las instancias generadas por la tarea horaria descendiente en el día actual dependen de la tarea diaria antecesora. Las instancias horarias descendientes comienzan a ejecutarse solo después de que finaliza la tarea diaria. En ese momento, todas las instancias horarias cuyos tiempos programados ya han llegado se ejecutan simultáneamente.

    Nota
    • Si no desea ejecución simultánea, configure una self-dependency para la tarea horaria descendente.

    • Todas las instancias periódicas generadas por la tarea horaria descendente se ejecutan independientemente unas de otras.

  • Tarea horaria con autodependencia

    • Solo la primera instancia horaria depende de la tarea diaria antecesora. Cada instancia horaria subsiguiente depende de la instancia horaria del ciclo anterior.

    • La instancia horaria actual comienza a ejecutarse solo después de que tanto la tarea diaria como la instancia horaria del ciclo anterior finalizan. Incluso si la hora programada ha llegado, las instancias horarias no se ejecutan simultáneamente.

    Nota

    Una self-dependency crea una dependencia entre días. Si la última instancia periódica del día anterior no ha finalizado, la tarea de hoy no se puede programar.

image

Tarea horaria depende de una tarea por minuto

  • Tarea por minuto sin autodependencia

    La tarea horaria descendiente depende de todas las instancias a nivel de minuto generadas por la tarea por minuto antecesora dentro de esa hora.

  • Tanto la tarea por minuto como la tarea horaria tienen autodependencia

    La tarea horaria descendiente depende de la instancia antecesora a nivel de minuto cuyo tiempo programado es el más cercano (en o antes) al propio tiempo programado de la descendiente dentro de esa hora.

image

Tarea diaria depende de otras tareas

Escenario

Dependencia y ejecución

Diagrama

Tarea diaria depende de una tarea diaria del mismo ciclo

  • Tarea diaria antecesora sin autodependencia

    De forma predeterminada, la instancia de la tarea diaria descendiente depende de la instancia de la tarea diaria antecesora del mismo ciclo.

  • Tarea diaria antecesora con autodependencia

    Cuando la tarea diaria antecesora tiene configurada una autodependencia, existe una dependencia entre ciclos entre la tarea diaria descendiente y la tarea diaria antecesora.

    Nota

    Una self-dependency crea una dependencia entre días. Si la última instancia periódica del día anterior no ha finalizado, la tarea de hoy no se puede programar.

image

Tarea diaria depende de tareas horarias del día actual

  • Tarea horaria sin autodependencia

    La tarea diaria descendiente depende de todas las instancias horarias generadas por la tarea horaria antecesora en el día actual. La tarea diaria comienza a procesarse solo después de que se han procesado todos los datos horarios del día.

    Nota

    Si la tarea diaria solo necesita depender de una instancia horaria específica, puede configurar una self-dependency para la tarea horaria. Después de que esa instancia horaria específica se ejecute correctamente, la tarea diaria se programa automáticamente.

  • Tarea horaria con autodependencia

    La tarea diaria descendiente depende de la instancia horaria antecesora cuyo tiempo programado es el más cercano (en o antes) al propio tiempo programado de la descendiente.

image

Tarea diaria depende de tareas horarias o por minuto del día anterior

  • Tarea horaria o por minuto sin autodependencia

    La tarea diaria descendiente depende de todas las instancias horarias o por minuto generadas por la tarea antecesora en el día anterior.

  • Tarea horaria o por minuto con autodependencia

    La tarea diaria descendiente depende de la última instancia horaria o por minuto generada por la tarea antecesora en el día anterior.

El siguiente ejemplo utiliza una tarea diaria que depende de una tarea horaria del día anterior.

image

Tarea por minuto depende de otras tareas

Escenario

Descripción de la dependencia

Diagrama

Tarea por minuto depende de una tarea horaria

  • Tarea por minuto sin autodependencia

    Cada instancia de la tarea por minuto descendiente depende de la instancia horaria más cercana cuyo tiempo de programación es anterior o igual a su propio tiempo de programación, sin duplicar dependencias.

    Nota

    En este escenario, múltiples instancias periódicas descendientes por minuto dependen de la misma instancia periódica horaria ascendente.

  • Tanto las tareas por minuto como las horarias tienen configurada la autodependencia

    Cada instancia de la tarea por minuto descendiente depende de su propia instancia anterior y, basándose en el principio de proximidad del tiempo de programación, depende de la instancia horaria antecesora más cercana cuyo tiempo de programación es anterior o igual a su propio tiempo de programación.

image

Tarea por minuto depende de una tarea diaria

  • Tarea por minuto sin autodependencia

    Todas las instancias por minuto generadas por la tarea por minuto descendiente en un día determinado dependen de la tarea diaria. La tarea por minuto solo puede ejecutarse después de que la tarea diaria alcance su tiempo de programación y finalice su ejecución.

    Nota
    • Después de que finaliza la tarea diaria, las instancias por minuto cuyos tiempos de programación ya han llegado se ejecutarán simultáneamente. Para evitar la ejecución simultánea, configure self-dependency para la tarea por minuto.

    • La ejecución de diferentes instancias de la tarea por minuto no se afecta mutuamente.

  • Tarea por minuto con autodependencia configurada

    • Solo la primera instancia generada por la tarea por minuto descendiente depende de la tarea diaria. Todas las demás instancias dependen directamente de su propia instancia anterior.

    • Una instancia por minuto comienza a programarse solo después de que tanto la tarea diaria como la instancia por minuto anterior finalizan su ejecución. En este caso, las instancias por minuto no se ejecutarán simultáneamente incluso si sus tiempos de programación ya han llegado.

    Nota

    Una self-dependency crea una dependencia entre días. Si la última instancia periódica del día anterior no ha finalizado, la tarea de hoy no se puede programar.

image

Otras tareas que dependen de tareas semanales, mensuales o anuales

Cuando las tareas diarias, horarias o por minuto dependen de tareas semanales, mensuales o anuales, las tareas semanales, mensuales o anuales generan instancias de ejecución simulada en días sin programación. Estas instancias no procesan datos realmente, no consumen recursos y no bloquean la ejecución de tareas descendientes.

El siguiente ejemplo utiliza el escenario de una tarea diaria que depende de una tarea semanal sin autodependencia:

  • Tarea semanal antecesora: Se ejecuta normalmente los lunes y viernes. Los martes, miércoles, jueves, sábados y domingos, se generan instancias de ejecución simulada que se establecen automáticamente en estado de éxito a la hora de programación sin ejecutar lógica de código. Las instancias de ejecución simulada no afectan la ejecución normal de las instancias descendientes.

  • Tarea diaria descendiente: Genera una instancia programada cada día y depende de la instancia generada por la tarea semanal antecesora cada día (incluidas las instancias de ejecución simulada). Después de que la instancia de la tarea semanal antecesora para el día finaliza correctamente, se activa la ejecución de la instancia descendiente correspondiente.

image

Apéndice 2: Programación de flujos de trabajo

DataWorks permite agregar nodos antecesores y descendientes a un flujo de trabajo como un todo. Para obtener detalles sobre la programación de flujos de trabajo, consulte Workflow scheduling.

Apéndice 3: Agregación global de datos entre zonas horarias (dependencia de rango especificado)

Cuando un almacén de datos en China procesa centralmente datos de múltiples regiones del mundo, las tareas antecesoras horarias en cada región se ejecutan según la hora local, mientras que la tarea diaria descendiente agrega datos diarios según la zona horaria de China. Debido a las diferencias de zona horaria, la tarea diaria descendiente debe usar una dependencia de rango especificado para depender de todas las instancias de tareas antecesoras horarias en cada región dentro de una ventana de tiempo específica.

Ejemplo de escenario (fecha de datos: 22-01-2026)

Región

Diferencia horaria con China

Tipo de dependencia

Configuración de desplazamiento

Instancias dependientes reales

India

2.5 horas atrás

Rango especificado

[-3, 21]

21-01 21:00 ~ 22-01 21:00 (24 instancias)

Arabia Saudita

5 horas atrás

Rango especificado

[-5, 19]

21-01 19:00 ~ 22-01 19:00 (24 instancias)

Comportamiento de dependencia entre días en escenarios de reejecución

El comportamiento de dependencia entre días de las instancias generadas por tareas de reejecución difiere del de las instancias de programación regular.

1. Dependencias entre días configuradas por rango especificado o conjunto especificado

Cuando ejecuta una tarea de reejecución, las dependencias entre días configuradas por un rango especificado o un conjunto especificado no surten efecto.

  • Comportamiento específico: Cuando se generan instancias de reejecución para múltiples fechas de negocio, el sistema ignora automáticamente todas las dependencias que cruzan límites de fechas de negocio durante la resolución de dependencias. Esto significa que una instancia de reejecución solo monta instancias ascendentes de la misma fecha de negocio, y no monta instancias ascendentes que apuntan al día anterior o al día siguiente según lo definido en la configuración.

  • Ejemplo: Una tarea diaria está configurada con una dependencia de rango en una tarea horaria ascendente [-4h, 0] (dependiendo de las 4 instancias anteriores a las 00:00 del día actual). En la programación regular, la instancia del 11 de mayo depende de las instancias del 10 de mayo, 20:00-23:00. Sin embargo, cuando reejecuta datos para el 11 de mayo, esta dependencia entre días se ignora y la instancia no montará ninguna instancia ascendente.

2. Dependencia entre días predeterminada en reejecución (mecanismo de serialización)

De forma predeterminada, cuando ejecuta una reejecución por lotes no agrupada, existe una dependencia serial implícita entre instancias de diferentes fechas de negocio.

  • Comportamiento específico: Todas las instancias de reejecución para la fecha de negocio D esperan hasta que todas las instancias de reejecución para la fecha de negocio D-1 finalicen correctamente antes de comenzar a ejecutarse. Esto significa que si alguna instancia en la fecha D-1 falla, ninguna de las instancias en la fecha D se programará.

  • Excepción: Si selecciona ejecución agrupada para la reejecución, este mecanismo de serialización no surte efecto. Las instancias de tareas dentro de cada grupo de ejecución se ejecutan independientemente y no se ven afectadas por el estado de las instancias en otros grupos.