tNeo4jRow - 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

Avertissement

Ce composant est disponible dans la Palette du Studio Talend si vous avez souscrit à l'une des solutions Big Data de Talend.

Propriétés du tNeo4jRow

Famille du composant

Big Data / Neo4j

 

Fonction

Le composant tNeo4jRow est le composant spécifique pour les requêtes, pour cette base de données. Il permet d'exécuter les requêtes Cypher sur la base de données spécifiée. Le suffixe Row signifie que le composant met en place un flux dans le Job bien que ce composant ne produise pas de données en sortie.

Objectif

Selon la nature de la requête, le tNeo4jRow agit sur la structure même de la base de données ou sur les données (mais sans les manipuler).

Basic settings

Use an existing connection

Cochez cette case et sélectionnez le composant de connexion adéquat à partir de la liste Component List pour réutiliser les paramètres d'une connexion que vous avez déjà définie.

DB version

Sélectionnez la version de Neo4j que vous utilisez, Neo4J 1.X.X ou Neo4J 2.X.X.

Notez que la version 2.X.X de Neo4j est compatible uniquement avec la version 7 ou supérieure de Java mais supporte les fonctionnalités avancées, comme les libellés des nœuds.

Cette liste n'est pas affichée lorsque la case Use an existing connection est cochée.

Après avoir sélectionné la version de la base de données, il vous est demandé d'installer les fichiers Jar contenant les pilotes correspondant à la base de données. Pour plus d'informations concernant l'installation de modules tiers, consultez le Guide d'installation Talend.

 

Remote server

Cochez cette case si vous utilisez un serveur REST Neo4j et spécifiez l'URL racine dans le champ Server URL.

  • Set username : cette case est disponible lorsque vous avez coché la case Use a remote server et que la version de Neo4j que vous utilisez est antérieure à 2.2. Si le serveur Neo4j distant auquel vous souhaitez vous connecter ne nécessite pas l'utilisation d'un identifiant et d'un mot de passe, laissez la case décochée.

  • Username et Password : saisissez les informations d'authentification pour vous connecter au serveur Neo4j distant à utiliser. Depuis la version 2.2 de Neo4j, l'identifiant et le mot de passe sont toujours requis.

Cette case apparaît uniquement si la case Use an existing connection n'est pas cochée.

 

Database path

Si vous utilisez Neo4j en mode embarqué, spécifiez le répertoire qui contiendra vos fichiers de données. Le répertoire spécifié sera créé s'il n'existe pas déjà.

Cette case apparaît uniquement si la case Use an existing connection ou la case Remote Server n'est pas cochée.

 

Shutdown after job (Only embedded database)

Cochez cette case si vous souhaitez arrêter la connexion à la base de données Neo4j à la fin du Job.

Cette case est disponible uniquement lorsque la case Use an existing connection est cochée.

 

Schema et Edit schema

Un schéma est une description de lignes, il définit le nombre de champs (colonnes) qui sont traités et passés au composant suivant. Le schéma est soit local (Built-In), soit distant dans le Repository.

Depuis la version 5.6, les modes Built-In et Repository sont disponibles dans toutes les solutions de Talend.

Cliquez sur Edit schema pour modifier le schéma. Si le schéma est en mode Repository, trois options sont disponibles :

  • View schema : sélectionnez cette option afin de voir le schéma.

  • Change to Built-In property : sélectionnez cette option pour passer le schéma en mode Built-In et effectuer des modifications locales.

  • Update repository connection : sélectionnez cette option afin de modifier le schéma stocké dans le référentiel et décider de propager ou non les modifications à tous les Jobs. Si vous souhaitez propager les modifications uniquement au Job courant, sélectionnez No et sélectionnez à nouveau la métadonnée du schéma dans la fenêtre [Repository Content].

  

Built-In : Le schéma est créé et conservé ponctuellement pour ce composant seulement. Voir également le Guide utilisateur du Studio Talend.

  

Repository : Le schéma existe déjà et il est stocké dans le Repository. Ainsi, il peut être réutilisé. Voir également le Guide utilisateur du Studio Talend.

Lorsque le schéma à réutiliser contient des valeurs par défaut, qui sont des entiers (integer) ou des fonctions (function), assurez-vous que les valeurs par défaut ne sont pas entourées de guillemets. Si c'est le cas, vous devez supprimer manuellement les guillemets.

Pour plus d'informations, consultez https://help.talend.com/display/KB/Verifying+default+values+in+a+retrieved+schema (en anglais).

 

Query

Saisissez votre requête Cypher entre guillemets doubles. Si vous avez des paramètres correspondant aux colonnes du schéma d'entrée, déclarez-les entre accolades ({}) et mappez-les dans la table Parameters.

 

Parameters

