Hola a todos, este es un artículo instructivo en el que vamos a explicar cómo exportar datos de una base de datos Neo4j a archivos CSV utilizando el complemento de Apache Hop para Cypher.
Si estás aquí, supongo que ya conoces Neo4j y Apache Hop. Digamos que tener un entendimiento básico del modelo de gráficos de propiedades es el único requisito para completar esta tarea.
La idea es exportar datos de una base de datos Neo4j utilizando la transformación Neo4j Cypher (complemento) y cargar los datos en archivos CSV.
Este artículo es similar a "Apache Hop: exportar datos de Neo4j a CSV - Neo4j Cypher", pero en este caso exportamos los datos en formato de tabla en lugar de formato JSON utilizando la inyección de metadatos.
Puedes encontrar el código y los archivos en el repositorio público how-to-apache-hop.
Podemos dividir la tarea en pequeños pasos:
Veamos esto en una imagen:
Implementamos una solución de inyección de metadatos que puede ser utilizada sin importar la cantidad de etiquetas de nodos, y no necesitas realizar ninguna configuración manual para los campos de entrada y salida.
¿Cómo lo logramos? Utilizamos el complemento de Inyección de Metadatos y el complemento de Ejecución de Pipeline.
El primer pipeline obtendrá todas las etiquetas de nodos ejecutando una consulta Cypher y ejecutará otro pipeline (usando el ejecutor de pipelines) para generar los archivos CSV. Generaremos un archivo CSV por cada etiqueta de nodo.
El segundo pipeline se utiliza para obtener los metadatos necesarios y pasar estos metadatos en tiempo de ejecución a una plantilla de pipeline.
La plantilla extraerá los datos de los nodos utilizando una consulta Cypher y generará un archivo CSV por cada etiqueta de nodo.
Vamos a utilizar una base de datos de grafos de ejemplo Neo4j creada en publicaciones anteriores.
La base de datos de grafos de dvdrental representa los procesos comerciales de una tienda de alquiler de DVD, incluidos datos sobre las películas, actores y datos demográficos del personal.
El esquema de la base de datos de grafos de dvdrental:
Exportaremos los datos de los nodos en este caso:
Deberíamos obtener como resultado un archivo CSV con los datos de los nodos en un formato de tabla.
Primero, configure una transformación Cypher para obtener las etiquetas de los nodos.
Pestaña de opciones
Establezca el nombre de la transformación y seleccione la conexión a la base de datos Neo4j.
Nombre de la transformación: el nombre para esta transformación en el flujo de trabajo (read-labels).
Conexión de Neo4j: selecciona la conexión de Neo4j para escribir en el gráfico (neo4j-connection).
Pestaña Cypher
Escribe la consulta Cypher.
La segunda canalización extraerá los datos del nodo y generará un archivo CSV con el nombre de la etiqueta.
Demos un paso atrás. Hasta ahora, tenemos todas las etiquetas (labels) que necesitamos para construir la consulta Cypher para pasar como metadatos a la plantilla de la canalización, pero también necesitamos construir los campos de salida y los tipos de datos para cada consulta Cypher.
Para hacerlo, necesitamos todas las propiedades asociadas con una etiqueta (label).
Ejemplo
Configure una transformación Cypher para obtener las propiedades por etiqueta (label).
Pestaña Options
Pestaña Cypher
Consulta Cypher
CALL db.schema.nodeTypeProperties;
Pestaña Return
Si ejecutas la consulta en tu base de datos Neo4j, obtendrás el siguiente resultado:
Ahora, tenemos todas las etiquetas almacenadas en el campo de etiqueta y todas las propiedades, por lo que podemos:
Aplicamos todos estos cambios en el siguiente bloque de transformaciones:
Puedes verificar los resultados revisando los registros. Para la etiqueta (Label) Language, por ejemplo, obtenemos los siguientes valores:
Finalmente, configuramos la transformación de Inyección de Metadatos. Pero, ¿qué campos necesitamos como metadatos?
La plantilla de la canalización extraerá los datos de nodo de la base de datos de grafos dvdrental con una transformación Neo4j Cypher y generará un archivo CSV con una transformación de salida de archivo de texto.
Transformación Text file output
Para hacerlo, configure la transformación de Inyección de Metadatos de la siguiente manera:
A continuación, configure el transformador Neo4j Cypher para obtener los datos utilizando el campo cypher previamente creado que almacena la consulta.
Pestaña Options
Finalmente, configura la transformación Salida de texto (Text output).
Pestaña File
Si la canalización principal se ejecuta correctamente, obtendrás un archivo CSV que contiene los datos de cada tipo de nodo: