Scénario 2 : Ecrire des informations concernant des familles dans Neo4j et créer des relations - 6.1

Composants Talend Guide de référence

EnrichVersion
6.1
EnrichProdName
Talend Big Data
Talend Big Data Platform
Talend Data Fabric
Talend Data Integration
Talend Data Management Platform
Talend Data Services Platform
Talend ESB
Talend MDM Platform
Talend Open Studio for Big Data
Talend Open Studio for Data Integration
Talend Open Studio for Data Quality
Talend Open Studio for ESB
Talend Open Studio for MDM
Talend Real-Time Big Data Platform
task
Création et développement
Gouvernance de données
Qualité et préparation de données
EnrichPlatform
Studio Talend

Ce scénario décrit un Job écrivant des informations relatives à des familles dans des nœuds ayant un label, dans une base de données Neo4j distante et créant des relations basées sur les noms de famille.

Construire le Job

  1. Créez un Job et ajoutez les composants suivants dans le Job en saisissant leurs noms dans l'espace de modélisation graphique ou en les déposant depuis la Palette :

    • un tFileInputDelimited pour lire les données relatives à la famille à partir d'un fichier CSV,

    • un tNeo4jOutput pour écrire les données des familles dans une base de données Neo4j et créer des relations entre un mari et une femme.

  2. Reliez le composant tFileInputDelimited au tNeo4jOutput à l'aide d'un lien Row > Main.

  3. Renommez les composants afin de mieux identifier leur rôle au sein du Job.

Configurer les composants

Configurer la source des données

  1. Double-cliquez sur le composant tFileInputDelimited pour ouvrir sa vue Basic settings.

  2. Dans le champ File name/Stream, spécifiez le chemin d'accès au fichier CSV contenant les données des familles à lire.

    Le fichier CSV d'entrée utilisé dans cet exemple se présente comme suit :

    Name;Gender;Age;Family
    Jenny;Female;24;the Johnsons
    Jack;Male;26;the Johnsons
    Richard;Male;35;the Blacks
    Anne;Female;36;the Whites
    Helen;Female;28;the Blacks
    Tom;Male;38;the Whites
  3. Dans le champ Header, spécifiez le nombre de lignes d'en-tête à ignorer. Dans cet exemple, la première ligne du fichier CSV est la ligne d'en-tête.

  4. Cliquez sur le bouton [...] à côté du champ Edit schema pour ouvrir la boîte de dialogue [Schema] et définissez le schéma d'entrée, à partir de la structure du fichier d'entrée. Dans cet exemple, le schéma d'entrée se compose de six colonnes : name (Integer), gender (String), age (Integer) et family (String).

    Cela fait, cliquez sur OK pour fermer la boîte de dialogue [Schema] et propagez le schéma au composant suivant.

Ecrire des données dans Neo4j et créer des index et une relation

  1. Cliquez sur le composant tNeo4jOutput et sélectionnez l'onglet Component.

  2. Dans la liste DB Version, sélectionnez Neo4J 2.X.X pour activer les libellés des nœuds.

  3. Définissez une connexion à la base de données Neo4j. Dans cet exemple, la base de données Neo4j est accessible en mode REST. Cochez la case Remote server et spécifiez l'URL du serveur Neo4j dans le champ Server URL, "http://localhost:7474/db/data" dans cet exemple.

  4. Double-cliquez sur le composant tNeo4jOutput ou cliquez sur le bouton [...] du champ Mapping pour ouvrir l'éditeur d'index et de mapping de relations.

  5. Sélectionnez la colonne name dans le schéma, cliquez sur l'onglet Index creation, cliquez sur le bouton [+] pour ajouter une ligne à la table, puis créez un index nommé first_name sur cette colonne :

    • Dans le champ Name, saisissez first_name entre guillemets doubles.

    • Dans le champ Key, saisissez first_name entre guillemets doubles pour donner une clé à l'index.

    Cliquez dans le panneau du schéma afin de valider la création de l'index.

  6. Sélectionnez la colonne family dans le schéma, cliquez sur l'onglet Index creation puis sur le bouton [+] pour ajouter une ligne à la table. Créez un index nommé family sur cette colonne :

    • Dans le champ Name, saisissez family entre guillemets doubles.

    • Dans le champ Key, saisissez family_name entre guillemets doubles pour donner une clé à l'index.

    Cliquez dans le panneau du schéma afin de valider la création de l'index.

  7. Sélectionnez la colonne family dans le schéma, cliquez sur l'onglet Relationship creation, cliquez sur le bouton [+] pour ajouter deux lignes à la table. Créez une relation nommée Spouse sur cette colonne basée sur l'index nommé family :

    • Dans le champ Type, saisissez Spouse entre guillemets doubles.

    • Dans la liste Direction, sélectionnez Outgoing ou Incoming.

    • Dans le champ Index Name, saisissez family entre guillemets doubles.

    • Dans le champ Index Key, saisissez family_name entre guillemets doubles.

    Cliquez dans le panneau du schéma afin de valider votre création de relation, puis cliquez sur OK pour fermer l'éditeur de mapping.

  8. Cochez la case Use label (Neo4j > 2.0) et saisissez Families entre guillemets doubles dans le champ Label name afin que les nœuds à créer soient libellés Families.

  9. Dans la liste Data action, sélectionnez Insert or update et configurez une clé de référence dans la zone Index qui s'affiche :

    • Dans le champ Index name, saisissez first_name entre guillemets doubles.

    • Dans le champ Index key, saisissez first_name entre guillemets doubles.

    • Dans le champ Index value, sélectionnez name. Comme le champ Value est vide lors de la création de l'index, la valeur de l'index sera la valeur de la colonne name pour chaque ligne.

    Lorsque le Job est exécuté, les nœuds sont insérés ou mis à jour dans la base de données Neo4j selon l'index first_name : pour chaque ligne de données, si un nœud contenant le même prénom existe déjà dans la base de données, le nœud est mis à jour. Sinon, un nouveau nœud est créé.

Exécuter le Job et vérifier les résultats

  1. Appuyez sur les touches Ctrl+S afin de sauvegarder le Job puis appuyez sur F6 ou cliquez sur Run dans la vue Run pour exécuter le Job.

  2. Dans la barre d'adresse de votre navigateur, saisissez l'URL de la base de données Neo4j, http://localhost:7474/ dans cet exemple, et saisissez la requête Cypher suivante dans l'invite de commande pour voir les nœuds.

    MATCH (n:`Families`) RETURN n;

    Comme affiché dans le graphique, trois paires de nœuds libellés Families sont créés et ceux ayant le même nom de famille sont reliés à l'aide de la relation Spouse.