Les paramètres de planification constituent le mécanisme central de DataWorks pour la gestion dynamique des tâches et des configurations. Ils vous permettent d'utiliser des espaces réservés aux variables dans votre code et d'injecter des valeurs dynamiques lors de la planification. Cette approche résout les difficultés liées à la maintenance des dates codées en dur dans les tâches périodiques et dissocie la configuration du code grâce à une hiérarchie de paramètres à quatre niveaux : espace de travail, workflow, contexte de nœud et local au nœud. Cette séparation améliore considérablement la flexibilité, la réutilisabilité et l'adaptabilité des tâches dans différents environnements.
Cet article se concentre sur les sources d'affectation et la syntaxe des expressions pour les paramètres de planification. Avant de lire cet article, assurez-vous de maîtriser les méthodes de configuration de base décrites dans Configurer et utiliser les paramètres de planification.
Sources des paramètres de planification
Outre l'utilisation de paramètres définis localement sur un nœud, vous pouvez également exploiter les paramètres de contexte, de workflow et d'espace de travail. Ces sources sont présentées ci-dessous par ordre de portée, de la plus restreinte à la plus large.
-
Définition locale au nœud (nœud actuel)
Les paramètres définis dans la zone Scheduling Parameters de la section Scheduling Configuration s'appliquent uniquement au nœud actuel. Ils prennent en charge un ensemble riche d'expressions de paramètres, comme détaillé ci-dessous.
-
Paramètres de contexte (transmis entre les nœuds)
Utilisez les paramètres de contexte pour recevoir les valeurs de sortie des nœuds en amont. Cette méthode permet non seulement de transmettre des valeurs, mais aussi d'établir une dépendance entre les nœuds. Privilégiez cette approche lorsque la valeur d'un paramètre doit être déterminée dynamiquement par le résultat d'une tâche en amont. Vous pouvez ajouter rapidement un paramètre de contexte en cliquant sur l'icône

