Las dependencias de programación en DataWorks definen las relaciones ascendente-descendente entre los nodos de activación automática (nodos de tarea que se ejecutan periódicamente en el sistema de programación). Una vez configuradas estas dependencias, el sistema garantiza que las instancias de los nodos descendentes se activen únicamente después de que todas las instancias de los nodos ascendentes se hayan ejecutado correctamente. De este modo, se asegura que los datos se produzcan y consuman en el orden adecuado. Este tema describe los conceptos básicos, los tipos de dependencia y los métodos de configuración de las dependencias de programación. Así podrá comprender el panorama general antes de configurarlas y encontrar rápidamente la documentación aplicable a su escenario.
Descripción general
La dependencia de programación es un mecanismo de DataWorks que define las relaciones ascendente-descendente entre nodos. Al configurar estas dependencias, usted especifica que un nodo comience a ejecutarse solo después de que sus nodos ascendentes designados finalicen correctamente. Esto garantiza el orden correcto del procesamiento de datos. Una vez configuradas las dependencias, el sistema de programación de DataWorks orquesta automáticamente el orden de ejecución: una instancia descendente se activa únicamente cuando todas las instancias ascendentes se ejecutan correctamente y se cumplen condiciones como el tiempo y la disponibilidad de recursos.
DataWorks establece las relaciones de dependencia entre nodos mediante la coincidencia de los nombres de salida del nodo con los nombres de entrada del nodo. Desde la perspectiva del nodo actual, la configuración de dependencias implica dos operaciones principales:
Configurar dependencias ascendentes (entradas del nodo): agregue entradas al nodo actual para especificar sus dependencias ascendentes. En el panel de configuración, puede establecer relaciones de dependencia si busca un nodo ascendente por su nombre de salida del nodo (recomendado), nombre del nodo o ID del nodo. La instancia del nodo actual comienza a ejecutarse solo después de que todas las instancias de los nodos ascendentes especificados se ejecuten correctamente.
Configurar salidas descendentes (salidas del nodo): configure nombres de salida para el nodo actual como identificadores únicos que los nodos descendentes puedan usar para depender de él. Se recomienda utilizar el formato
project_name.table_name(por ejemplo,my_project.dim_user) como nombre de salida para indicar claramente la tabla de datos que produce el nodo. Después de la configuración, los nodos descendentes pueden depender del nodo actual si hacen referencia a este nombre de salida.
Análisis automático (opcional) : Para los nodos de tipo SQL, DataWorks analiza automáticamente las sentenciasINSERTySELECTdel código, identifica las tablas de entrada y salida, y genera automáticamente las configuraciones de dependencia. También puede ajustar manualmente los resultados del análisis automático. Para conocer los tipos de nodo compatibles con el análisis automático, consulte Support for the automatic parsing feature .
Cada nodo debe tener como mínimo un nombre de salida. El sistema genera automáticamente una salida predeterminada para cada nodo. Incluso si elimina todas las salidas personalizadas, esta salida predeterminada se conserva.
Reglas y restricciones
Aplicación tras el despliegue: las configuraciones de dependencia de programación surten efecto únicamente después de que el nodo se despliega en Operation Center. Las configuraciones realizadas durante el desarrollo no se sincronizan automáticamente con el entorno de programación.
Estado de programación ascendente y descendente: las relaciones de dependencia surten efecto solo cuando se generan las instancias de los nodos ascendentes y descendentes, y estas se encuentran en un estado de programación normal. Si un nodo está mal configurado o una instancia ascendente presenta anomalías, el nodo podría quedar aislado y no se programará.
Restricción de dependencias circulares: el sistema prohíbe las dependencias circulares entre nodos (por ejemplo, A depende de B y B depende de A), lo que incluye ciclos directos e indirectos. Si se detecta una dependencia circular durante el despliegue, el sistema bloquea el proceso y devuelve un error.
Tipos de dependencia
DataWorks ofrece dos categorías principales de dependencias de programación: dependencias del mismo ciclo y dependencias entre ciclos. Cada una aplica a distintos escenarios de negocio. De forma predeterminada, las dependencias del mismo ciclo se asocian con la instancia ascendente más cercana dentro del mismo ciclo. Tras habilitar las configuraciones avanzadas de dependencia de programación, puede elegir Specified Range o Specified Set para controlar con precisión el rango de instancias ascendentes dependientes. Esto abarca escenarios flexibles, como dependencias entre zonas horarias y entre ventanas.
Conceptos previos
Un ciclo es un concepto relativo cuyo significado lo define la scheduling time de un nodo. Un ciclo de programación se refiere al desfase de tiempo entre dos instancias de programación adyacentes de un nodo, determinado por su frecuencia de programación. Por ejemplo, en una tarea de programación diaria, el ciclo anterior corresponde a la instancia del día previo; en una tarea de programación por hora, corresponde a la instancia de la hora previa.
|
Frecuencia de programación |
Un ciclo |
|
Programación diaria, semanal, mensual y anual |
1 día Nota
En las tareas de programación semanal, mensual y anual, las instancias se generan diariamente (las instancias de los días sin programación son instancias de ejecución simulada). Por lo tanto, el cálculo de dependencias se basa en la granularidad de días, y la instancia del ciclo anterior podría estar en estado de ejecución simulada. |
|
Programación por hora |
Un intervalo a nivel de hora |
|
Programación por minuto |
Un intervalo a nivel de minuto (por ejemplo, cada 5 minutos) |
Tipos de dependencia
DataWorks proporciona los siguientes tipos de dependencia según la forma en que se montan:
Dependencia más cercana (dependencia del mismo ciclo): la instancia descendente se monta en la instancia ascendente más cercana del mismo ciclo, con base en el principio de proximidad.
Rango especificado: usted especifica un rango continuo mediante desfases de inicio y fin para controlar con precisión el rango de instancias ascendentes dependientes. Resulta útil para escenarios como dependencias de datos entre zonas horarias.
Conjunto especificado: usted selecciona varias instancias ascendentes discretas. Es ideal para escenarios donde el nodo descendente depende de múltiples instancias de ciclo ascendentes específicas.
Dependencia entre ciclos: permite especificar rápidamente el resultado de la instancia del ciclo anterior de un nodo determinado. El nodo especificado puede ser el propio nodo actual (autodependencia), un nodo secundario de primer nivel del descendente o cualquier otro nodo.
Specified Range y Specified Set están disponibles únicamente después de activar el interruptor Enable advanced scheduling dependency configuration (deshabilitado de forma predeterminada) en la configuración de programación de DataStudio. El límite superior del rango es el día anterior y el día actual: para tareas a nivel de minuto, el desfase máximo es de ±1440 minutos; para tareas por hora, el desfase máximo es de ±24 horas; para tareas diarias y de mayor frecuencia, el rango máximo va de las 00:00 del día anterior a las 23:59 del día actual.
Comparación de los cuatro tipos de dependencia
Ejemplo: un nodo A de programación diaria produce la tabla dim_user, y el nodo descendente B consume dicha tabla:
Dependencia más cercana (dependencia del mismo ciclo): la tarea diaria descendente depende de los datos producidos por la tarea diaria ascendente del mismo día. Por ejemplo, el informe de ventas de hoy (nodo B) debe esperar hasta que se calcule el total de ventas de hoy (nodo A).
Rango especificado: la tarea descendente depende de todas las instancias ascendentes dentro de una ventana de tiempo específica. Por ejemplo, la tarea diaria en la región China (nodo B) depende de las 24 instancias de la tarea por hora en la región India (nodo A) dentro de la ventana de
[-3, 21]horas.Conjunto especificado: la tarea descendente depende únicamente de instancias ascendentes en puntos específicos del tiempo. Por ejemplo, una tarea de resumen (nodo B) solo necesita esperar a que la tarea ascendente de recopilación de datos (nodo A) complete las instancias generadas a las
0:00,6:00,12:00y18:00.Dependencia entre ciclos (depende del ciclo anterior): la tarea descendente depende de los datos completos producidos por la tarea ascendente en el ciclo anterior, o bien logra una ejecución secuencial mediante autodependencia. Por ejemplo, un informe T+1 (nodo B) depende de los datos producidos ayer por el nodo A, o una tarea por hora depende de su propia instancia de la hora anterior para evitar concurrencia.
|
Elemento de comparación |
Dependencia del mismo ciclo |
Dependencia entre ciclos (depende del ciclo anterior) |
||
|
Dependencia más cercana (dependencia del mismo ciclo) |
Rango especificado |
Conjunto especificado |
||
|
Descripción |
La instancia actual de este nodo depende del resultado de ejecución de la instancia del nodo ascendente en el mismo ciclo. La instancia ascendente más cercana se monta con base en el principio de proximidad. |
Utiliza desfases de inicio y fin para especificar un rango continuo, lo que permite controlar con precisión el rango de instancias ascendentes de las que se depende. |
Selecciona varias instancias ascendentes discretas al especificarlas individualmente. |
La instancia actual de este nodo depende del resultado de ejecución de la instancia de un nodo específico del ciclo anterior. El nodo especificado puede ser este mismo nodo (autodependencia), un nodo secundario de primer nivel del descendente o cualquier otro nodo. |
|
Representación en el DAG |
Se muestra como una línea continua. |
Se muestra como una línea continua. |
Se muestra como una línea continua. |
Se muestra como una línea discontinua. |
|
Escenario típico |
El nodo B necesita leer los datos producidos hoy por el nodo A. |
Dependencia de datos entre zonas horarias (por ejemplo, una tarea diaria en China depende de un rango continuo de instancias de tareas por hora en India o Arabia Saudita). |
Depende únicamente de algunas instancias de ciclo ascendentes (por ejemplo, solo los puntos horarios 0:00, 6:00, 12:00 y 18:00). |
Un nodo depende de los datos producidos ayer (por ejemplo, recuperación de datos T-1). Las tareas por hora o a nivel de minuto logran una ejecución secuencial mediante autodependencia para evitar la ejecución simultánea de múltiples instancias de ciclo. |
|
Método de configuración |
Admite análisis automático, trazado de líneas en el flujo de trabajo y adición manual. |
Configure los desfases de inicio y fin. |
Seleccione el conjunto discreto deseado entre las instancias de la tarea ascendente. |
En la sección "Previous Cycle" del panel de configuración de programación, seleccione el tipo de dependencia y especifique el ID del nodo. |
|
¿Requiere configuración avanzada? |
No |
Sí |
Sí |
No |
Nota: las dependencias del mismo ciclo y las dependencias entre ciclos pueden coexistir entre el mismo par de nodos, pero sus propósitos de negocio respectivos deben definirse con claridad. Si solo necesita una dependencia entre ciclos, recuerde eliminar la dependencia del mismo ciclo que el sistema generó automáticamente. De lo contrario, la instancia descendente seguirá necesitando que la instancia ascendente del ciclo actual termine antes de poder ejecutarse, lo que provocará retrasos inesperados.
Guía de configuración de dependencias de programación
Para garantizar la integridad y mantenibilidad de la cadena de programación, todos los nodos deben tener configuradas sus dependencias ascendentes antes de desplegarse en Operation Center para su programación automática. Si un nodo no tiene dependencia de datos, debe depender de un nodo virtual o del nodo raíz. Al configurar las dependencias de programación, analice la lógica de negocio del nodo, identifique los objetivos y tipos de dependencia, y elija el método de configuración más adecuado para construir un flujo de trabajo de datos robusto y bien estructurado.
1. Identificar los objetivos de dependencia
Antes de configurar las dependencias, complete las siguientes preparaciones:
Analice el linaje: compruebe si las tablas o particiones producidas por el nodo ascendente coinciden con las tablas o particiones que lee el nodo descendente.
Revise las propiedades de programación: asegúrese de que el ciclo de programación, el tiempo de vigencia, los parámetros de programación y otras propiedades del nodo estén configurados correctamente, ya que estas propiedades afectan directamente el comportamiento de montaje de dependencias.
Seleccione los objetos de dependencia según la forma en que el nodo actual depende de los datos.
|
Escenario 1: depender de la salida directa de un nodo ascendente |
|
|
Escenario 2: depender de datos ascendentes no programados (impulsado por la disponibilidad de datos) |
|
|
Escenario 3: sin dependencia directa de datos, pero con asociación de lógica de negocio |
|
2. Elegir un tipo de dependencia
Si el nodo actual depende de la salida directa de un nodo ascendente (escenario 1), debe confirmar además si los datos dependientes corresponden a la salida del nodo ascendente del mismo ciclo de programación o de un ciclo distinto.
Criterios de decisión principales
Determine qué datos de salida de ciclo lee realmente el nodo descendente del nodo ascendente. En la mayoría de los escenarios, un nodo escribe periódicamente datos en una partición específica de una tabla mediante parámetros de programación para la resolución dinámica. Consulte Scheduling parameter sources and expressions para comprender cómo se sustituyen los parámetros de programación. Si necesita depender de un nodo del mismo espacio de trabajo, revise la configuración de parámetros de programación de dicho nodo.
Cómo confirmarlo
-
Nodos en el mismo espacio de trabajo: revise los parámetros de programación en el código del nodo ascendente. Determine si la partición escrita tras la sustitución de parámetros es la partición de "hoy" o la de "ayer".
En el entorno de desarrollo, revise la configuración de parámetros de programación y los detalles del código del nodo ascendente. En el entorno de producción, compruebe los resultados de sustitución de parámetros en los detalles de la instancia.
-
Nodos en un espacio de trabajo diferente: utilice Data Map para consultar la información de particiones y el historial de cambios de la tabla ascendente.
Confirme los valores de partición que realmente se escriben cada día.
Elección del tipo
El código descendente lee la partición del día actual o del ciclo actual del nodo ascendente: dependencia del mismo ciclo.
El código descendente lee la partición del día anterior o del ciclo anterior del nodo ascendente: dependencia entre ciclos.
Tareas por hora o por minuto que deben ejecutarse estrictamente en el orden programado de las instancias: dependencia entre ciclos, lo que significa depender del propio nodo actual.
El nodo descendente agrega datos ascendentes de distintas zonas horarias por fecha de negocio (por ejemplo, una tarea diaria en China agrega tareas por hora locales de regiones como India y Arabia Saudita): habilite la configuración avanzada y use un rango especificado para cubrir las instancias del día de negocio local correspondiente.
La ventana de tiempo de la dependencia descendente cruza el límite de un día natural (por ejemplo, una tarea por lotes de madrugada procesa datos solo desde la tarde anterior hasta la madrugada del día actual): habilite la configuración avanzada y use un rango especificado para definir la ventana continua que cruza días.
El nodo descendente solo necesita depender de las instancias de ciclo más recientes del nodo ascendente, en lugar de esperar de forma predeterminada a todas las instancias ascendentes del día actual: habilite la configuración avanzada y use un rango especificado para limitar el alcance de la dependencia.
El nodo descendente depende únicamente de algunos puntos de tiempo discretos del nodo ascendente (por ejemplo, 0:00, 6:00, 12:00 y 18:00): habilite la configuración avanzada y use un conjunto especificado para seleccionar las instancias correspondientes.
Consecuencias de no confirmar correctamente el linaje:
Riesgo de dependencia faltante: si existe un linaje de tablas pero no se configura ninguna dependencia de programación, la tarea descendente iniciará antes de que la instancia ascendente finalice correctamente, lo que provocará que no se lean datos o que estos estén incompletos.
Riesgo de desajuste de parámetros: si se configura una dependencia pero los parámetros de partición no están alineados (por ejemplo, el nodo ascendente produce la partición de hoy pero el nodo descendente lee la de ayer), se producirán errores de lógica de datos y anomalías de calidad.
3. Configurar dependencias
Con base en los objetivos y tipos de dependencia confirmados en los pasos 1 y 2, elija un método de configuración adecuado para establecer las dependencias.
DataWorks permite que tareas con distintas frecuencias de programación dependan entre sí. Al combinar dependencias del mismo ciclo o entre ciclos con parámetros de programación, puede implementar una amplia variedad de escenarios de programación. Para obtener más información, consulte:
Para controlar con precisión el rango de instancias ascendentes de las dependencias (como especificar un rango de desfase continuo o seleccionar instancias discretas), active el interruptor "Enable advanced scheduling dependency configuration" en DataStudio > Scheduling Settings, y configure las dependencias mediante el método Specified range o Specified set.
4. Comprobar las dependencias de programación
Una vez completada la configuración y antes de desplegar el nodo, debe realizar las siguientes comprobaciones:
|
Método de comprobación |
Descripción |
|
Cuando envíe un nodo, utilice este método para comprobar si los cambios de dependencia de la versión actual del nodo son los esperados y evaluar el impacto de dichos cambios en el entorno de producción. Si el análisis automático está habilitado, debe confirmar los cambios de programación del nodo al enviarlo para garantizar la generación normal de datos en el entorno de producción. Esta función le ayuda a asegurar que los cambios de dependencia no afecten la generación de datos de las tareas de producción. |
|
|
Después de desplegar un nodo, utilice este método para comprobar si las dependencias de la tarea de programación de producción en Operation Center son las esperadas.
|
Impacto de quitar dependencias en las tareas descendentes
Durante la operación y el mantenimiento o la iteración de tareas, es posible que necesite quitar o ajustar dependencias de programación existentes.
Antes de quitar una dependencia, asegúrese de evaluar el impacto en el comportamiento de programación de las tareas descendentes para evitar tareas descendentes huérfanas o incidentes de datos. Para obtener más información sobre los nodos huérfanos, consulte Orphaned nodes.
|
Escenario de dependencia descendente |
Impacto tras quitar la dependencia |
Nivel de riesgo |
|
La tarea descendente depende únicamente del nodo actual. |
La tarea descendente se convierte en un nodo huérfano, pierde el mecanismo de activación ascendente y deja de programarse automáticamente. |
Alto |
|
La tarea descendente depende de varios nodos primarios. |
La tarea descendente podría iniciar antes de que los datos ascendentes estén listos, lo que provoca datos faltantes o errores de cálculo. |
Medio |
|
La tarea descendente depende de instancias entre ciclos. |
Si se quita la dependencia entre ciclos, la tarea descendente podría leer datos de una fecha de negocio incorrecta, lo que genera errores de lógica de datos. |
Medio |
Casos de uso
Construcción por capas de un almacén de datos sin conexión: configure dependencias de enlace completo en ODS → DWD → DWS → ADS para garantizar que los datos por capas se generen en orden.
Canalización ETL estándar: configure dependencias del mismo ciclo para asegurar que las tareas descendentes se ejecuten estrictamente después de que las instancias ascendentes finalicen correctamente. Esto garantiza el orden y la consistencia de la canalización de procesamiento de datos.
Informes del día siguiente (T+1): configure dependencias entre ciclos (desfase -1) para que la tarea de hoy dependa de los datos de negocio completos del día anterior, lo que permite un análisis y una entrega de datos precisos al día siguiente.
Agregación mixta de múltiples ciclos: configure dependencias entre ciclos para que una tarea diaria dependa de todas las instancias de ciclo de una tarea por hora, asegurando que los datos subyacentes estén completamente listos antes de la agregación.
Activador de disponibilidad de datos externos: configure dependencias personalizadas o nodos de verificación para confirmar que los archivos externos llegaron o que las interfaces están listas antes de activar el flujo de trabajo, lo que facilita la coordinación de programación entre sistemas.
Control complejo de flujos de trabajo: utilice nodos virtuales para agrupar dependencias de múltiples ramas como hitos de control del flujo de trabajo, simplificando la estructura de la cadena de dependencias y mejorando la visibilidad del monitoreo.
Agregación de datos multirregión entre zonas horarias: un almacén de datos en China procesa datos de regiones de todo el mundo. Al especificar un intervalo para montar las instancias por hora ascendentes correspondientes al día de negocio local de cada región, se cubren los desfases entre zonas horarias (por ejemplo, India [-3, 21], Arabia Saudita [-5, 19]).
Agregación de ventanas entre días: una tarea descendente agrega datos dentro de una ventana de tiempo que no coincide con un día calendario. Al especificar un intervalo, puede seleccionar de manera flexible una ventana continua entre el día anterior y el día actual (por ejemplo, [-12, 4] abarca de las 12:00 del día anterior a las 04:00 del día actual).
Depender únicamente de la ventana ascendente más reciente: una tarea descendente solo necesita las instancias más recientes de la tarea ascendente (por ejemplo, las últimas 6 horas). Al especificar un intervalo, puede limitar el rango de montaje y evitar esperar de forma predeterminada a todas las instancias ascendentes del día actual.
Depender de puntos de tiempo ascendentes discretos: una tarea descendente solo necesita la salida de la tarea ascendente en horas específicas (por ejemplo, 00:00, 06:00, 12:00 y 18:00). Puede especificar un conjunto para seleccionar las instancias correspondientes.
Preguntas frecuentes
A continuación se describen escenarios típicos. Para consultar más preguntas frecuentes sobre dependencias de programación, consulte FAQ about dependencies.
-
Unicidad del nodo.
Un nodo tiene formas distintas en los entornos de desarrollo y producción, pero sigue siendo único: las configuraciones de dependencia de programación de un mismo nodo pueden diferir entre ambos entornos. Esto significa que el mismo nodo puede presentar dos formas distintas en desarrollo y producción, aunque el nodo en sí es único.
Debe quitar las dependencias descendentes tanto en el entorno de desarrollo como en el de producción antes de dar de baja un nodo: debido a la unicidad del nodo, y para garantizar que las tareas descendentes puedan recuperar datos y ejecutarse correctamente, DataWorks exige que primero quite la dependencia en la configuración de programación del nodo descendente. Luego, vuelva a configurar los nodos ascendentes de los que deba depender el nodo descendente, y envíe y despliegue los cambios. Solo podrá dar de baja la tarea ascendente después de haber quitado la dependencia en ambos entornos.
-
Método de generación de instancias.
Cuando cree un nodo, asegúrese de que los nodos ascendentes y descendentes utilicen el mismo método de generación de instancias. Si sus configuraciones de instance generation method: Immediately after deployment difieren, el nodo ascendente podría generar instancias el día actual mientras el descendente las genera al día siguiente, lo que provocaría que las instancias descendentes se conviertan en Scenario: Isolated nodes.
Si modifica el ciclo de programación de un nodo existente y elige la opción de generar instancias inmediatamente después del despliegue, las instancias generadas previamente no se eliminarán automáticamente al modificar las dependencias de programación. Las dependencias de las instancias de ciclo generadas el día del despliegue podrían ser inconsistentes. Para obtener más información, consulte Instance generation method: Immediately after deployment.
-
Error que indica que el número de dependencias ascendentes supera 200 al actualizar una tarea mediante openapi.
Detalles del error: 'One file could not have more than 200 inputs 'One file could not have more than 200 inputs'.
Puede agregar nodos virtuales entre los nodos ascendentes y descendentes en DataStudio para reducir el número de dependencias ascendentes directas del nodo actual. Para obtener más información sobre la configuración de nodos virtuales, consulte Zero load node.