Les paramètres de planification servent de valeurs dynamiques dans la configuration des nœuds de synchronisation de données. Ils remplacent les dates statiques, les noms de table ou les valeurs de champ par des valeurs calculées au moment de l'exécution, dérivées de l'horodatage des données du nœud. Cette rubrique présente quatre scénarios courants : la synchronisation des données incrémentielles, la gestion des noms de table ou de fichier dynamiques, la définition des champs de destination et le backfill des données historiques.
Prérequis
Avant de cliquer sur Run ou Run with Parameters dans la barre d'outils supérieure de l'onglet de configuration d'un nœud de synchronisation par lot, affectez manuellement des constantes aux variables référencées dans le code du nœud. Data Integration ne prend pas en charge les tests de simulation (smoke testing) sur les nœuds de synchronisation par lot dans l'environnement de développement.
Pour vérifier que les paramètres de planification sont bien remplacés, utilisez l'une des méthodes suivantes :
Exécutez un test de simulation sur un nœud SQL utilisant les mêmes paramètres de planification. Si le nœud SQL réussit le test, les paramètres sont correctement configurés. Pour plus d'informations, consultez Configurer et utiliser les paramètres de planification.
Validez le nœud vers Operation Center dans l'environnement de développement.
Vue d'ensemble des scénarios
| Scénario | Plug-ins Reader pris en charge (exemples) | Détails |
|---|---|---|
| Synchroniser les données incrémentielles | MySQL Reader, LogHub Reader, Kafka Reader | Scénario 1 et Scénario 4 |
| Synchroniser les données provenant de tables ou de fichiers aux noms dynamiques | Object Storage Service (OSS) Reader, FTP Reader, MySQL Reader | Scénario 2 |
| Affecter une valeur constante ou temporelle à un champ de destination | Varie selon la source de données | Scénario 3 |
Scénario 1 : Synchroniser les données incrémentielles
Dans une condition de filtre, les paramètres de planification servent de limites temporelles dynamiques : au moment de l'exécution, chaque expression est remplacée par la date réelle dérivée de l'horodatage des données du nœud. Chaque exécution lit ainsi uniquement les données générées dans la fenêtre temporelle cible, évitant les rechargements complets. Assurez-vous que la syntaxe de la condition de filtre est prise en charge par la source.
Pour plus d'informations, consultez Scénario : Configurer une tâche de synchronisation de données hors ligne incrémentielle.
La plage temporelle utilisée dans les conditions de filtre est un intervalle fermé à gauche et ouvert à droite.
Exemple 1 : Synchroniser les données LogHub toutes les 10 minutes vers une partition MaxCompute T-1
Le nœud génère une instance de planification toutes les 10 minutes. $bizdate spécifie l'horodatage des données du nœud de synchronisation. Les expressions de filtre de partition se résolvent alors en limites de fenêtre de 10 minutes correspondantes au moment de l'exécution.
Points clés de la configuration de la tâche : définissez Data Source sur LogHub, Log Start Time sur ${startTime} et Log End Time sur ${endTime}. Définissez Data Destination sur MaxCompute (ODPS), Partition sur pt = ${bizdate} et Write Mode sur Insert Overwrite. Dans la configuration de planification, définissez les paramètres suivants :
bizdate=$bizdatestartTime=${yyyymmddh24miss-10/24/60}endTime=${yyyymmddh24miss}
Définissez Scheduling Cycle sur Day et Scheduled Time sur 00:05.
Exemple 2 : Synchroniser les données LogHub de la veille vers une partition MaxCompute T-1 à 00 h 00 tous les jours
La condition de filtre utilise $bizdate pour capturer toutes les données générées la veille. La plage temporelle est un intervalle fermé à gauche et ouvert à droite.
Dans la tâche de synchronisation par lot hors ligne, configurez les éléments suivants pour associer les paramètres de planification aux sources de données :
Ajoutez trois paramètres de planification en haut du panneau de configuration de planification situé à droite :
startTime=${yyyymmdd},endTime=${yyyymmdd},bizdate=${yyyymmdd}.Data Source (Logstore) : définissez Log Start Time sur
${startTime}000000, Log End Time sur${endTime}000000et Batch Size sur256.Data Destination (MaxCompute) : définissez Partition sur
pt=${bizdate}et Cleaning Rule sur Insert Overwrite.Configuration de planification : définissez Scheduling Cycle sur Day, Scheduled Time sur
00:00(expression cron :00 00 00 * * ?) et Instance Generation sur T+1 (generate on the next day).
Scénario 2 : Synchroniser les données provenant de tables ou de fichiers aux noms dynamiques
Intégrez directement les paramètres de planification dans le nom de la table source ou le chemin d'accès au fichier. Le nœud lira ainsi automatiquement la bonne table ou le bon fichier à chaque exécution.
Pour certains plug-ins Reader, vous devez utiliser l'éditeur de code pour configurer les paramètres de planification destinés aux noms dynamiques. L'aperçu des données n'est pas pris en charge lorsque des variables sont utilisées dans la configuration.
Exemple 1 : Synchroniser vers MaxCompute des fichiers OSS dont le nom contient la date
Configurez le chemin d'accès à l'objet source avec un paramètre de planification. Le nœud lira ainsi le dossier daté correct chaque jour et écrira les données dans la partition correspondante dans MaxCompute.
À l'étape Select Data Source de la tâche de synchronisation des données, effectuez la configuration suivante :
Data Source : sélectionnez la source de données OSS. Définissez le type de texte sur CSV, le chemin d'accès au fichier sur
/xx/user_log_${var1}.txt, le délimiteur de colonne sur la virgule et l'encodage sur UTF-8.${var1}est un paramètre de planification utilisé pour faire correspondre dynamiquement la date dans le nom du fichier.Data Destination : sélectionnez la source de données MaxCompute (ODPS). Définissez la table cible sur
ods_raw_log_d, la partition surdt=${var1}, le mode d'écriture sur Insert Overwrite et Convert empty strings to null values sur No.
Dans le panneau de configuration Scheduling Parameters , définissez les paramètres suivants :
Nom du paramètre :
bizdate; valeur du paramètre :$bizdate; source : ajout manuel.Nom du paramètre :
var1; valeur du paramètre :${yyyymmdd-1}; source : ajout manuel.
Exemple 2 : Synchroniser vers MaxCompute des tables MySQL dont le nom contient la date
Configurez le nom de la table source avec un paramètre de planification. Le nœud lira ainsi la table datée correcte chaque jour. La configuration de l'éditeur de code et les paramètres de planification sont indiqués ci-dessous.
"version": "2.0",
"steps": [
{
"stepType": "mysql",
"parameter": {
"envType": 0,
"useSpecialSecret": false,
"column": [
"id"
],
"tableComment": "",
"connection": [
{
"datasource": "xc_workshop_public",
"table": [
"person_${var1}"
]
}
],
"where": "",
"splitPk": "id",
"encoding": "UTF-8"
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "odps",
"parameter": {
"partition": "ds=${var1}",
"truncate": true,
"datasource": "odps_first",
"isSupportThreeModel": false,
"column": [
"id"
Dans la zone de configuration Parameters , confirmez les paramètres de planification : le paramètre bizdate a pour valeur $bizdate (ajout manuel) et le paramètre var1 a pour valeur ${yyyymmdd-1} (généré automatiquement par l'analyse du code). Une fois la configuration terminée, cliquez sur Preview Parameters pour prévisualiser les résultats de substitution des paramètres.
Scénario 3 : Définir les champs de destination
Lors de la configuration des mappages de champs, affectez à un champ de destination une constante dérivée de l'horodatage des données du nœud. Le système mettra à jour ce champ automatiquement à chaque exécution en fonction de la valeur du paramètre de planification. La prise en charge varie selon le type de source de données.
Par exemple, la configuration suivante affecte l'horodatage des données à un champ ds dans la table de destination, mis à jour quotidiennement.
Dans la zone Field Mapping , ajoutez une ligne de type Constant pour le champ de destination et définissez la valeur sur ${bizdate}. Dans le panneau Scheduling situé à droite, ajoutez le paramètre bizdate = $bizdate dans la zone des paramètres. Ce paramètre de planification sera ainsi utilisé comme valeur constante dans le mappage de champs.
Scénario 4 : Synchroniser les données historiques
Les paramètres de planification sont automatiquement remplacés par des valeurs spécifiques en fonction des horodatages de données des nœuds et des formats de valeur des paramètres. Cela permet une configuration dynamique des paramètres pour la planification des nœuds. Lors d'une exécution de backfill, chaque paramètre est remplacé en utilisant l'horodatage des données spécifié par l'opération de backfill.
Utilisez la fonctionnalité de backfill des données dans Operation Center pour générer des données sur une plage temporelle historique spécifiée. Pour plus d'informations, consultez O&M des instances de backfill des données.
Exemple : Backfill des données incrémentielles MySQL dans des tables MaxCompute partitionnées par temps
L'exemple suivant montre comment écrire des données incrémentielles depuis une source MySQL vers une partition temporelle spécifiée dans MaxCompute en utilisant le backfill des données.
Dans une tâche de synchronisation par lot hors ligne, le paramètre de planification bizdate doit être configuré aux trois emplacements suivants :
Dans la condition Data Filter de la source de données, référencez
${bizdate}. Exemple :STR_TO_DATE('${bizdate}','%Y%m%d') <= gmt_modify_time AND gmt_modify_time < DATE_ADD(STR_TO_DATE('${bizdate}','%Y%m%d'), interval 1 day)Dans le champ Partition de la destination des données, définissez la valeur sur
pt=${bizdate}et la règle de nettoyage sur Insert Overwrite.Dans la zone Parameters du panneau Scheduling situé à droite, configurez
bizdate=$bizdateet définissez Instance Generation sur T+1 (generate on the next day).