dans la zone d'affectation des paramètres. Pour plus d'informations, consultez la rubrique Configurer et utiliser les paramètres de contexte de nœud . -
Paramètres de workflow (partagés au sein d'un workflow)
Les paramètres définis au niveau du workflow sont accessibles à tous les nœuds de ce workflow. Vous pouvez y faire référence directement en utilisant le format ${workflow.Parameter name}. Les règles d'expression des paramètres décrites dans cet article s'appliquent également aux paramètres de workflow.
-
Paramètres d'espace de travail (partagés au sein d'un espace de travail)
Les paramètres d'espace de travail sont des paramètres globaux définis au niveau de l'espace de travail, ce qui les rend disponibles pour tous les nœuds de cet espace. Leur utilisation la plus courante consiste à différencier les configurations entre les environnements de développement et de production. Par exemple, vous pouvez définir un paramètre nommé
db_nameavec la valeurdb_devdans l'environnement de développement etdb_proddans l'environnement de production. Lors de la définition de la valeur d'un paramètre de planification, vous pouvez sélectionner directement Workspace Parameters . Pour plus de détails, consultez la rubrique Utiliser les paramètres d'espace de travail .
Expressions de paramètres
Les paramètres de planification définissent la logique d'affectation en spécifiant un nom de paramètre et une valeur de paramètre. La valeur du paramètre accepte plusieurs formes, notamment les paramètres de temps, les paramètres système intégrés et les constantes. Une fois les paramètres définis, vous pouvez y faire référence dans votre code en utilisant le format ${nom du paramètre}.
Paramètres de temps personnalisés : tels que ${...} et $[...], qui vous permettent de transformer des valeurs en fonction de deux références temporelles (date métier et heure planifiée). Pour plus de détails, consultez la section Paramètres de temps.
Paramètres système intégrés : tels que $bizdate, $bizmonth et $jobid, qui permettent de récupérer la date métier, le mois métier, l'ID de workflow, etc. Ils ne se limitent pas aux valeurs temporelles. Pour plus de détails, consultez la rubrique Paramètres de planification intégrés.
Constantes : telles que '
123','abc', etc.
Parmi celles-ci, les paramètres de temps constituent le cas d'utilisation principal des paramètres de planification. Ils servent à remplacer dynamiquement diverses chaînes de caractères temporelles lors de l'exécution des tâches.
Paramètres temporels
Concept clé : référence temporelle
Tous les paramètres temporels dynamiques dans DataWorks reposent sur les deux références temporelles fondamentales suivantes.
|
Concept |
Définition |
Valeur du paramètre |
Format personnalisé |
Précision temporelle |
|
Date métier |
Désigne généralement la veille de la date d'exécution planifiée d'une tâche. Dans les scénarios de calcul par lots T+1, elle correspond à la date de génération des données métier. Par exemple, si vous exécutez aujourd'hui une tâche pour calculer le chiffre d'affaires de la veille, cette dernière — date à laquelle les transactions ont eu lieu — constitue la date métier. |
|
|
Année, mois, jour |
|
Heure planifiée |
Correspond à l'heure configurée dans la section Scheduling Settings d'un nœud via l'expression cron. Lors de l'exécution de la tâche, cette valeur est remplacée par le jour où l'instance de tâche est programmée pour s'exécuter. La précision atteint la seconde et reste indépendante de l'heure d'exécution réelle. Cette heure représente le moment prévu pour l'exécution de la tâche, qui peut ne pas coïncider exactement avec l'heure de démarrage effective. Plusieurs facteurs influencent l'heure de démarrage réelle. |
|
|
Année, mois, jour, heure, minute, seconde |
En résumé :
Date métier ≈ hier (date des données) =
$bizdate=${yyyymmdd}Heure planifiée ≈ aujourd'hui (moment d'exécution de la tâche) =
$cyctime=$[yyyymmddhh24miss]
Une tâche T+1 typique fonctionne ainsi : aux premières heures d'aujourd'hui (heure planifiée), une tâche se déclenche pour traiter les données d'hier (date métier).
Si la valeur par défaut renvoyée par le paramètre temporel de base ne répond pas à vos besoins, personnalisez les paramètres temporels à l'aide de ${...} et $[...]. Les paramètres temporels personnalisés dérivent de la transformation des deux références temporelles de base. Les méthodes suivantes sont prises en charge :
Lors de l'attribution de valeurs aux paramètres de planification à l'aide d'expressions personnalisées, distinguez bien les deux formats de crochets : {...} et [...]. Ces formats utilisent des références temporelles différentes et renvoient des valeurs totalement distinctes. Toute confusion entre eux risque de provoquer des erreurs sur les données de production.
Paramètres temporels personnalisés
DataWorks permet d'utiliser ${...} et $[...] pour récupérer respectivement la date métier et l'heure planifiée. Les types de transformation suivants vous offrent la flexibilité nécessaire pour ajuster les valeurs temporelles selon vos exigences métier. Les exemples ci-dessous supposent une planification quotidienne avec une heure planifiée de 02:30:45 et une date métier de 20251031. Les références temporelles de base sont :
Date métier : ${yyyymmdd}, par exemple 20251031.
-
Heure planifiée : $[yyyymmddhh24miss], par exemple 20251101023045.
ImportantL'heure planifiée correspond à l'heure de programmation prédéfinie, fixée lors de la génération de l'instance de tâche. Si une instance de tâche subit un retard en raison de contraintes de ressources ou de l'état des nœuds en amont, l'heure planifiée ne change pas avec l'heure d'exécution réelle de l'instance.
Différences clés entre ${...} et $[...]
Commencez par comprendre les différences fondamentales entre ces deux syntaxes. ${...} et $[...] diffèrent essentiellement par leurs références temporelles et leurs capacités de calcul. Mélanger ces deux formats peut entraîner des erreurs de données.
|
Dimension |
${...} (basé sur la date métier) |
$[...] (basé sur l'heure planifiée) |
|
Référence temporelle |
Date métier (T-1) |
Heure planifiée (T) |
|
Précision temporelle |
Jour (année, mois, jour) |
Seconde (année, mois, jour, heure, minute, seconde) |
|
Capacité de calcul de décalage |
Prend en charge les calculs de décalage pour l'année, le mois, la semaine et le jour. |
Prend en charge les calculs de décalage pour le jour, l'heure et la minute. |
|
Limitation principale |
Ne prend pas en charge la mise en forme ni les calculs de décalage pour les unités de temps inférieures telles que l'heure, la minute et la seconde. |
Ne prend pas en charge l'utilisation de la syntaxe |
|
Équivalent par défaut |
|
|
Mise en forme de l'heure
Utilisez les accolades ${...} ou les crochets $[...], combinés à yyyy, yy, mm et dd dans des combinaisons personnalisées afin de générer des paramètres temporels récupérant des dates situées un certain nombre d'années, de mois ou de jours avant ou après la date métier.
|
Code |
Description |
|
|
||
|
Affectation |
Résultat |
Affectation |
Résultat |
||
|
|
Année à 4 chiffres |
|
|
|
|
|
|
Mois à 2 chiffres |
|
|
|
|
|
|
Jour à 2 chiffres |
|
|
|
|
|
|
Heure au format 24 heures |
Non pris en charge (précision au jour près) |
- |
|
|
|
|
Heure au format 12 heures |
- |
|
|
|
|
|
Minute |
- |
|
|
|
|
|
Seconde |
- |
|
|
|
|
|
Année et mois |
|
|
|
|
|
|
Formaté avec un trait de soulignement comme séparateur |
|
|
|
|
|
|
Formaté avec des traits d'union comme séparateurs |
|
|
|
|
|
|
Formaté avec des traits d'union, incluant les heures, minutes et secondes |
Non pris en charge (précision au jour près) |
- |
Pour la méthode prise en charge, consultez Concaténation de chaînes : Méthode 2. |
|
Calcul du décalage
Le calcul du décalage constitue le cœur des paramètres dynamiques. Vous pouvez ajouter ou soustraire des valeurs à la date métier ou à l'heure planifiée afin d'obtenir des dates et heures situées N années, mois, jours, heures ou minutes avant ou après l'heure de référence (les heures et les minutes sont prises en charge uniquement pour l'heure planifiée). Les expressions ${...} et $[...] prennent en charge des plages différentes en raison de la précision distincte de leurs références temporelles de base.
-
Calcul du décalage ${...}
-
Fonctionnalité principale : prend en charge le décalage entier pour l'année, le mois, la semaine et le jour.
ImportantNe prend pas en charge les calculs de décalage en heures ou en minutes. Les expressions telles que ${yyyy-mm-dd-1/24} ne sont pas prises en charge.
-
Syntaxe :
${<format heure><±N>}, où N correspond à la plus petite unité du format horaire. Par exemple, si le format est yyyymm, N est exprimé en mois. Si le format est yyyymmdd, N est exprimé en jours.Période de décalage de date
Unité de décalage
Syntaxe
Exemple
N années avant/après
Année
${yyyy±N}ou${yy±N}Obtenir l'année précédente :
${yyyy-1}N mois avant/après
Mois
${yyyymm±N}
Obtenir le mois précédent :
${yyyymm-1}N semaines avant/après
Semaine
${yyyymmdd±7*N}
Obtenir la semaine précédente :
${yyyymmdd-7*1}N jours avant/après
Jour
${yyyymmdd±N}
Obtenir l'avant-veille :
${yyyymmdd-1}
-
-
Calcul du décalage $[...]
-
Fonctionnalité principale : prend en charge le décalage fractionnaire pour le jour, l'heure et la minute.
Important$[...] ne peut pas utiliser le format horaire
$[yyyy-N]ou$[mm-N]pour récupérer des dates situées N années ou N mois auparavant. Pour effectuer des calculs de décalage en années ou en mois, utilisez la fonctionadd_months. -
Syntaxe :
$[<format heure><±N>], où N/24 est utilisé pour les décalages horaires et N/24/60 pour les décalages en minutes. N représente le nombre d'heures ou de minutes de décalage.Besoin
Unité de décalage
Syntaxe
Exemple
N années avant/après
Année
$[add_months(yyyymmdd,12N)](N années après)$[add_months(yyyymmdd,-12N)](N années avant)Obtenir l'année précédente :
$[add_months(yyyymmdd,-12)]N mois avant/après
Mois
$[add_months(yyyymmdd,N)](N mois après)$[add_months(yyyymmdd,-N)](N mois avant)Obtenir le mois précédent :
$[add_months(yyyymmdd,-1)]
Obtenir le mois suivant :$[add_months(yyyy_mm,1)]N semaines avant/après
Semaine
$[yyyymmdd±7*N]Obtenir la semaine précédente :
$[yyyymmdd±7*1]N jours avant/après
Jour
$[yyyymmdd±N]Obtenir la veille :
$[yyyymmdd-1]N heures avant/après
Heure
Vous pouvez récupérer ces données temporelles à l'aide des méthodes suivantes :
-
$[hh24miss±N/24],$[hh24±N/24] -
$[format horaire personnalisé±N/24]
Obtenir l'heure précédente à l'aide de différents formats horaires :
-
Obtenir le mois :
$[mm-1/24]. -
Obtenir l'année :
$[yyyy-1/24]. -
Obtenir l'année et le mois :
$[yyyymm-1/24]. -
Obtenir l'année, le mois et le jour :
$[yyyymmdd-1/24]. -
Obtenir la veille et l'heure précédente :
$[yyyymmdd-1-1/24]
N minutes avant/après
Minute
Vous pouvez récupérer ces données temporelles à l'aide des méthodes suivantes :
-
$[hh24miss±N/24/60] -
$[yyyymmddhh24miss±N/24/60] -
$[mi±N/24/60] -
$[format horaire personnalisé±N/24/60]
Obtenir 15 minutes avant l'heure planifiée à l'aide de différents formats horaires :
-
$[yyyy-15/24/60] -
$[yyyymm-15/24/60] -
$[yyyymmdd-15/24/60] -
$[hh24-15/24/60] -
$[mi-15/24/60]
Décalage combiné complexe
Jour + Heure
$[yyyymmdd±N±M/24], où N représente le décalage en jours et M le décalage en heures.Exemple : obtenir la veille et l'heure précédente →
$[yyyymmdd-1-1/24]RemarqueLors de l'exécution de calculs de décalage en heures ou en minutes, un franchissement de limite journalière peut se produire. Pour savoir comment les paramètres gèrent ce franchissement, consultez Gérer le franchissement de limite journalière dans les paramètres temporels.
Lors d'un calcul de décalage mensuel sur une date de fin de mois, si le mois cible ne comporte pas le jour correspondant, le résultat est automatiquement ajusté au dernier jour de ce mois. Par exemple, si la date actuelle est le 31/03/2025 et qu'un décalage rétroactif d'un mois est appliqué, le résultat sera le 28/02/2025, car février ne compte pas 31 jours.
-
-
Transformation secondaire à l'aide de fonctions du moteur
Lorsque le formatage intégré et le décalage des paramètres de planification ne permettent pas d'obtenir directement la valeur souhaitée (comme le dernier jour du mois précédent), vous pouvez utiliser les fonctions intégrées au moteur de calcul du nœud cible ou recourir à un nœud d'assignation pour effectuer des transformations secondaires sur les paramètres temporels lors de leur appel.
Pour plus d'informations, consultez Effectuer une transformation secondaire à l'aide de fonctions du moteur .
Concaténation de chaînes
Utilisez cette méthode pour construire des chaînes de date avec des modèles non pris en charge par la syntaxe intégrée. Elle combine la partie date générée par les paramètres de planification avec des chaînes constantes fixes.
Exemple 1 : Obtenir dynamiquement le premier jour de chaque mois.
Scénario : quel que soit le jour d'exécution de la tâche, vous avez besoin d'une chaîne représentant le premier jour du mois en cours au format
yyyymm01.-
Implémentation :
Extraire l'année et le mois : utilisez
${yyyymm}pour obtenir l'année et le mois de la date métier actuelle (par exemple, si la date métier est20231027, le résultat est202310).Concaténer la constante : concaténez l'année et le mois extraits avec la chaîne
'01'.Appel du paramètre :
first_day_of_month=${yyyymm}01
Résultat : lors de l'exécution de la tâche,
${first_day_of_month}est remplacé par20231001.
Exemple 2 : Obtenir l'heure au format yyyy-mm-dd hh24:mi:ss.
Scénario : obtenir une chaîne temporelle au format yyyy-mm-dd hh24:mi:ss, telle que
2023-11-01 02:30:45.-
Implémentation :
Définissez deux paramètres :
datetime1etdatetime2, et assignez-leur respectivement les valeursdatetime1=$[yyyy-mm-dd]etdatetime2=$[hh24:mi:ss-1/24/60].Concaténez les paramètres : concaténez
datetime1etdatetime2avec un espace.Appel du paramètre : pt=
${datetime1}${datetime2}.
Résultat : lors de l'exécution de la tâche,
${datetime1}${datetime2}est remplacé par2023-11-01 02:30:45.
Paramètres de planification intégrés
DataWorks prend en charge les paramètres système intégrés suivants, que vous pouvez utiliser comme valeurs de paramètres de planification. Cette approche est toutefois moins flexible, car le format d'heure est fixe. Nous vous recommandons d'utiliser des paramètres d'heure personnalisés, qui permettent des transformations plus souples.
|
Paramètre intégré |
Définition |
|
$bizdate |
La date métier, au format Ce paramètre est largement utilisé. Lors de la planification quotidienne, la date métier correspond par défaut à la veille de la date d'exécution prévue de la tâche. |
|
$cyctime |
L'heure planifiée de la tâche, au format |
|
$gmtdate |
La date actuelle, au format Ce paramètre correspond par défaut à la date actuelle. Lors du remplissage des données historiques, la date saisie est égale à |
|
$bizmonth |
Le mois métier, au format
|
|
$jobid |
L'ID du workflow auquel appartient la tâche. |
|
$nodeid |
L'ID du nœud. |
|
$taskid |
L'ID d'instance généré par le nœud. |
Annexe
Remplacement des paramètres lors du remplissage des données
Une fois une tâche soumise à Operation Center, vous pouvez remplir les données pour générer et exécuter par lot des instances de tâches historiques sur une plage de dates spécifiée, afin de réparer des données, effectuer un remplissage ou réaliser une analyse rétrospective.
Date métier ($bizdate) : Lors du remplissage des données, la date métier que vous sélectionnez correspond au résultat de remplacement de $bizdate. Si le paramètre de planification utilise le format personnalisé
${...}, l'heure de base est la date sélectionnée, qui est ensuite transformée selon l'expression temporelle spécifiée.-
Heure planifiée ($cyctime) : Lors du remplissage des données, le résultat de remplacement de $cyctime est
la date métier sélectionnée + 1jour.Par exemple, si la date métier sélectionnée pour le remplissage des données est
20250315, alors lors du remplissage, le résultat de remplacement du paramètre$cyctimeest20250316000000. Si le paramètre de planification utilise le format$[...], l'heure de base est la date métier sélectionnée + 1, qui est ensuite transformée selon l'expression temporelle spécifiée.
Relation entre les paramètres de planification, la date métier, l'heure planifiée et l'heure d'exécution réelle
|
Type de relation |
Description et exemple |
|
Relation entre les paramètres de planification et l'heure d'exécution réelle. |
Les valeurs de remplacement des paramètres de planification sont déterminées lors de la génération des instances. Par conséquent, les valeurs de remplacement ne changent pas avec l'heure d'exécution réelle de l'instance. |
|
Relation entre les paramètres de planification et l'heure planifiée. |
Lorsqu'un paramètre de planification est défini sur Par exemple, si le nœud actuel est un nœud planifié toutes les heures avec une plage d'heures planifiées de
|
|
Relation entre les paramètres de planification, la date métier et l'heure planifiée. |
|
Notes sur l'heure d'été
DataWorks garantit que les tâches s'exécutent correctement les jours où l'heure d'été (DST) commence et se termine. Pour plus de détails sur la manière dont le produit gère les transitions vers l'heure d'été, consultez Heure d'été. Afin d'éviter toute complexité supplémentaire liée aux transitions vers l'heure d'été lors de l'exécution de vos tâches, nous vous recommandons de consulter ce document si votre région observe l'heure d'été.
Comparaison des valeurs des paramètres personnalisés
Cette section utilise un nœud ODPS SQL comme exemple. En supposant que l'heure planifiée de la tâche est 20 juillet 2025 10:30:00, le tableau suivant présente les configurations des valeurs temporelles pour les paramètres ${…} et $[…].
|
Valeur temporelle |
Paramètre ${…} |
Paramètre $[…] |
|
Obtenir l'année : 2025 |
|
|
|
Obtenir l'année : 25 |
|
|
|
Obtenir l'année : 2024 |
|
|
|
Obtenir le mois : 07 |
|
|
|
Obtenir le jour : 20 |
|
|
|
Obtenir la date : 20 juin 2025 |
Important
Cette approche nécessite de prendre en compte le nombre de jours dans chaque mois et n'est pas recommandée. Nous vous conseillons d'utiliser le format |
|
|
Obtenir la date : 19 juillet 2025 |
|
|
|
Obtenir la date : 20 juillet 2024 |
Important
Cette approche nécessite de prendre en compte les années bissextiles et n'est pas recommandée. Nous vous conseillons d'utiliser le format |
|
|
Obtenir l'heure : 10:30:00 |
Non pris en charge |
|
|
Obtenir l'heure : 2025-07-20 10:30:00 |
Non pris en charge |
|
|
Obtenir l'heure : 2025-07-20 10:29:00 |
Non pris en charge |
|
|
Obtenir l'heure : 2025-07-20 09:30:00 |
Non pris en charge |
|
|
Obtenir l'heure de la veille, précise à la seconde, sans espace entre la date et l'heure : 2025071910:30:00 |
Non pris en charge |
|
|
Obtenir l'heure de la veille, précise à la seconde, avec un espace entre la date et l'heure : 20250719 10:30:00 |
Non pris en charge |
|