Tous les produits
Search
Centre de documentation

DataWorks:Dépendances

Dernière mise à jour :Aug 09, 2026

Cette rubrique répond aux questions fréquemment posées sur les dépendances.

Concept clé

Une dépendance de planification est une relation amont-aval entre des nœuds. Dans DataWorks, un nœud de tâche en aval commence à s'exécuter uniquement après l'exécution réussie de son nœud de tâche en amont.

Remarque

Après la configuration d'une dépendance, l'une des conditions préalables à l'exécution du nœud actuel est que les nœuds parents dont dépend le nœud actuel s'exécutent avec succès. Pour plus d'informations sur les dépendances de planification, consultez la rubrique Dépendances de planification.

Pourquoi dois-je configurer des dépendances de planification

Une fois les dépendances de planification configurées, le système de planification garantit qu'une tâche planifiée récupère les données correctes au moment de l'exécution. Après l'exécution réussie du nœud en amont dont dépend le nœud actuel, DataWorks identifie que les dernières données de la table en amont ont été produites en fonction de l'état d'exécution du nœud. Le nœud en aval récupère ensuite les données. Cela permet d'éviter que le nœud en aval ne récupère des données avant que la table en amont n'ait terminé la production des données.

Comment configurer les dépendances de planification dans DataWorks ?

Dans DataWorks, la sortie d'un nœud en amont sert d'entrée à un nœud en aval pour former une dépendance de nœud.

Remarque
  • Les tâches SQL configurent automatiquement les entrées et sorties des nœuds de la manière suivante :

    • Lorsque vous select depuis une table, le système analyse automatiquement le nœud qui produit la table comme dépendance en amont du nœud actuel.

    • Lorsque vous insert dans ou create une table, le système analyse automatiquement la table comme sortie du nœud actuel.

  • Pour les tâches Data Integration, ajoutez manuellement la table de sortie au format projectname.tablename en tant que sortie du nœud. Cela garantit que la fonctionnalité d'analyse automatique peut résoudre la dépendance lorsque les nœuds en aval traitent la table de sortie synchronisée.

  • Étant donné qu'une sortie unique est requise pour localiser un nœud unique et former une dépendance de nœud, la sortie du nœud (projectname.tablename) doit être unique.

Dans quels scénarios les dépendances de planification ne sont-elles pas prises en charge ?

Les dépendances de planification dans DataWorks sont principalement conçues pour garantir que les tables mises à jour selon un calendrier par des nœuds planifiés voient leurs données correctement consommées par les nœuds en aval. Par conséquent, la plateforme ne peut pas surveiller les tables qui ne sont pas mises à jour par des nœuds planifiés DataWorks.

Si une table n'est pas produite par une planification périodique et qu'un nœud utilise select pour interroger les données d'une telle table, supprimez manuellement la dépendance de nœud en amont générée automatiquement à partir de l'instruction select. Les tables non produites par une planification périodique incluent :

  • Tables téléchargées vers DataWorks depuis une source locale

  • Tables de dimension

  • Tables non produites par la planification DataWorks

  • Tables produites par des tâches manuelles

Comment supprimer les tables qui ne nécessitent pas de dépendances ?

Cliquez avec le bouton droit sur le nom de la table dans le code et sélectionnez Delete Output, puis exécutez à nouveau l'analyse automatique. Ajoutez l'annotation --@exclude_input=table_name sur la première ligne de l'éditeur de code pour exclure une dépendance d'entrée spécifiée (par exemple, --@exclude_input=xc_dw_user_info_all_d). Ensuite, cliquez avec le bouton droit dans l'éditeur et sélectionnez Delete Output pour supprimer les dépendances de sortie inutiles. Cliquez sur le bouton Parse Inputs and Outputs dans le panneau des paramètres de planification à droite pour analyser à nouveau les dépendances de planification. Dans le tableau des dépendances de planification, vous pouvez afficher le nom de sortie du nœud parent actuel, la source (ajoutée manuellement ou analysée automatiquement) et d'autres informations. Vous pouvez également cliquer sur Delete dans la colonne Actions pour supprimer la dépendance correspondante.