Cliquez sur le bouton [+] pour ajouter des paramètres correspondant à votre requête Cypher et mappez-les avec les colonnes du schéma d'entrée.

  • Parameter name : Saisissez le nom de votre paramètre entre guillemets doubles.

  • Parameter value : Sélectionnez la colonne de schéma avec laquelle vous souhaitez mapper votre paramètre.

 

Die on error

Cette case est cochée par défaut. Décochez-la pour ignorer les lignes en erreur et terminer le processus avec les lignes sans erreur.

Advanced settings

tStatCatcher Statistics

Cochez cette case pour collecter les données de log au niveau du Job ainsi qu'au niveau de chaque composant.

 

Commit every

Saisissez le nombre de lignes à compléter avant de commiter les lots de nœuds dans la base de données. Cette options assure la qualité de la transaction (mais pas le rollback) et permet une meilleure performance lors de l'exécution.

Avertissement

Cette option est supportée uniquement par le mode embarqué de la base de données. Vous ne pouvez pas effectuer de transactions en mode REST.

Global Variables

NB_NODE_INSERTED : nombre de nœuds insérés. Cette variable est une variable After et retourne un long.

NB_RELATIONSHIP_INSERTED : nombre de relations insérées. Cette variable est une variable After et retourne un long.

NB_PROPERTY_UPDATED : nombre de propriétés mises à jour. Cette variable est une variable After et retourne un long.

NB_NODE_DELETED : nombre de nœuds supprimés. Cette variable est une variable After et retourne un long.

NB_RELATIONSHIP_DELETED : nombre de relations supprimées. Cette variable est une variable After et retourne un long.

ERROR_MESSAGE : message d'erreur généré par le composant lorsqu'une erreur survient. Cette variable est une variable After et retourne une chaîne de caractères. Cette variable fonctionne uniquement si la case Die on error est décochée, si le composant a cette option.

Une variable Flow fonctionne durant l'exécution d'un composant. Une variable After fonctionne après l'exécution d'un composant.

Pour renseigner un champ ou une expression à l'aide d'une variable, appuyez sur les touches Ctrl+Espace pour accéder à la liste des variables. A partir de cette liste, vous pouvez choisir la variable que vous souhaitez utiliser.

Pour plus d'informations concernant les variables, consultez le Guide utilisateur du Studio Talend.

Utilisation

Ce composant peut être utilisé en standalone ou tant que composant de sortie dans un Job.

Scénario 1 : Créer des nœuds avec un libellé à l'aide d'une requête Cypher

Ce scénario décrit un Job qui, à l'aide d'une requête Cypher, crée des nœuds avec un libellé dans une base de données Neo4j embarquée, puis affiche quelques propriétés du nœud défini dans la console.

Ajouter et relier les composants

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

    • un composant tNeo4jConnection, pour ouvrir une connexion à une base de données Neo4j,

    • un composant tNeo4jRow, pour créer des nœuds dans la base de données Neo4j à l'aide d'une requête Cypher,

    • un composant tNeo4jIntput, pour lire les propriétés définies des nœuds créés,

    • un composant tLogRow, pour afficher les données dans la console Run et

    • un composant tNeo4jClose, pour fermer la connexion à la base de données Neo4j établie par le composant tNeo4jConnection.

  2. Reliez le composant tNeo4jConnection au composant tNeo4jRow à l'aide d'une connexion de type Trigger > On Subjob Ok.

  3. Reliez le composant tNeo4jRow au composant tNeo4jIntput à l'aide d'une connexion de type Trigger > On Subjob Ok.

  4. Reliez le composant tNeo4jIntput au composant tLogRow à l'aide d'une connexion de type Row > Main.

  5. Reliez le composant tNeo4jIntput au composant tNeo4jClose à l'aide d'une connexion de type Trigger > On Subjob Ok.

Configurer les composants

Configurer une connexion à une base de données Neo4j et la création de nœuds

  1. Double-cliquez sur le composant tNeo4jConnection pour ouvrir sa vue Basic settings dans la vue Component.

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

  3. Dans le champ Database path, spécifiez le répertoire pour vos fichiers de données, "E:/Talend/DB/Neo4j/data" dans cet exemple.

    Dans cet exemple, utilisez Neo4j en mode embarqué. Pour vous connecter à un serveur Neo4j distant via REST, cochez la case Use a remote server et spécifiez l'URL du serveur Neo4j.

  4. Double-cliquez sur le composant tNeo4jRow pour ouvrir sa vue Basic settings dans la vue Component.

  5. Cochez la case Use an existing connection pour réutiliser la connexion à la base de données Neo4j ouverte par le composant tNeo4jConnection, qui est le seul composant de connexion utilisé dans cet exemple.

  6. Dans le champ Query, renseignez la requête Cypher que le composant doit exécuter.

    Dans cet exemple, saisissez la requête suivante pour créer deux nœuds avec pour libellé Managers et trois propriétés - id, name et position :

    "CREATE (a:Managers { id: 1, name: 'Gerald White', position: 'HR directory'})
    CREATE (b:Managers { id: 2, name: 'Jimmy Black', position: 'Sales manager'})"

    Étant donné que ce composant n'a pas de flux d'entrée, laissez le schéma et les paramètres vides.

