Le plug-in MongoDB Writer de Data Integration pour DataWorks synchronise des données provenant d'autres sources vers MongoDB. Cette rubrique explique comment synchroniser par lots des données de MaxCompute vers MongoDB.
Prérequis
Avant de commencer, vérifiez que les conditions suivantes sont remplies :
DataWorks est activé et vous avez ajouté une source de données MaxCompute.
-
Ce tutoriel utilise un groupe de ressources exclusif pour Data Integration afin d'exécuter la tâche par lots. Achetez et configurez ce groupe de ressources avant de poursuivre. Pour plus d'informations, consultez Utiliser un groupe de ressources exclusif pour Data Integration.
RemarqueVous pouvez également utiliser un groupe de ressources serverless. Pour plus d'informations, consultez Utiliser un groupe de ressources serverless.
Préparer les exemples de données
Préparez une collection MongoDB et une table MaxCompute pour la synchronisation par lots.
-
Créez une table MaxCompute et ajoutez-y des données.
-
Créez une table partitionnée nommée
test_write_mongo. Définissez le champ de partition surpt.CREATE TABLE IF NOT EXISTS test_write_mongo( id STRING , col_string STRING, col_int int, col_bigint bigint, col_decimal decimal, col_date DATETIME, col_boolean boolean, col_array string ) PARTITIONED BY (pt STRING) LIFECYCLE 10; -
Ajoutez une partition avec la valeur
20230215.insert into test_write_mongo partition (pt='20230215') values ('11','name11',1,111,1.22,cast('2023-02-15 15:01:01' as datetime),true,'1,2,3'); -
Vérifiez que la table partitionnée a été créée correctement.
SELECT * FROM test_write_mongo WHERE pt='20230215';
-
-
Préparez la collection MongoDB de destination.
Ce tutoriel utilise ApsaraDB for MongoDB à titre d'exemple. Créez une collection nommée
test_write_mongo.db.createCollection('test_write_mongo')
Configuration de la tâche par lots
Étape 1 : Ajouter une source de données MongoDB
Ajoutez une source de données MongoDB et établissez une connexion réseau entre celle-ci et le groupe de ressources exclusif pour Data Integration. Pour plus d'informations, consultez Configurer une source de données MongoDB.
Étape 2 : Créer et configurer un nœud de synchronisation par lots
Dans DataStudio DataWorks, créez un nœud de synchronisation par lots et configurez sa source et sa destination. Cette section décrit uniquement les paramètres clés. Laissez les autres paramètres tels quels. Pour obtenir des instructions détaillées, consultez Configurer une tâche dans l'interface sans code.
-
Configurez la connexion réseau pour la synchronisation.
Sélectionnez la source de données MongoDB, la source de données MaxCompute et le groupe de ressources exclusif pour Data Integration. Ensuite, testez la connectivité.
-
Configurez la source et la destination.
Sélectionnez la table partitionnée MaxCompute et la collection MongoDB. Le tableau suivant décrit les paramètres clés.
Paramètre
Description
write mode
Détermine s'il faut écraser les données existantes. Cette fonctionnalité implique deux paramètres connexes :
write modeetbusiness primary key:write mode:Si vous sélectionnez No, le plug-in insère chaque enregistrement sous forme de nouveau document. Il s'agit de l'option par défaut.
Si vous sélectionnez Yes, vous devez spécifier une
business primary key. Le plug-in écrase alors les enregistrements ayant la même clé primaire métier.
business primary key: Spécifie la clé primaire métier pour chaque enregistrement, utilisée pour l'opération d'écrasement. Vous ne pouvez spécifier qu'un seul champ. Dans MongoDB, cela correspond généralement au champ_id.
RemarqueSi
write modeest défini sur Yes et que vous spécifiez un champ autre que _id comme clé primaire métier, une erreur similaire à la suivante peut se produire :After applying the update, the (immutable) field '_id' was found to have been altered to _id: "2". Cette erreur survient car les données entrantes contiennent un enregistrement dont l'_id ne correspond pas à l'_id du document existant identifié par la clé primaire métier. Pour plus d'informations, consultez Erreur : After applying the update, the (immutable) field '_id' was found to have been altered to _id: "2".Pre-Import Statement
Spécifie une condition préalable (PreSQL) à exécuter avant la tâche d'importation. La configuration doit être au format JSON et inclure les propriétés
typeetjson.type: Obligatoire. Les valeurs valides sontremoveetdrop(en minuscules).json:Si
typeest défini surremove, ce paramètre est obligatoire. Sa valeur doit être une requête MongoDB standard. Pour plus d'informations, consultez Query Documents.Si
typeest défini surdrop, ce paramètre n'est pas requis.
-
Configurez le mappage des champs.
Lorsque la source de données est MongoDB, l'option Map Fields in Same Row est utilisée par défaut. Vous pouvez également cliquer sur l'icône
pour modifier manuellement les champs de la table source. Voici un exemple de modification manuelle.{"name":"id","type":"string"} {"name":"col_string","type":"string"} {"name":"col_int","type":"long"} {"name":"col_bigint","type":"long"} {"name":"col_decimal","type":"double"} {"name":"col_date","type":"date"} {"name":"col_boolean","type":"bool"} {"name":"col_array","type":"array","splitter":","}Après avoir modifié manuellement les champs, l'interface utilisateur affiche le mappage entre les champs source et destination.
Champ source
Champ de destination
id
{"name":"id","type":"string"}col_string
{"name":"col_string","type":"string"}col_int
{"name":"col_int","type":"long"}col_bigint
{"name":"col_bigint","type":"long"}col_decimal
{"name":"col_decimal","type":"double"}col_date
{"name":"col_date","type":"date"}col_boolean
{"name":"col_boolean","type":"bool"}col_array
{"name":"col_array","type":"array","splitter":","}
Étape 3 : Valider et déployer le nœud de synchronisation par lots
Pour exécuter cette tâche périodiquement dans un espace de travail en mode standard, validez et déployez le nœud de synchronisation par lots dans l'environnement de production. Pour plus d'informations, consultez déploiement de nœud.
Étape 4 : Exécuter le nœud de synchronisation par lots et afficher les résultats
Une fois le nœud configuré, exécutez-le. Lorsque la tâche est terminée, consultez les données synchronisées dans la collection MongoDB. La tâche crée un document dans la base de données de destination avec les champs et valeurs suivants : _id vaut 63ecc513143e565c9b037623, col_array vaut [1, 2, 3], col_bigint vaut 111, col_boolean vaut true, col_date vaut 2023-02-15T07:01:01.000Z, col_decimal vaut 1.22, col_int vaut 1, col_string vaut name11 et id vaut 11.
Annexe : Conversion des types de données
Valeurs prises en charge pour le paramètre type
Les valeurs prises en charge pour le paramètre type sont : INT, LONG, DOUBLE, STRING, BOOL, DATE et ARRAY.
Type Array
Pour écrire des données sous forme de tableau MongoDB, définissez le paramètre type sur ARRAY et configurez la propriété splitter. Par exemple :
Les données source sont la chaîne :
a,b,c.Dans la configuration de la tâche, type est défini sur
ARRAYet splitter est défini sur,.Une fois la tâche exécutée, les données résultantes dans MongoDB sont :
["a","b","c"].