Tous les produits
Search
Centre de documentation

DataWorks:Source de données MongoDB

Dernière mise à jour :Aug 12, 2026

DataWorks assure la synchronisation bidirectionnelle des données avec MongoDB. Cette rubrique décrit les capacités de synchronisation des données offertes par DataWorks pour MongoDB.

Versions prises en charge

Seules les versions 4.x, 5.x, 6.x, 7.x et 8,0 de MongoDB sont prises en charge.

Remarques d'utilisation

  • Connectez-vous à une base de données MongoDB à l'aide d'un compte créé spécifiquement pour cette base. Si vous utilisez une source de données ApsaraDB for MongoDB, un compte root est créé par défaut. Pour des raisons de sécurité, nous vous recommandons de ne pas utiliser le compte root lors de l'ajout d'une source de données MongoDB.

  • Si vous utilisez un cluster fragmenté MongoDB, configurez l'adresse d'un nœud mongos pour la source de données. Ne configurez pas l'adresse d'un nœud mongod/shard. Dans le cas contraire, une tâche de synchronisation risque d'interroger les données uniquement à partir du shard spécifié au lieu de l'ensemble complet des données. Pour plus d'informations sur mongos et mongod, consultez la documentation relative à mongos et mongod.

  • Si le niveau de simultanéité est supérieur à 1, tous les champs _id de la collection configurée pour la tâche de synchronisation doivent avoir le même type de données. Par exemple, tous les champs _id doivent être de type chaîne ou ObjectId. Sinon, certaines données risquent de ne pas être synchronisées.

    Remarque
    • Lorsque le niveau de simultanéité est supérieur à 1, la tâche est divisée en fonction du champ _id. Par conséquent, les types de données mixtes ne sont pas pris en charge pour le champ _id dans ce scénario. Si le champ _id contient plusieurs types de données, définissez le niveau de simultanéité sur 1 pour la synchronisation des données. Pour ce faire, ne configurez pas le paramètre splitFactor ou définissez le paramètre splitFactor sur 1.

  • Data Integration ne prend pas en charge le type array (tableau). Cependant, MongoDB prend en charge ce type et propose une fonctionnalité d'indexation puissante. Configurez des paramètres spécifiques pour convertir des chaînes en tableaux MongoDB. Après la conversion, vous pouvez écrire les données dans MongoDB en parallèle.

  • Les bases de données MongoDB gérées par vos soins ne prennent pas en charge l'accès via le réseau public. Elles sont accessibles uniquement via le réseau interne d'Alibaba Cloud.

  • Les clusters MongoDB déployés à l'aide de docker ne sont pas pris en charge.

  • Vous ne pouvez pas utiliser le paramètre query pour lire les données de colonnes spécifiques.

  • Dans une tâche de synchronisation par lots, si Data Integration ne parvient pas à récupérer la structure des champs depuis MongoDB, il génère par défaut des mappages de champs pour six champs. Les noms des champs sont col1, col2, col3, col4, col5 et col6.

  • Pendant l'exécution de la tâche, la commande splitVector est utilisée par défaut pour fragmenter la tâche. Certaines versions de MongoDB ne prennent pas en charge la commande splitVector, ce qui peut provoquer une erreur no such cmd splitVector. Pour éviter cette erreur, cliquez sur l'icône image dans la configuration de la tâche, basculez vers l'éditeur de code et ajoutez le paramètre suivant à la configuration des paramètres MongoDB pour empêcher l'utilisation de splitVector.

    "useSplitVector" : false

Types de champs pris en charge

Types de données MongoDB pris en charge par MongoDB Reader

Data Integration prend en charge la plupart, mais pas la totalité, des types de données MongoDB. Assurez-vous que vos types de données sont pris en charge.

