Importe datos relacionales a Neo4j utilizando Apache Hop. Transforme sus datos con el complemento Graph Output.
Hola y bienvenido a este tutorial sobre cómo importar datos relacionales en una base de datos Neo4j usando Apache Hop.
Si estás aquí, supongo que ya conoces Neo4j y Apache Hop, digamos que tener una comprensión básica del modelo de grafo de propiedades es el único requisito para completar la tarea.
La idea es exportar datos de un sistema de base de datos relacional (usaremos PostgreSQL en este caso) e importar los datos en una base de datos Neo4j (base de datos de grafo) mediante la transformación Neo4j Graph Output (plugin de Apache Hop).
Puedes encontrar el código y los archivos en el repositorio público: how-to-apache-hop.
Podemos dividir la tarea en pequeñas piezas:
También puedes revisar nuestro post Apache Hop: Importación de datos relacionales en Neo4j - Neo4j Output, que es similar, pero en ese caso, cargamos todos los nodos, no solo los nodos con al menos una relación y usamos otro plugin de Apache Hop: Neo4j Output.
Vamos a utilizar una muestra de la base de datos PostgreSQL. La base de datos dvdrental representa los procesos comerciales de una tienda de alquiler de DVD, incluyendo datos sobre las películas, actores y datos demográficos del personal.
🗒 Para mantener el grafo más pequeño, elegimos algunas de las entidades más relevantes para nuestro grafo y que probablemente se beneficiarían al comprender las relaciones en nuestro ejemplo.
Basándonos en esto, convertimos nuestro modelo relacional a un modelo de grafo.
Nodos and Etiquetas
Relaciones
Si dibujamos nuestra traducción en una pizarra, tenemos este modelo de datos de grafo.
Puedes construir un modelo de grafo de Neo4j en Apache Hop como un objeto de metadatos. Un modelo de grafo en Apache Hop te permite crear nodos con sus atributos, así como las conexiones entre estos nodos.
La pestaña Neo4j Graph Output transformación permite mapear los campos de entrada a propiedades usando un modelo de grafo.
Así es como se configura el modelo de grafo dvdrental.
Pestaña Modelo
Pestaña Nodos
Como hicimos para el nodo Actor, configura una entrada para el resto de los nodos: Film, Category y Language.
Pestaña Relaciones
Configura todas las relaciones especificando los campos:
Como hicimos para la relación ACTS_IN, configura una entrada para el resto de las relaciones: BELONGS_TO e IN.
Pestaña Grafo
Puedes verificar visualmente el modelo que acabas de crear.
Los datos ahora se pueden importar en la base de datos Neo4j. Usando una entrada de tabla y una transformación Neo4j Graph Output, construimos un pipeline de Apache Hop:
Consulta SQL:
SELECT a.actor_id,
a.first_name,
a.last_name,
f.film_id,
f.title,
f.description,
f.rental_rate,
c.category_id,
c.name as category,
l.language_id,
l.name as language
FROM public.actor a
JOIN film_actor fa ON fa.actor_id = a.actor_id
JOIN film f ON f.film_id = fa.film_id
JOIN film_category fc ON fc.film_id = f.film_id
JOIN category c ON c.category_id = fc.category_id
JOIN language l ON l.language_id=f.language_id;
La transformación Neo4j Graph Output permite ingresar datos en la base de datos Neo4j dvdrental utilizando el modelo de grafo dvdrental de Neo4j como referencia.
Solo tenemos que mapear los conceptos siguiendo las mismas reglas.
Puedes seleccionar los campos y hacer clic en la opción Añadir o utilizar la opción Adivinar para generar todos los mapeos.
El mapeo se ve así en la imagen:
Ahora estás listo para ejecutar el pipeline:
Si tu pipeline se ejecuta con éxito, obtendrás una base de datos de grafo que contiene tus datos de dvdrental.
Vamos a explorar la base de datos de grafo que acabas de cargar.
Cypher
CALL db.schema.visualization;
Ejecuta el siguiente código Cypher para ver algunos de los nodos:
Cypher
MATCH (n) RETURN n LIMIT 15;