Configurer la récupération et l'affichage des données

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

  2. Cochez la case Use an existing connection pour réutiliser la connexion ouverte par le composant tNeo4jConnection.

  3. Cliquez sur le bouton [...] à côté de Edit schema et définissez le schéma correspondant aux propriétés du nœud que vous souhaitez récupérer et afficher. Dans cet exemple, le schéma est composé de deux colonnes, name et position, toutes les deux de type String.

    Lorsque vous avez terminé, cliquez sur OK pour fermer la boîte de dialogue [Schema] et propager le schéma au composant suivant.

    Les colonnes définies du schéma apparaissent automatiquement dans la table Mapping.

  4. Dans le champ Query, saisissez la requête Cypher de sorte qu'elle corresponde aux données à lire de la base de données Neo4j. Dans cet exemple, utilisez la requête Cypher suivante pour trouver le nom et la position du manager dont l'ID est 2.

    "MATCH (ee:Managers{id:2}) RETURN ee.name, ee.position;"

    ou

    "MATCH (ee:Managers) WHERE ee.id = 2 RETURN ee.name, ee.position;"
  5. Renseignez le champ Return parameter pour chaque colonne de schéma avec un paramètre de retour entre guillemets doubles afin de mapper les propriétés du nœud dans la base de données Neo4j avec les colonnes du schéma.

  6. Double-cliquez sur le composant tLogRow afin d'ouvrir sa vue Basic settings et sélectionnez l'option Table (print values in cells of a table) pour afficher les informations récupérées dans la table.

Exécuter le Job

  1. Appuyez sur Ctrl+S pour enregistrer le Job.

  2. Appuyez sur F6 ou cliquez sur Run dans la vue Run pour exécuter le Job.

    Deux nœuds sont créés dans la base de données Neo4j d'après votre requête Cypher et les fichiers de données sont écrits dans le répertoire spécifié. En outre, les informations définies sont récupérées et affichées dans la console.

Scénario 2 : Importer des données dans une base de données Neo4j à partir d'un fichier CSV à l'aide d'une requête Cypher

Ce scénario décrit un Job qui importe des données concernant des employés dans une base de données Neo4j à partir d'un fichier CSV, à l'aide d'une requête Cypher, puis affiche les informations dans la console.

Ajouter et lier les composants

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

    • un composant tNeo4jConnection, pour ouvrir une connexion à une base de données Neo4j,

    • un composant tFileInputDelimited, pour lire les données source d'un fichier CSV,

    • un composant tNeo4jRow, pour écrire les données des employés dans la base de données Neo4j à l'aide d'une requête Cypher,

    • un composant tNeo4jIntput, pour lire les données des employés de la base de données Neo4j,

    • un composant tLogRow, pour afficher les données dans la console Run et

    • un composant tNeo4jClose, pour fermer la connexion à la base de données Neo4j ouverte par le composant tNeo4jConnection.

  2. Reliez le composant tNeo4jConnection au composant tFileInputDelimited à l'aide d'une connexion de type Trigger > On Subjob Ok.

  3. Reliez le composant tFileInputDelimited au composant tNeo4jRow à l'aide d'une connexion de type Row > Main.

  4. Reliez le composant tFileInputDelimited au composant tNeo4jIntput à l'aide d'une connexion de type Trigger > On Subjob Ok.

  5. Reliez le composant tNeo4jIntput au composant tLogRow à l'aide d'une connexion de type Row > Main.

  6. Reliez le composant tNeo4jIntput au composant tNeo4jClose à l'aide d'une connexion de type Trigger > On Subjob Ok.

  7. Nommez les composants afin de mieux identifier leur rôle dans le Job.

Configurer les composants

Configurer une connexion à une base de données Neo4j

  1. Double-cliquez sur le composant tNeo4jConnection pour ouvrir sa vue Basic settings dans la vue Component.

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

  3. Cochez la case Use a remote server et spécifiez l'URL du serveur Neo4j dans le champ Server URL, "http://localhost:7474/db/data" dans cet exemple.

    Dans cet exemple, vous utilisez Neo4j en mode REST. Pour vous connecter à un serveur Neo4j distant en mode embarqué, décochez la case Use a remote server et spécifiez le répertoire des données Neo4j dans le champ Database path.