Lorsque Data Integration lit les types de données pris en charge, il effectue les opérations suivantes :

  • Pour les types de données primitifs, Data Integration lit automatiquement les données à partir du chemin correspondant en fonction du nom du champ configuré dans le paramètre column. Pour plus d'informations, consultez Annexe : Exemple de script et description des paramètres pour MongoDB. Data Integration convertit également automatiquement le type de données. Vous n'avez pas besoin de spécifier la propriété type pour la colonne.

    Type

    Lecture par lots (MongoDB Reader)

    Description

    ObjectId

    Pris en charge

    Type d'identifiant d'objet.

    Double

    Pris en charge

    Type de nombre à virgule flottante 64 bits.

    Entier 32 bits

    Pris en charge

    Entier 32 bits.

    Entier 64 bits

    Pris en charge

    Entier 64 bits.

    Decimal128

    Pris en charge

    Type Decimal128.

    Remarque

    Si un champ est configuré comme un type imbriqué ou un type combiné, il est traité comme un objet lors de la sérialisation JSON. Ajoutez le paramètre decimal128OutputType et définissez-le sur bigDecimal pour exporter les données sous forme décimale.

    String

    Pris en charge

    Type de chaîne.

    Boolean

    Pris en charge

    Type booléen.

    Timestamp

    Pris en charge

    Type d'horodatage.

    Remarque

    BsonTimestamp stocke les horodatages. Vous n'avez pas besoin de prendre en compte l'impact des fuseaux horaires. Pour plus d'informations, consultez Problèmes de fuseau horaire dans MongoDB.

    Date

    Pris en charge

    Type de date.

  • Pour certains types de données complexes, configurez la propriété type de la colonne afin d'effectuer un traitement personnalisé.

    Type

    Lecture par lots (MongoDB Reader)

    Description

    Document

    Pris en charge

    Type de document intégré.

    • Si la propriété type n'est pas configurée, le Document est directement converti à l'aide de la sérialisation JSON.

    • Si la propriété type est définie sur document, le champ est de type imbriqué. MongoDB Reader lit les propriétés du Document en fonction du chemin. Pour un exemple détaillé, consultez l'Exemple 2 : Analyse récursive d'un Document imbriqué à plusieurs niveaux ci-dessous.

    Array

    Pris en charge

    Type de tableau.

    • Si le type est défini sur array.json ou arrays, les données sont directement traitées à l'aide de la sérialisation JSON.

    • Si le type est défini sur array ou document.array, les éléments sont concaténés en une chaîne. Le séparateur, spécifié dans la propriété splitter de la colonne, est une virgule (,) par défaut.

    Important

    Data Integration ne prend pas en charge le type array (tableau). Cependant, MongoDB prend en charge ce type et propose une fonctionnalité d'indexation puissante. Configurez des paramètres spécifiques pour convertir des chaînes en tableaux MongoDB. Après la conversion, vous pouvez écrire les données dans MongoDB en parallèle.

Type de données spécial Data Integration : combine

Type

Lecture par lots (MongoDB Reader)

Description

Combine

Pris en charge

Type de données personnalisé dans Data Integration.

Si le type est défini sur combine, MongoDB Reader supprime les clés correspondant aux colonnes configurées et sérialise toutes les autres informations de l'intégralité du Document dans une sortie JSON. Pour un exemple détaillé, consultez l'Exemple 1 : Utilisation du type combine ci-dessous.

Mappages de types de données MongoDB Reader

Le tableau suivant répertorie les mappages entre les types de données MongoDB et les types de données Data Integration pour MongoDB Reader.

Catégorie de type converti

Type de données MongoDB

LONG

INT, LONG, document.INT et document.LONG

DOUBLE

DOUBLE et document.DOUBLE

STRING

STRING, ARRAY, document.STRING, document.ARRAY et COMBINE

DATE

DATE et document.DATE

BOOLEAN

BOOL et document.BOOL

BYTES

BYTES et document.BYTES

Mappages de types de données MongoDB Writer

Catégorie de type

Type de données MongoDB

Integer

INT et LONG

Floating-point

DOUBLE

String

STRING et ARRAY

Date and time