Erreur de soumission : La sortie du nœud parent dont dépend le nœud actuel n'existe pas

Lorsque vous soumettez un nœud, le système affiche une erreur indiquant que la sortie du nœud parent dont dépend le nœud actuel n'existe pas. Pour connaître les causes possibles et les solutions, consultez la rubrique Résolution des problèmes liés à l'erreur indiquant que la sortie du nœud parent n'existe pas.

Invite de soumission : Les entrées et sorties ne correspondent pas à l'analyse de la lignée du code

Lorsque vous soumettez un nœud, le système affiche une invite indiquant que les entrées et sorties ne correspondent pas à l'analyse de la lignée du code. Pour connaître les causes possibles et les solutions, consultez la rubrique Résolution des problèmes de non-concordance entre les entrées/sorties et l'analyse de la lignée du code.

Pourquoi un nom de nœud parent analysé automatiquement indique-t-il que la sortie du nœud parent dépendant (table) n'existe pas ?

Lorsque vous soumettez un nœud dans Data Studio, une erreur apparaît en haut du panneau de configuration des dépendances de nœud : The dependent parent node output workshop_yanshi.tb_2 does not exist. You cannot submit this node. Submit the parent node first. Cette dépendance est générée automatiquement par le système à partir de l'instruction FROM tb_2 dans le code SQL.

Cette erreur ne signifie pas que la table n'existe pas. Elle signifie que le système ne trouve pas de nœud produisant les données de la table pour établir la dépendance de nœud.

Ce problème peut survenir pour les deux raisons suivantes :

  • Le nœud en amont n'a pas été soumis. Soumettez-le et réessayez.

  • Le nœud en amont a été soumis, mais son nom de sortie n'est pas workshop_yanshi.tb_2.

Remarque
  • Si tb_2 est une table produite par une tâche de synchronisation, ajoutez-la manuellement en tant que sortie du nœud au format projectname.tablename dans la section de sortie du nœud de tâche de synchronisation qui produit la table tb_2. Pour plus d'informations, consultez la rubrique Configuration des dépendances de planification.

  • Si tb_2 est une table qui n'est pas mise à jour quotidiennement par un nœud planifié, cliquez avec le bouton droit sur la table dans le code pour supprimer l'entrée, puis exécutez à nouveau l'analyse automatique.

Pour les tables qui ne sont pas mises à jour quotidiennement par des nœuds planifiés, consultez la rubrique Dans quels scénarios les dépendances de planification ne sont-elles pas prises en charge ?

Pourquoi certains nœuds ont-ils des noms et ID de nœuds en aval dans la section de sortie du nœud, tandis que d'autres sont vides et ne peuvent pas être modifiés manuellement ?

Les dépendances de nœuds sont établies par les nœuds en aval qui référencent les sorties des nœuds en amont. Si le nœud actuel n'a aucun nœud enfant en aval, cette section est vide. Une fois qu'un nœud enfant est configuré en aval de ce nœud, le contenu est automatiquement analysé et affiché.

Comment supprimer les dépendances inutiles ?

Cliquez avec le bouton droit sur la table dans le code et supprimez l'entrée, puis relancez l'analyse automatique pour exclure les nœuds de dépendance en amont inutiles.

Concept clé

Dans le système de planification DataWorks, les dépendances amont-aval entre les nœuds sont configurées pour garantir une production et une récupération efficaces des données. La nécessité de configurer une dépendance dépend de la forte corrélation des données. Pour plus d'informations, consultez la rubrique Configuration des dépendances de planification.

Concept clé

Un nom de sortie de nœud sert à établir des dépendances entre les nœuds. Par exemple, si le nom de sortie du nœud A est ABC et que le nœud B utilise ABC comme entrée, une relation amont-aval est établie entre le nœud A et le nœud B.

Un nœud peut-il avoir plusieurs noms de sortie ?

