Scénario 3 : Importer des données d'un fichier CSV dans Neo4j et créer des relations à l'aide d'une requête Cypher - 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 important des informations relatives à des familles depuis un fichier CSV dans une base de données Neo4j distante et créant des relations entre les personnes et les familles à l'aide d'une seule requête Cypher via un composant tNeo4jRow.

Le fichier CSV duquel importer les données se présente comme suit dans cet exemple :

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

Comme une opération MERGE est utilisée avec LOAD CSV dans cet exemple, pour assurer que la requête Cypher est exécutée efficacement, utilisez un autre tNeo4jRow pour créer un index sur la propriété à fusionner.

Construire le Job

  1. Créez un Job et ajoutez deux composants tNeo4jRow au Job en saisissant le nom du composant dans l'espace de modélisation graphique ou en les déposant depuis la Palette.

  2. Reliez les composants à l'aide d'un lien Trigger > OnSubjobOk.

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

Configurer les composants

Créer un index

  1. Double-cliquez sur le premier tNeo4jRow pour ouvrir sa vue Basic settings.

  2. Dans la liste DB Version, sélectionnez Neo4J 2.X.X.

  3. 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. Dans le champ Query, saisissez la requête suivante pour créer un index sur la propriété à fusionner, name des nœuds Family dans cet exemple :

    "CREATE INDEX ON :Family(name)"

Importer des données et créer des relations

  1. Double-cliquez sur le second tNeo4jRow pour ouvrir sa vue Basic settings.

  2. Dans la liste DB Version, sélectionnez Neo4J 2.X.X.

  3. 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. Dans le champ Query, saisissez la requête Cypher suivante pour importer les données de la famille depuis le fichier CSV, créez les nœuds Person et Family correspondants et créez les relations entre les personnes et les familles :

    "LOAD CSV WITH HEADERS FROM 'file:E:/Talend/Data/Input/families.csv' AS csvLine FIELDTERMINATOR ';' 
    MERGE (family:Family { name: csvLine.Family })
    CREATE (person:Person { name: csvLine.Name, gender: csvLine.Gender, age: toInt(csvLine.Age)})
    CREATE (person)-[:From]->(family)"

Exécuter le Job et vérifier le résultat

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

  2. Dans la barre d'adresse de votre navigateur Web, saisissez l'URL de la base de données Neo4j, http://localhost:7474/ dans cet exemple et saisissez la requête Cypher suivante dans une invite de commande afin de voir les nœuds Person et Family reliés par la relation From :

    MATCH (a:Person)-[:`From`]->(b:Family) RETURN a,b;

    Comme vous pouvez le constater dans le graphique, les nœuds ayant pour libellé Family et Person ont été créés et les nœuds des personnes de la même famille sont liés au nœud Family correspondant via la relation From.