DATE

Boolean

BOOL

Binary

BYTES

Exemple 1 : Utilisation du type combine

Le type de données combine du plug-in MongoDB Reader vous permet de fusionner plusieurs champs d'un document MongoDB en une seule chaîne JSON. Par exemple, supposons que vous souhaitiez importer des champs de trois documents MongoDB vers MaxCompute. Dans l'exemple suivant, les champs sont représentés par des clés plutôt que par des paires clé-valeur. Les champs a et b sont communs aux trois documents, et x_n est un champ variable.

  • doc1: a b x_1 x_2

  • doc2: a b x_2 x_3 x_4

  • doc3: a b x_5

Dans le fichier de configuration, spécifiez explicitement les champs nécessitant un mappage un-à-un. Pour les champs que vous souhaitez fusionner, attribuez un nouveau nom différent de tout nom de champ existant dans le document et définissez le type sur COMBINE. Le code suivant fournit un exemple.

"column": [
{
"name": "a",
"type": "string",
},
{
"name": "b",
"type": "string",
},
{
"name": "doc",
"type": "combine",
}
]

Le tableau suivant montre la sortie finale dans MaxCompute.

odps_column1

odps_column2

odps_column3

a

b

{x_1,x_2}

a

b

{x_2,x_3,x_4}

a

b

{x_5}

Remarque

Après avoir utilisé le type combine pour fusionner plusieurs champs d'un document MongoDB, les champs communs sont automatiquement supprimés lorsque la sortie est mappée vers MaxCompute. Seuls les champs uniques du document sont conservés.

Par exemple, a et b sont des champs communs à tous les documents. Après la fusion des champs du document doc1: a b x_1 x_2 à l'aide du type combine, la sortie est {a,b,x_1,x_2}. Lorsque ce résultat est mappé vers MaxCompute, les champs communs a et b sont supprimés. La sortie finale est {x_1,x_2}.

Exemple 2 : Analyse récursive d'un Document imbriqué à plusieurs niveaux

Si un document dans MongoDB comporte plusieurs niveaux d'imbrication, configurez le type document pour l'analyser de manière récursive. Le code suivant fournit un exemple.

  • Données source dans MongoDB :

    {
        "name": "name1",
        "a":
        {
            "b":
            {
                "c": "this is value"
            }
        }
    }
  • Configuration de la colonne MongoDB :

    {"name":"_id","type":"string"}
    {"name":"name","type":"string"}
    {"name":"a.b.c","type":"document"}

    Une fois la configuration terminée, les champs source et destination sont mappés comme suit : _id est mappé vers id, name est mappé vers name et a.b.c est mappé vers c.

Avec la configuration précédente, la valeur du champ source imbriqué a.b.c est écrite dans le champ de destination c. Une fois la tâche de synchronisation exécutée, les données écrites dans la destination sont this is value.

Ajouter une source de données

Avant de développer une tâche de synchronisation dans DataWorks, ajoutez la source de données requise à DataWorks en suivant les instructions fournies dans Configuration de la source de données. Consultez les descriptions des paramètres dans la console DataWorks pour comprendre la signification des paramètres lors de l'ajout d'une source de données.

Développer une tâche de synchronisation des données

Pour obtenir des informations sur le point d'entrée et la procédure de configuration d'une tâche de synchronisation, consultez les guides de configuration suivants.

Configurer une tâche de synchronisation par lots pour une table unique

Configurer une tâche de synchronisation en temps réel pour une table unique

Consultez Configurer une tâche de synchronisation en temps réel pour une table unique.

Configurer une tâche de synchronisation pour une base de données entière

Vous pouvez configurer des tâches pour la synchronisation par lots, la synchronisation en temps réel complète et incrémentielle, ou la synchronisation en temps réel à partir de bases de données fragmentées pour une base de données entière. Pour plus d'informations, consultez Tâche de synchronisation par lots pour une base de données entière et Configurer une tâche de synchronisation en temps réel pour une base de données entière.