Configurer l'import de données

  1. Double-cliquez sur le composant tFileInputDelimited afin d'ouvrir sa vue Basic settings dans la vue Component.

  2. Dans le champ File name/Stream, spécifiez le chemin d'accès au fichier CSV qui contient les données sur les employés à lire.

    Le fichier d'entrée CSV utilisé dans cet exemple se présente de la manière suivante :

    employeeID;employeeName;age;hireDate;salary;managerID
    1;Rutherford Roosevelt;38;06-10-2008;13336.58;m5
    2;Warren Adams;43;05-22-2008;11626.68;m6
    3;Andrew Roosevelt;55;04-01-2007;10052.95;m4
    4;Herbert Quincy;54;06-14-2007;10694.71;m6
    5;Woodrow Polk;33;08-14-2007;13751.50;m4
    6;Theodore Johnson;47;01-26-2008;12426.87;m6
    7;Benjamin Adams;32;02-25-2008;10438.65;m4
    8;Woodrow Harrison;51;10-11-2008;11188.27;m5
    9;George Truman;40;04-28-2008;14254.49;m5
    10;Harry Jackson;38;04-01-2008;12798.78;m6
  3. Dans le champ Header, spécifiez le nombre de lignes considérées comme étant des lignes d'en-tête à sauter. Dans cet exemple, la première ligne du fichier CSV est la ligne d'en-tête.

  4. Cliquez sur le bouton [...] à côté de Edit schema pour ouvrir la boîte de dialogue [Schema] et définissez le schéma d'entrée selon la structure du fichier d'entrée. Dans cet exemple, le schéma d'entrée est composé de six colonnes : employeeID (Entier), employeeName (Chaîne de caractères), age (Entier), hireDate (Date), salary (Double), and managerID (Chaîne de caractères).

    Lorsque vous avez terminé, cliquez sur OK pour fermer la boîte de dialogue [Schema] et propager le schéma au composant suivant.

  5. Double-cliquez sur le composant tNeo4jRow pour ouvrir sa vue Basic settings dans la vue Component.

  6. Cochez la case Use an existing connection pour réutiliser la connexion à la base de données Neo4j ouverte par le composant tNeo4jConnection, qui est le seul composant de connexion utilisé dans cet exemple.

  7. Dans le champ Query, saisissez la requête Cypher que le composant doit exécuter.

    Dans cet exemple, renseignez les requêtes suivantes pour créer des nœuds avec le nom Employees et six propriétés afin de contenir les données du flux d'entrée :

    • ID, qui prend la valeur de la variable id,

    • Name, qui prend la valeur de la variable name,

    • Age, qui prend la valeur de la variable age,

    • HireDate, qui prend la valeur de la variable hire_date,

    • Salary, qui prend la valeur de la variable salary et

    • ManagerID, qui prend la valeur de la variable manager_id.

    "CREATE (n:Employees{ID:{id}, Name:{name}, Age:{age}, HireDate:{hire_date}, Salary:{salary}, ManagerID:{manager_id}})"
  8. Dans la table Parameters, renseignez les variables dans le champ Parameter, conformément à votre requête Cypher et mappez chacune d'entre elle avec une colonne du schéma d'entrée en la sélectionnant dans la liste de champs Parameter value.

Configurer la récupération et l'affichage des données

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

  2. Cochez la case Use an existing connection pour réutiliser la connexion ouverte par le composant tNeo4jConnection.

  3. Cliquez sur le bouton [...] à côté de Edit schema et définissez le schéma correspondant aux propriétés du nœud que vous souhaitez récupérer et afficher.

    Lorsque vous avez terminé, cliquez sur OK pour fermer la boîte de dialogue [Schema] et propager le schéma au composant suivant.

    Les colonnes définies du schéma apparaissent automatiquement dans la table Mapping.

  4. Dans le champ Query, saisissez la requête Cypher de sorte qu'elle corresponde aux données à lire de la base de données Neo4j. Dans cet exemple, utilisez la requête Cypher suivante pour récupérer toutes les données de tous les nœuds avec le nom Employees.

    "MATCH (n:Employees) RETURN *;"
  5. Renseignez le champ Return parameter pour chaque colonne de schéma avec un paramètre de retour entre guillemets doubles afin de mapper les propriétés du nœud dans la base de données Neo4j avec les colonnes de schéma.

  6. Double-cliquez sur le composant tLogRow afin d'ouvrir sa vue Basic settings et sélectionnez l'option Table (print values in cells of a table) pour afficher les informations récupérées dans une table.

Exécuter le Job

  1. Appuyez sur Ctrl+S pour enregistrer le Job.

  2. Appuyez sur F6 ou cliquez Run dans la vue Run pour exécuter votre Job.

    Les données concernant les employés dans le fichier CSV sont écrites dans la base de données Neo4j et affichées dans la console.

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

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.