Oui. Une sortie de nœud sert d'identifiant au nœud actuel. Si un nœud en aval doit dépendre du nœud actuel, il peut référencer n'importe quel nom de sortie de ce nœud comme nom de sortie du nœud parent du nœud en aval pour établir une dépendance.

Si plusieurs nœuds écrivent des données dans la même table, l'analyse automatique signale une erreur indiquant que les noms de sortie des nœuds sont identiques. Les nœuds peuvent-ils avoir le même nom de sortie ?

Non. Les noms de sortie des nœuds, tout comme les nœuds et les tables, doivent être uniques au niveau du locataire. Cela garantit que l'analyse automatique peut localiser un nœud unique en fonction d'une sortie unique pour établir la dépendance de nœud. Si plusieurs nœuds produisent des données pour la même table dans votre scénario, déterminez sur quel nœud le nœud en aval doit dépendre lors de l'analyse automatique de cette table (le nœud qui écrit les données dans la table en dernier, garantissant ainsi une récupération correcte des données par le nœud en aval). Modifiez également les sorties des autres nœuds pour garantir leur unicité.

Si deux nœuds planifiés dans le même espace de travail insèrent des données dans la même table, l'analyse automatique entraîne l'erreur suivante pour l'un des nœuds : The output name of node ${nodename1} in workspace ${projectname} is the same as that of node ${nodename2} in workspace ${projectname}: ${node_outputname}. Multiple nodes cannot use the same output name.

Comment empêcher l'analyse des tables intermédiaires lors de l'utilisation de l'analyse automatique ?

Sélectionnez le nom de la table intermédiaire dans le code SQL, cliquez avec le bouton droit et sélectionnez Delete Input ou Delete Output, puis relancez l'analyse automatique des entrées et sorties.

Comment configurer le nœud parent pour le nœud le plus en amont d'un workflow ?

Si le nœud est le nœud de départ d'un workflow, ajoutez un nœud virtuel comme nœud de départ du workflow. Définissez l'amont du nœud virtuel sur le nœud racine de l'espace de travail. Pour plus d'informations sur l'utilisation des nœuds virtuels, consultez la rubrique Utilisation des nœuds virtuels.

Pourquoi le nœud A trouve-t-il un nom de sortie inexistant du nœud B lors de la recherche des noms de sortie des nœuds en amont ?

L'analyse des dépendances est basée sur les informations des nœuds déjà soumis et déployés. Si vous supprimez un nom de sortie du nœud B après sa soumission sans soumettre la modification au système de planification, le nom de sortie supprimé du nœud B peut toujours être trouvé lors de la recherche à partir du nœud A.

Pourquoi le système indique-t-il que le nœud actuel possède des nœuds enfants et ne peut pas être annulé du déploiement, même si aucune dépendance n'est affichée dans les paramètres de planification ?

Un nœud ne peut être annulé du déploiement que si aucun autre nœud n'en dépend, à la fois dans l'environnement de développement et dans l'environnement de production. Vérifiez-le en consultant le Operation Center of the development environment et le Operation Center of the production environment.

Pourquoi certaines lignes de dépendance sont-elles en pointillés dans le centre d'opérations ?

Les lignes en pointillés indiquent des dépendances inter-cycles. Pour plus d'informations sur les dépendances inter-cycles, consultez la rubrique Dépendances inter-cycles.

Concepts clés

  • Impact sur le nœud actuel : L'instance du cycle suivant du nœud en amont commence à s'exécuter uniquement après l'exécution réussie de l'instance du cycle précédent.

    Scénario : Supposons qu'une tâche horaire soit planifiée à partir de 00:00. L'instance de 01:00 doit attendre que l'instance de 00:00 s'exécute avec succès avant de pouvoir démarrer.

  • Impact sur les nœuds en aval : Supposons que le nœud en aval soit une tâche planifiée quotidiennement. Le nœud quotidien en aval passe d'une dépendance directe sur plusieurs instances horaires à une dépendance directe sur une instance horaire spécifique du nœud en amont. Étant donné que l'auto-dépendance est configurée pour les instances horaires, la tâche quotidienne en aval dépend effectivement de toutes les instances horaires en amont de manière indirecte.

