Cette rubrique répond aux questions fréquemment posées sur les paramètres de planification.
-
Cas d'utilisation courants
-
Tests et dépannage
-
Différences dans la logique d'attribution des valeurs selon les modes d'exécution
-
Opérations et surveillance
Comment gérer la substitution des paramètres qui chevauchent deux jours lors de la récupération des données de l'heure précédente ?
-
Description du problème
Le format de partition de la table est day=yyyymmdd,hour=hh24. Lors de l'exécution, l'heure permet de récupérer les données de l'heure précédente. Les paramètres $[yyyymmdd] $[hh24-1/24] peuvent répondre à cette exigence, mais à minuit (00 h 00), l'heure devient 23 h 00 du jour actuel. Comment gérer ce cas ?
-
Solution
Modifiez la formule de calcul du paramètre en définissant datetime sur $[yyyymmdd-1/24]. La formule de calcul pour hour reste $[hh24-1/24].
Description de la configuration
Dans le code, définissez
day=datetime, hour={hour},Attribuez les paramètres de planification pour le nœud :
datetime=[yyyymmdd-1/24],hour=[hh24-1/24]
Exemple
Si l'heure planifiée d'une instance est 2021-7-21 00:00:00, la soustraction d'une heure renvoie au jour précédent. Dans ce cas, $[yyyymmdd-1/24] est évalué à 20210720, et $[hh24-1/24] est évalué à 23.
Si l'heure planifiée d'une instance est 2021-7-21 01:00:00, la soustraction d'une heure reste dans le jour actuel. Dans ce cas, $[yyyymmdd-1/24] est évalué à 20210721, et $[hh24-1/24] est évalué à 00.
Comment gérer un format de partition de table contenant un espace, tel que pt=yyyy-mm-dd hh24:mi:ss ?
L'attribution des paramètres de planification ne prend pas en charge les espaces.
Utilisez deux variables personnalisées pour l'attribution comme suit :
Date : paramètre datetime=$[yyyy-mm-dd]
Heure : paramètre hour=$[hh24:mi:ss]
Après avoir obtenu séparément la date et l'heure, concaténez-les avec un espace dans le code sous la forme pt=${datetime} ${hour}. Par exemple, utilisez select * from xc_demo_partition where dt='${key1} ${key2}'; dans le code SQL, et configurez key1=$[yyyymmdd] key2=$[hh24miss] dans Schedule Settings > Parameters sur le côté droit.
Un nœud est planifié pour s'exécuter à 20 h 00 et ses paramètres font référence à l'heure planifiée ($cyctime ou $[yyyymmddhh24miss]). Si une défaillance en amont entraîne une exécution réelle du nœud à 00 h 00 le lendemain, quelle heure est utilisée pour ses paramètres de planification ?
L'heure planifiée d'une instance correspond à l'heure d'exécution prévue. L'heure planifiée peut différer de l'heure d'exécution réelle car la tâche peut être retardée, par exemple en attendant des ressources. L'heure planifiée d'une instance est absolue et ne change pas avec l'heure d'exécution réelle.
Les paramètres de planification utilisent l'heure planifiée de l'instance. Les valeurs de substitution des paramètres de planification sont déterminées lors de la génération de l'instance et ne changent pas avec l'heure d'exécution réelle. Vous n'avez donc pas à vous inquiéter d'un changement des valeurs des paramètres de planification. Dans la page Operation Center > Scheduled Instances, le champ Scheduled Time du panneau Properties affiche l'heure d'exécution prévue de l'instance (par exemple 2021-07-13 00:00:00), que vous pouvez comparer à l'Start Time (par exemple 00:00:27) pour vérification. Sur la page Data Studio, configurez var1=$bizdate var2=$cyctime var3=$[yyyymmdd] var4=$[yyyymmddhh24miss] dans Schedule Settings > Parameters. Définissez Schedule sur Day et Scheduled Time sur 00:00. Utilisez select '${var1}' '${var2}'; dans le code pour vérifier respectivement les valeurs de la date métier et de l'heure planifiée.
Comment configurer les paramètres temporels pour un nœud ODPS Spark ?
Lorsque vous créez un nœud ODPS Spark, vous devez configurer les paramètres sur la page d'édition. Le système exécute les paramètres dans l'ordre configuré.
Après avoir configuré les variables dans le code, cliquez sur Schedule Settings sur le côté droit de la page d'édition et attribuez des valeurs aux variables dans le panneau des paramètres. Pour plus d'informations sur les paramètres de planification, consultez Configurer les paramètres de planification. Par exemple, saisissez $(var) dans le champ Parameters du nœud ODPS Spark, ajoutez une ligne dans le tableau des paramètres avec le nom du paramètre var et la valeur du paramètre $bizdate, puis cliquez sur Preview Parameters pour vérifier le résultat de la substitution.
Comment utiliser un paramètre de planification avec un nœud qui ne peut pas le traiter directement ?
Certains nœuds, tels que les nœuds de synchronisation par lots, ne peuvent pas utiliser directement les valeurs de retour des paramètres de planification après leur configuration. Pour ces nœuds, configurez un nœud d'attribution comme nœud en amont du nœud cible. Le nœud d'attribution référence les paramètres de planification, traite et transforme les valeurs de retour, puis transmet les valeurs finales des paramètres au nœud cible en aval via la fonctionnalité de contexte de nœud.
Pour plus d'informations sur la configuration des nœuds d'attribution, consultez Créer un nœud d'attribution.
Pour plus d'informations sur la configuration du contexte de nœud, consultez Configurer le contexte de nœud.
Concepts clés
Lorsque vous utilisez directement une fonction de date MaxCompute pour obtenir une valeur temporelle, la valeur de retour correspond à l'heure affichée sur la machine qui exécute la tâche de calcul. Lorsque la même instance est exécutée à différents moments, l'heure renvoyée change.
Lorsque vous utilisez un paramètre de planification pour obtenir une valeur temporelle, la valeur de retour est calculée en fonction de l'heure planifiée. Quelle que soit l'heure d'exécution de la même instance, l'heure renvoyée ne change pas.
Comment tester les paramètres de planification dans Data Studio ?
Étant donné que le système de planification substitue automatiquement les paramètres de planification, utilisez Perform Smoke Testing in Development Environment pour tester la substitution des paramètres de planification dans Data Studio.
Étant donné que les tâches Data Integration ne prennent pas en charge les tests dans l'environnement de développement, si vous souhaitez tester la substitution des paramètres de planification pour ce type de tâches, nous vous recommandons de créer un nœud SQL, d'utiliser les tests de fumée dans l'environnement de développement pour tester les paramètres de planification séparément, puis d'utiliser les paramètres dans le nœud Data Integration après avoir confirmé que les résultats correspondent aux attentes.
Erreur FAILED: ODPS-0130161:[1,84] Parse exception - invalid token '$'
Cause : le paramètre de planification n'a pas reçu de valeur, ou l'attribution est invalide.
Solution :
Vérifiez si une valeur a été attribuée au paramètre de planification.
Vérifiez si le paramètre de planification configuré répond aux exigences. Pour plus d'informations, consultez Configurer les paramètres de planification.
Après avoir modifié la configuration des paramètres, soumettez et déployez les modifications. Après le déploiement, vérifiez le panneau des propriétés de la tâche planifiée dans Operation Center de production pour vous assurer que les paramètres reflètent la dernière configuration.
params format error,please check your params(key=values)
Solution :
Vérifiez si des valeurs ont été attribuées aux variables.
Vérifiez la présence d'espaces superflus dans les paramètres de planification.
Dans le nom du nœud, un point (.) et des caractères chinois ne peuvent pas être utilisés ensemble.
Exemple : time①=②$[yyyymmdd③hh24:mi:ss]time1=$[yyyymmdd]④time2=$[hh24:mi:ss] (①②③④ indiquent les positions des espaces).
Aucun espace n'est autorisé de part et d'autre du signe égal (=) dans un paramètre de planification. Cela s'applique aux positions ① et ② de l'exemple.
Les espaces ne sont pas pris en charge dans les valeurs des paramètres de planification. Cela s'applique à la position ③ de l'exemple.
Deux paramètres de planification doivent être séparés par un seul espace. Cela s'applique à la position ④ de l'exemple.
Concept clé
|
Opération |
Description |
|
Run |
Après la première exécution, vous devez attribuer manuellement une valeur constante à la variable. La première attribution est enregistrée. Si vous modifiez le code, la variable utilise toujours la valeur attribuée lors de la première exécution. |
|
Run with Parameters |
Lorsque vous utilisez Run with Parameters, vous devez attribuer manuellement des valeurs constantes aux variables dans le code actuel. Si vous modifiez les variables dans le code, utilisez Run with Parameters pour réattribuer des valeurs constantes. Remarque
Si vous souhaitez modifier le groupe de ressources pour l'exécution de la tâche, utilisez Run with Parameters. |
|
Perform Smoke Testing in Development Environment |
Ce mode simule le scénario de planification automatique en sélectionnant manuellement une date métier pour obtenir les valeurs de substitution des paramètres de planification pour la date métier spécifiée. |
Dans l'éditeur de code de la page Data Studio, vous pouvez utiliser des variables système intégrées (telles que ${bdp.system.cyctime}) ou des variables personnalisées (telles que ${var1}). Attribuez des valeurs aux variables dans le panneau Schedule Settings > Parameters sur le côté droit (telles que var1=$bizdate). Le système substitue automatiquement les valeurs lorsque vous exécutez ou utilisez Run with Parameters. Lorsque vous utilisez Perform Smoke Testing in Development Environment, sélectionnez une date métier dans la barre d'outils supérieure pour simuler le scénario de planification.
Comment vérifier la substitution des paramètres dans l'environnement de production ?
Si vous avez modifié les paramètres de planification dans Data Studio et soumis et déployé les modifications, vérifiez le panneau des propriétés de la tâche planifiée dans Operation Center de production pour vous assurer que les paramètres de planification correspondent aux attentes. Si ce n'est pas le cas, vérifiez la page de déploiement de la tâche et le package de déploiement pour confirmer le succès du déploiement. Consultez le panneau des propriétés de l'instance planifiée pour afficher la substitution des paramètres de planification pour une instance spécifique.
Qu'une instance individuelle ait été exécutée ou non, les paramètres d'exécution de l'instance sont mis à jour en temps réel pour refléter la dernière configuration des paramètres de la tâche planifiée de production.
Exemple :
Le paramètre de planification time1 de l'instance planifiée A1 du jour actuel pour le nœud A est défini sur $bizdate. L'instance a été exécutée avec succès et la valeur du paramètre dans le code est la date métier bizdate (valeur spécifique).
À un moment donné de la journée, le paramètre de planification time1 est modifié de $bizdate à $cyctime. Le paramètre d'exécution de l'instance du jour actuel affiche alors l'heure planifiée cyctime (valeur spécifique).
Si vous réexécutez l'instance actuelle, la dernière configuration des paramètres est utilisée : time1=$cyctime.
Pour afficher la substitution des paramètres de planification utilisée par une instance avant la modification du paramètre de planification, consultez les journaux. Pour plus d'informations, voir la FAQ : Comment vérifier la substitution des paramètres pour une instance en cours d'exécution à l'aide des journaux ?
Sur la page Operation Center > Scheduled Instances, sélectionnez une instance et affichez les valeurs de substitution réelles des paramètres de planification dans le champ Execution Parameters du panneau Properties en bas (telles que var1=20210708233000 var2=20210709000000) pour confirmer si les paramètres sont mis à jour comme prévu.
Comment vérifier la substitution des paramètres pour une instance en cours d'exécution à l'aide des journaux ?
Dans le code, recherchez le mot-clé SKYNET_PARAVALUE.
07-09 00:00:19 INFO SKYNET_RERUN_MODE=1:
07-09 00:00:19 INFO SKYNET_FLOW_PARAVALUE=:
07-09 00:00:19 INFO SKYNET_ONDUTY=xxx:
07-09 00:00:19 INFO SKYNET_SYSTEMID=:
07-09 00:00:19 INFO CALC_ENGINE_IDENTIFIER=xxx:
07-09 00:00:19 INFO SKYNET_SOURCEID=xxx:
07-09 00:00:19 INFO SKYNET_PARAVALUE=var1=20210708233000 var2=20210709000000:
07-09 00:00:19 INFO SKYNET_TASKID=xxx:
07-09 00:00:19 INFO SKYNET_TENANT_ID=283789484710656:
07-09 00:00:19 INFO SKYNET_ID=700003341088:
07-09 00:00:19 INFO SKYNET_JOBID=700200619122:
07-09 00:00:19 INFO SKYNET_NODENAME=xc_partition_copy:
07-09 00:00:19 INFO SKYNET_CYCTYPE=0:
07-09 00:00:19 INFO SKYNET_DSC_JOB_VERSION=1:
07-09 00:00:19 INFO SKYNET_TASK_INPUT={}:
07-09 00:00:19 INFO SKYNET_FLOWNAME=ATCLOUD_FLOW:
07-09 00:00:19 INFO FILE_ID=700003341088:
Comment définir le fuseau horaire pour les paramètres de planification ?
L'heure d'été (DST) est prise en charge pour la génération d'instances et le calcul des partitions de paramètres, garantissant une exécution correcte les jours où la DST commence et se termine. L'exemple suivant utilise l'heure du Pacifique (États-Unis) :
Le jour où la DST commence, 23 instances sont générées. Un décalage de 10 minutes avant 03 h 00 ce jour-là donne 01 h 50. Les tâches planifiées à 02 h 00 le jour où la DST commence sont exécutées à blanc.
Le jour où la DST se termine, 24 instances sont générées. Un décalage de 10 minutes avant 03 h 00 ce jour-là donne 02 h 50.
Pour les nœuds planifiés quotidiennement, hebdomadairement et mensuellement le jour où la DST commence, si l'heure d'exécution configurée tombe dans la période de temps ignorée, l'heure d'exécution de l'instance générée pour ce jour est définie sur 00 h 00 de ce jour.
Les paramètres de planification d'un nœud ont été configurés, soumis et déployés, mais les valeurs de retour restent inchangées
Vérifiez si les paramètres de planification sont remplacés par des paramètres de workflow portant le même nom. Pour plus d'informations sur le dépannage, consultez Vérifier les paramètres de workflow.
Si un paramètre de workflow portant le même nom existe et n'est pas nécessaire, supprimez-le. Si vous devez conserver le paramètre de workflow, renommez le paramètre de planification du nœud.