Bonnes pratiques

FAQ

Annexe : Exemple de script et description des paramètres pour MongoDB

Configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code

Si vous souhaitez configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code, configurez les paramètres associés dans le script selon les exigences de format de script unifié. Pour plus d'informations, consultez Configuration en mode script. Les informations suivantes décrivent les paramètres que vous devez configurer pour les sources de données lors de la configuration d'une tâche de synchronisation par lots à l'aide de l'éditeur de code.

Exemple de script Reader

Le script suivant est un exemple d'une tâche configurée pour extraire des données de MongoDB vers un environnement local. Pour plus d'informations sur les paramètres, consultez les descriptions des paramètres qui suivent.

Important
  • Avant d'exécuter le code, supprimez les commentaires.

  • Vous ne pouvez pas extraire d'éléments spécifiques d'un array.

{
    "type":"job",
    "version":"2.0",// Version number.
    "steps":[
        {
            "category": "reader",
            "name": "Reader",
            "parameter": {
                "datasource": "datasourceName", // Data source name.
                "collectionName": "tag_data", // Collection name.
                "query": "", // Data filtering query.
                "column": [
                    {
                        "name": "unique_id", // Field name.
                        "type": "string" // Field type.
                    },
                    {
                        "name": "sid",
                        "type": "string"
                    },
                    {
                        "name": "user_id",
                        "type": "string"
                    },
                    {
                        "name": "auction_id",
                        "type": "string"
                    },
                    {
                        "name": "content_type",
                        "type": "string"
                    },
                    {
                        "name": "pool_type",
                        "type": "string"
                    },
                    {
                        "name": "frontcat_id",
                        "type": "array",
                        "splitter": ""
                    },
                    {
                        "name": "categoryid",
                        "type": "array",
                        "splitter": ""
                    },
                    {
                        "name": "gmt_create",
                        "type": "string"
                    },
                    {
                        "name": "taglist",
                        "type": "array",
                        "splitter": " "
                    },
                    {
                        "name": "property",
                        "type": "string"
                    },
                    {
                        "name": "scorea",
                        "type": "int"
                    },
                    {
                        "name": "scoreb",
                        "type": "int"
                    },
                    {
                        "name": "scorec",
                        "type": "int"
                    },
                    {
                        "name": "a.b",
                        "type": "document.int"
                    },
                    {
                        "name": "a.b.c",
                        "type": "document.array",
                        "splitter": " "
                    }
                ]
            },
            "stepType": "mongodb"
        },
        { 
            "stepType":"stream",
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "common": { 
            "column": { 
                "timeZone": "GMT+0" // Time zone.
            } 
        },
        "errorLimit":{
            "record":"0"// Number of error records.
        },
        "speed":{
            "throttle":true,// Specifies whether to enable throttling. If you set this parameter to false, throttling is disabled and the mbps parameter does not take effect. If you set this parameter to true, throttling is enabled.
            "concurrent":1, // Number of concurrent jobs.
            "mbps":"12"// Throttling rate. 1 mbps = 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Paramètre

Description

datasource

Nom de la source de données. Dans l'éditeur de code, la valeur de ce paramètre doit être identique au nom de la source de données ajoutée.

collectionName

Nom de la collection MongoDB.

hint

Le paramètre hint force l'optimiseur de requête à utiliser un index spécifique pour une requête, ce qui peut améliorer les performances. Pour plus d'informations, consultez le paramètre hint. Exemple :

{
"collectionName":"test_collection",
"hint":"{age:1}"
}

column

Tableau spécifiant les champs de document à lire depuis MongoDB.

  • name : Nom de la column.

  • Les types pris en charge pour le paramètre type incluent les suivants :

    • string : Chaîne.

    • long : Entier.

    • double : Nombre à virgule flottante.

    • date : Date.

    • bool : Valeur booléenne.

    • bytes : Séquence binaire.

    • arrays : Lu comme une chaîne JSON, telle que ["a","b","c"].

    • array : Lu comme une chaîne avec des éléments séparés par le séparateur, tel que a,b,c. Nous vous recommandons d'utiliser le format arrays.

    • combine : Lorsque vous utilisez le plug-in MongoDB Reader pour lire des données, vous pouvez fusionner plusieurs champs d'un document MongoDB en une seule chaîne JSON.

  • splitter : MongoDB prend en charge le type array (tableau), mais le framework Data Integration ne le fait pas. Par conséquent, le type array lu depuis MongoDB doit être fusionné en une chaîne à l'aide de ce séparateur.

batchSize

Nombre d'enregistrements à récupérer par lot. Ce paramètre est facultatif. Valeur par défaut : 1000.

cursorTimeoutInMs

Délai d'expiration du curseur. Ce paramètre est facultatif. Valeur par défaut : 1000 60 10 = 600000. Si cursorTimeoutInMs est défini sur une valeur négative, le curseur n'expire jamais.

Remarque
  • Nous ne recommandons pas de configurer le curseur pour qu'il n'expire jamais. Si le programme client se termine de manière inattendue, un curseur qui n'expire jamais restera sur le serveur MongoDB jusqu'au redémarrage du service.

  • En cas d'expiration du curseur, effectuez les opérations suivantes :

    • Diminuez le nombre d'enregistrements récupérés par lot à l'aide du paramètre batchSize.

    • Augmentez le délai d'expiration du curseur à l'aide du paramètre cursorTimeoutInMs.

query

Utilisez ce paramètre pour filtrer les données MongoDB renvoyées. Seuls les formats de temps spécifiés sont pris en charge. Le format d'horodatage UNIX n'est pas directement pris en charge.

Remarque
  • Le paramètre query ne prend pas en charge la syntaxe JavaScript.

  • La lecture des données à partir de colonnes spécifiées n'est pas prise en charge.

Le code suivant fournit des exemples courants pour le paramètre query :

  • Interroger les données avec un statut normal.

    {
      ...
      "query":"{ status: "normal"}"
      ...
    }
  • status: "normal"

    {
      ...
      "query":"{ status: { $in: [ "normal", "forbidden" ] }}"
      ...
    }
  • Syntaxe AND : Interroger les données avec un statut normal et un âge inférieur à 30.

    {
      ...
      "query":"{ status: "normal", age: { $lt: 30 }}"
      ...
    }
  • Syntaxe de date : Interroger les données dont l'heure de création est supérieure ou égale au 01/12/2022 00:00:00.000. +0800 indique le fuseau horaire UTC+8.

    {
      ...
      "query":"{ createTime:{$gte:ISODate('2022-12-01T00:00:00.000+0800')}}"
      ...
    }
  • Syntaxe de date avec un espace réservé de paramètre de planification : Interroger les données dont l'heure de création est supérieure ou égale à un moment précis.

    {
      ...
      "query":"{ createTime:{$gte:ISODate('$[yyyy-mm-dd]T00:00:00.000+0800')}}"
      ...
    }
    Remarque

    Pour plus d'informations sur les paramètres de planification, consultez Scénarios : Scénarios d'application typiques des paramètres de planification dans Data Integration. Pour savoir comment mettre en œuvre la synchronisation incrémentielle pour les tâches par lots, consultez Utiliser les paramètres de planification dans Data Integration.

  • Synchronisation incrémentielle pour les champs non temporels.

    Utilisez un nœud d'affectation pour traiter un champ dans le type de données cible, puis transmettez-le à Data Integration pour la synchronisation des données. Par exemple, si le champ incrémentiel dans MongoDB est un horodatage UNIX, utilisez un nœud d'affectation pour convertir un champ de type heure en horodatage UNIX à l'aide d'une fonction moteur. Ensuite, transmettez l'horodatage à la tâche de synchronisation par lots. Pour plus d'informations sur l'utilisation d'un nœud d'affectation, consultez Nœud d'affectation.

Remarque

Pour plus d'informations sur la syntaxe de requête de MongoDB, consultez la documentation officielle MongoDB.

splitFactor

En cas de déséquilibre important des données, envisagez d'augmenter le splitFactor pour obtenir un fractionnement plus fin sans augmenter la simultanéité.

Exemple de script Writer

Le script suivant est un exemple d'une tâche de synchronisation des données configurée pour écrire des données dans MongoDB. Pour plus d'informations sur les paramètres, consultez les descriptions des paramètres qui suivent.

{
    "type": "job",
    "version": "2.0",// Version number.
    "steps": [
        {
            "stepType": "stream",
            "parameter": {},
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "mongodb",// Plugin name.
            "parameter": {
                "datasource": "",// Data source name.
                "column": [
                    {
                        "name": "_id",// Column name.
                        "type": "ObjectId"// Data type. If replaceKey is _id, you must set type to ObjectId. If you set type to string, the replacement fails.
                    },
                    {
                        "name": "age",
                        "type": "int"
                    },
                    {
                        "name": "id",
                        "type": "long"
                    },
                    {
                        "name": "wealth",
                        "type": "double"
                    },
                    {
                        "name": "hobby",
                        "type": "array",
                        "splitter": " "
                    },
                    {
                        "name": "valid",
                        "type": "boolean"
                    },
                    {
                        "name": "date_of_join",
                        "format": "yyyy-MM-dd HH:mm:ss",
                        "type": "date"
                    }
                ],
                "writeMode": {// Write mode.
                    "isReplace": "true",
                    "replaceKey": "_id"
                },
                "collectionName": "datax_test"// Collection name.
            },
            "name": "Writer",
            "category": "writer"
        }
    ],
    "setting": {
        "errorLimit": {// Number of error records.
            "record": "0"
        },
        "speed": {
            "throttle": true,// Specifies whether to enable throttling. If you set this parameter to false, throttling is disabled and the mbps parameter does not take effect. If you set this parameter to true, throttling is enabled.
            "concurrent": 1,// Number of concurrent jobs.
            "mbps": "1"// Throttling rate. 1 mbps = 1 MB/s.
        },
       "jvmOption": "-Xms1024m -Xmx1024m"
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

Paramètres du script Writer

Paramètre

Description

Obligatoire

Valeur par défaut

datasource

Nom de la source de données. Dans l'éditeur de code, la valeur de ce paramètre doit être identique au nom de la source de données ajoutée.

Oui

Aucune

collectionName

Nom de la collection MongoDB.

Oui

Aucune

column

Tableau spécifiant les champs de document à écrire dans MongoDB.

  • name : Nom de la colonne.

  • type : Type de la colonne.

    • int : Entier 32 bits.

    • string : Chaîne.

    • array : Le paramètre splitter est requis. Il est utilisé pour séparer la chaîne source. Par exemple :

      Si les données source sont a,b,c et que splitter est défini sur une virgule (,), les données sont divisées en tableau ["a","b","c"] et écrites dans MongoDB.

      {"type":"array","name":"col_split_array","splitter":",","itemtype":"string"}
      Remarque

      Pour le type array, le paramètre itemtype prend en charge les types d'énumération suivants : double, int, long, bool, bytes et string.

    • json : Chaîne JSON.

    • long : Entier long.

    • date : Date.

    • double : Nombre à virgule flottante.

    Remarque

    MongoDB Writer prend également en charge l'écriture de types imbriqués. Ajoutez le préfixe type document. pour indiquer un type imbriqué. Vous pouvez configurer un nom en cascade pour le paramètre name. Exemple :

    {"type":"document.string","name":"col_nest.col_string"}
        {"type":"document.array","name":"col_nest.col_split_array","splitter":",","itemtype":"string"}
  • splitter : Séparateur spécial. Utilisez ce paramètre uniquement lorsqu'une chaîne doit être divisée en un tableau de caractères. La chaîne est divisée en tableau à l'aide du séparateur spécifié et stockée dans MongoDB.

Oui

Aucune

writeMode

Spécifie s'il faut écraser les données pendant la transmission. Il comprend isReplace et replaceKey :

  • isReplace : Si défini sur true, une opération d'écrasement est effectuée pour la même replaceKey. Si défini sur false, aucune opération d'écrasement n'est effectuée.

  • replaceKey : Spécifie la clé primaire métier pour chaque enregistrement, utilisée pour l'écrasement. Plusieurs clés ne sont pas prises en charge pour replaceKey. Cela fait généralement référence à la clé primaire dans MongoDB.

Remarque

Si isReplace est défini sur true et qu'un champ autre que le champ _id est configuré comme replaceKey, une erreur similaire à la suivante peut se produire lors de l'exécution :

After applying the update, the (immutable) field '_id' was found to have been altered to _id: "2"

Cela est dû au fait que les données à écrire contiennent des enregistrements où le _id ne correspond pas à la replaceKey. Pour plus d'informations, consultez la FAQ : Erreur : After applying the update, the (immutable) field '_id' was found to have been altered to _id: "2".

Non

Aucune

preSql

Opération préalable à exécuter avant d'écrire des données dans MongoDB, telle que l'effacement des données historiques. Si preSql est vide, aucune opération préalable n'est configurée. Lors de la configuration de preSql, assurez-vous que sa valeur respecte la syntaxe JSON.

Non

Aucune

Lors de l'exécution d'une tâche Data Integration, le preSql configuré est exécuté en premier. La phase réelle d'écriture des données ne commence qu'une fois l'exécution du preSql terminée. Le paramètre preSql n'affecte pas le contenu des données écrites. Le paramètre preSql assure l'exécution idempotente pour Data Integration. Par exemple, votre preSql peut servir à effacer les données historiques avant chaque exécution de tâche selon vos règles métier. Dans ce cas, si une tâche échoue, il vous suffit de réexécuter la tâche Data Integration.

Les exigences de format pour preSql sont les suivantes :

  • Configurez le champ type pour spécifier le type d'opération préalable. Les valeurs prises en charge sont drop et remove. Exemple : "preSql":{"type":"remove"}.

    • drop : Supprime la collection et les données qu'elle contient. La collection à supprimer est spécifiée par le paramètre collectionName.

    • remove : Supprime les données en fonction d'une condition.

    • json : Utilisez un objet JSON pour spécifier les conditions de suppression des données. Exemple : "preSql":{"type":"remove", "json":"{'operationTime':{'$gte':ISODate('${last_day}T00:00:00.424+0800')}}"}. Dans cet exemple, ${last_day} est un paramètre de planification DataWorks au format $[yyyy-mm-dd]. Vous pouvez également utiliser d'autres opérateurs conditionnels pris en charge par MongoDB (tels que $gt, $lt, $gte et $lte), des opérateurs logiques (tels que and et or) ou des fonctions (telles que max, min, sum, avg et ISODate) selon vos besoins.

      Data Integration exécute la suppression des données à l'aide de l'API MongoDB standard suivante :

      query=(BasicDBObject) com.mongodb.util.JSON.parse(json);        
      col.deleteMany(query);
      Remarque

      Pour supprimer des données en fonction de conditions, nous vous recommandons d'utiliser la configuration JSON.

    • item : Configurez le nom de la colonne (name), la condition (condition) et la valeur de la colonne (value) pour le filtrage des données dans un élément item. Exemple : "preSql":{"type":"remove","item":[{"name":"pv","value":"100","condition":"$gt"},{"name":"pid","value":"10"}]}.

      Data Integration construit une condition de requête basée sur les conditions d'élément configurées, puis exécute la suppression à l'aide d'une API MongoDB standard. Par exemple : col.deleteMany(query);.

  • Si le preSql n'est pas reconnu, aucune opération de suppression préalable n'est effectuée.