Comment configurer les dépendances lorsqu'une tâche quotidienne dépend d'une tâche horaire dans différents scénarios ?

  • Scénario 1 : Une tâche quotidienne dépend de toutes les instances horaires de la tâche horaire du jour actuel.

    Lorsqu'une tâche quotidienne dépend directement d'une tâche horaire, elle dépend de toutes les instances de la tâche horaire du jour actuel.Daily task directly depends on hourly task

  • Scénario 2 : Une tâche quotidienne dépend d'une instance horaire spécifique du jour actuel.

    • Configuration de la tâche horaire : Configurez l'auto-dépendance pour la tâche horaire. Dans les paramètres de planification de la tâche horaire, sélectionnez le nœud actuel comme dépendance du cycle précédent.

    • Configuration de la tâche quotidienne : La tâche quotidienne dépend directement de la tâche horaire. Configurez la tâche horaire comme entrée (nœud en amont dépendant) de la tâche quotidienne.

    Setting self-dependency for an hourly scheduled task

  • Scénario 3 : Une tâche quotidienne dépend de toutes les instances horaires de la tâche horaire de la veille.

    • Configurez une dépendance inter-cycle pour la tâche quotidienne sur la tâche horaire. Dans les paramètres de planification de la tâche quotidienne, sélectionnez Previous-cycle Scheduling Dependency, choisissez Custom et saisissez l'ID du nœud de la tâche horaire.

    • Supprimez la dépendance du même cycle sur la tâche horaire des paramètres de planification de la tâche quotidienne. Dans la section des dépendances du même cycle (Parent Nodes), supprimez la dépendance du même cycle sur la tâche horaire.

Remarque

Si vous avez configuré une dépendance inter-cycle sur la tâche horaire pour la tâche quotidienne, vérifiez que la dépendance du même cycle a été supprimée. Sinon, la tâche quotidienne dépendra à la fois de toutes les instances horaires du jour actuel et de toutes les instances horaires de la veille.

Lorsqu'une tâche quotidienne dépend directement d'une tâche horaire, quand la tâche quotidienne s'exécute-t-elle ?

Fonctionnement : Lorsqu'une tâche quotidienne dépend directement d'une tâche horaire, la tâche quotidienne dépend de toutes les instances de la tâche horaire du jour actuel. La tâche quotidienne démarre uniquement après l'exécution réussie de la dernière instance horaire de la journée.

Scénario :

  • Supposons qu'une tâche horaire soit planifiée à partir de 00:00, s'exécutant une fois par heure. La tâche quotidienne doit attendre que les 24 instances horaires soient terminées avant de pouvoir démarrer.

  • Affichage des dépendances dans le centre d'opérations : Un clic droit sur la tâche quotidienne pour afficher les nœuds parents montre qu'elle dépend de toutes les instances de la tâche horaire du jour actuel, c'est-à-dire qu'elle dépend de 24 instances horaires. (ligne de dépendance : pleine)

Lorsqu'une tâche quotidienne dépend d'une tâche horaire, comment faire en sorte que la tâche quotidienne dépende d'une instance horaire spécifique plutôt que de toutes les instances horaires ?

Fonctionnement : Pour qu'une tâche quotidienne dépende d'une instance horaire spécifique du jour actuel, configurez l'auto-dépendance pour la tâche horaire et définissez l'heure planifiée de la tâche quotidienne pour qu'elle corresponde à l'instance horaire spécifique.

Scénario : Lorsque la tâche quotidienne doit dépendre de l'instance horaire planifiée à 12:00 du jour actuel

  • Configuration des dépendances :

    • Configuration de la tâche horaire en amont : Configurez l'auto-dépendance pour la tâche horaire. Dans Scheduling Settings, dans la section Time attribute, sélectionnez Previous-cycle Scheduling Dependency > Current Node.

    • Configuration de la tâche quotidienne en aval : Définissez l'heure planifiée de la tâche quotidienne à 12:00.

  • Affichage des dépendances dans le centre d'opérations :

    • Un clic droit sur l'instance quotidienne pour afficher les nœuds parents montre qu'elle dépend de l'instance horaire planifiée à 12:00 du jour actuel. (ligne de dépendance : pleine)

    • Un clic droit sur l'instance horaire pour afficher les nœuds parents montre que le nœud parent en amont est l'instance horaire précédente. L'instance de 12:00 dépend de l'instance de 11:00. (ligne de dépendance : en pointillés, car la tâche horaire est configurée avec une dépendance inter-cycle dont l'élément de dépendance est défini sur le nœud actuel)

Lorsqu'une tâche quotidienne dépend d'une tâche horaire, comment faire en sorte que la tâche quotidienne dépende de toutes les instances horaires de la veille plutôt que de celles du jour actuel ?

Fonctionnement : Pour qu'une tâche quotidienne dépende de toutes les instances horaires de la veille, configurez une dépendance inter-cycle sur la tâche horaire pour la tâche quotidienne.

Scénario : La tâche quotidienne doit dépendre de toutes les instances horaires de la veille.

  • Configuration des dépendances :

    • Configuration de la tâche quotidienne en aval : Configurez une dépendance inter-cycle sur la tâche horaire. Dans Scheduling Settings, dans la section Time attribute, sélectionnez Previous-cycle Scheduling Dependency > Hourly Task et saisissez l'ID du nœud.

    • Configuration de la tâche horaire en amont : Aucune configuration n'est requise.

  • Affichage des dépendances dans le centre d'opérations :

    Un clic droit sur l'instance quotidienne en aval pour afficher les nœuds parents montre qu'elle dépend de toutes les instances horaires de la tâche horaire de la veille. (ligne de dépendance : en pointillés, car la tâche quotidienne est configurée avec une dépendance inter-cycle sur la tâche horaire)

Quand dois-je configurer l'élément de dépendance du cycle précédent comme étant le nœud actuel ?

Scénario métier : Si le nœud actuel a besoin des données produites par le même nœud lors du cycle précédent, configurez l'auto-dépendance pour le nœud actuel. Cela signifie que l'instance du cycle suivant du nœud actuel commence à s'exécuter uniquement après la fin de l'instance du cycle précédent, empêchant ainsi la récupération des données pendant que l'instance du cycle précédent est encore en cours d'exécution (les données n'ont pas encore été produites).

  • Si le nœud actuel dépend des données produites par lui-même lors du cycle précédent et que vous devez confirmer l'heure à laquelle le cycle précédent a produit les données, accédez à Scheduling Settings > Time attribute de la tâche et configurez Previous-cycle Scheduling Dependency > Current Node.

  • Si une tâche horaire dépend d'une tâche quotidienne et que la tâche horaire en aval comporte plusieurs cycles dont les heures planifiées sont déjà passées lorsque la tâche quotidienne en amont termine son exécution, la tâche horaire peut exécuter plusieurs cycles simultanément. Dans ce cas, accédez à Scheduling Settings > Time attribute de la tâche et configurez Previous-cycle Scheduling Dependency > Current Node.

Comment configurer les dépendances lorsqu'un nœud en aval dépend de plusieurs tâches simultanément ?

Si un nœud en aval est configuré pour dépendre de plusieurs tâches, évaluez d'un point de vue métier si toutes les dépendances sont nécessaires. Si les données de la table présentent de fortes corrélations, nous vous recommandons de configurer tous les nœuds comme dépendances. Pour savoir s'il faut configurer des dépendances de nœud, consultez la rubrique Pourquoi dois-je configurer des dépendances de planification.

Par exemple, le nœud en aval C dépend à la fois de la tâche quotidienne B et de la tâche horaire A du jour actuel. La tâche horaire A produit la table A et la tâche quotidienne B produit la table B. Le nœud en aval C a besoin des données des tables A et B.

Supposons que le nœud en aval C interroge les données des tables A et B. Si vous configurez uniquement la tâche horaire A comme Parent Nodes sans configurer la tâche quotidienne B comme Parent Nodes, le nœud en aval C peut commencer à s'exécuter avant que la tâche quotidienne en amont B ne soit terminée. Cela provoque un échec lors de la récupération des données de la table de sortie B de la tâche quotidienne. Par conséquent, dans cet exemple, configurez à la fois la tâche quotidienne et la tâche horaire comme Parent Nodes du nœud en aval C.

Si le nœud en aval n'a pas de forte dépendance vis-à-vis de la table en amont, ce qui signifie que le nœud en aval peut récupérer les données de la table en amont à tout moment sans problème (même si le nœud en amont n'a pas produit les dernières données), vous n'avez pas besoin de configurer une dépendance de nœud.

Si la tâche en amont A est une tâche horaire et la tâche en aval B est une tâche quotidienne qui s'exécute une fois après la fin de toutes les instances de la tâche A, la tâche quotidienne s'exécutera-t-elle toujours si la tâche horaire s'exécute jusqu'au lendemain ? Les paramètres de planification sont-ils affectés ?

La tâche quotidienne B dépend directement de toutes les instances de la tâche horaire A du jour actuel. La tâche quotidienne B agrège les données de la tâche horaire pour le jour actuel. Si la tâche horaire termine sa dernière instance après minuit (le lendemain), la tâche quotidienne en aval s'exécute toujours. Seul le temps d'exécution diffère ; le remplacement des paramètres de planification n'est pas affecté.

Le nœud A s'exécute toutes les heures à l'heure pile chaque jour et le nœud B s'exécute une fois par jour. Comment faire en sorte que le nœud B démarre après la première exécution réussie du nœud A chaque jour ?

Lors de la configuration du nœud A, sélectionnez Previous-cycle Scheduling Dependency et choisissez Current Node . Définissez l'heure planifiée du nœud B à 00:00. Dans les instances planifiées automatiquement quotidiennes, l'instance du nœud B dépend uniquement de l'instance du nœud A générée à 00:00, qui est la première instance du nœud A.

Il existe trois tâches A, B et C. Comment exécuter A->B->C toutes les heures (B démarre après la fin de A, et C démarre après la fin de B) ?

  1. Configuration des dépendances : Définissez la relation de dépendance de sorte que la sortie de A serve d'entrée à B, et que la sortie de B serve d'entrée à C.

  2. Configuration de la fréquence de planification : Étant donné que la planification est configurée au niveau du nœud, les trois nœuds A, B et C doivent avoir leur planification définie sur horaire.

Comment configurer les dépendances inter-workflows et inter-projets au sein de la même région ?

Fonctionnement : La sortie d'un nœud en amont sert d'entrée à un nœud en aval pour former une dépendance de nœud. Ajoutez la sortie du nœud dont vous souhaitez dépendre (inter-projet ou inter-workflow) à la section d'entrée du nœud qui nécessite la dépendance.

Une tâche configurée avec une nouvelle tentative en cas d'échec ne s'est pas réexécutée après l'échec et a signalé l'erreur : Task Run Timed Out, Killed by System!!

  • Message d'erreur :

    Lorsque Scheduling Settings > Time attribute > Rerun de la tâche cible est défini sur Allow Regardless of Running Status ou Allow upon Failure Only, la tâche ne se réexécute pas après l'échec et génère l'erreur Task Run Timed Out, Killed by System!.

  • Cause possible :

    Les Scheduling Settings > Time attribute de cette tâche ont le paramètre Timeout configuré. Lorsque la durée de la tâche dépasse le délai d'expiration, la tâche est automatiquement arrêtée. Les tâches qui échouent en raison d'un délai d'expiration ne déclenchent pas le mécanisme de nouvelle tentative.

  • Solution :

    Lorsqu'une tâche échoue en raison d'un délai d'expiration, le mécanisme de nouvelle tentative en cas d'échec ne prend pas effet. Redémarrez manuellement la tâche.