/
Workshop de uso de DataRefiner

Workshop de uso de DataRefiner

Disponible desde la versión 2.3.0-Immortal

Introducción

Con el objetivo de incorporar en Onesait Platform nuevas capacidades de Data Governance, se ha incluido un nuevo módulo denominado DataRefiner, cuyo objetivo es el de «refinar» la información que se carga o que se extrae de la Plataforma.

Este módulo va a permitir:

  • Que un usuario cargue desde una interfaz de usuario datos desde diversos orígenes, como por ejemplo desde su propio ordenador, desde una URL o bien desde información residente en la propia Plataforma.

  • La herramienta permite cargar datos en los principales formatos, entre ellos Excel, XML, JSON, CSV, etc.

  • El usuario puede trabajar con estos datos con un interfaz excel like para realizar un perfilado de los datos, incluyendo limpieza, mejora, reestructuración o conciliación de estos.

  • Los datos «refinados» podrán descargarse como ficheros o bien cargarse en una Entidad de la Plataforma.

image-20250321-073312.png

Tecnología en que se basa DataRefiner

El módulo de DataRefiner se basa en OpenRefine, una herramienta Java open source con licencia BSD-3 y basada en Java, que con un interfaz web al estilo Excel permite cargar datos provenientes de diferentes sitios y en diferentes formatos, entenderlos, limpiarlos, conciliarlos y mejorarlos.

OpenRefine, como proyecto de código abierto, se encuentra disponible en GitHub para su descarga. Para poder integrarla en Onesait Platform, se han desarrollado una serie de extensiones que la han optimizado y hecho compatible.

La documentación del proyecto se encuentra disponible desde su página web, por lo que si se está interesado en conocer cómo iniciar un proyecto, explorar y transformar datos o exportar los resultados, os recomendamos acudir a ella.

Cómo usar DataRefiner

Este módulo se encuentra disponible en el menú de Machine Learning e IA > Herramienta Data Refiner.

image-20250321-073701.png

Crear un proyecto desde una URL externa

Para este ejemplo se hará uso de este dataset de datos en formato CSV perteneciente al ayuntamiento de isla de Wight: https://www.iwight.com/documentlibrary/download/transparency-data-april-2013-csv

Tras acceder a la herramienta, se mostrará el listado de proyectos disponibles. Para crear uno nuevo, se pulsará en el botón de «Create» situado en la parte superior derecha de la pantalla.

image-20250321-082322.png

Se mostrará entonces un listado con los distintos orígenes de datos. De este las opciones, se seleccionará la de «Web Addresses (URLs)»

image-20250321-082921.png

Una vez introducida la URL del archivo CSV comentado previamente, se pulsará en el botón de «Next»:

image-20250321-083544.png

Se mostrará una pantalla durante unos segundos indicando que se está cargando la información, para a continuación mostrarse todos los datos en formato tabla:

image-20250321-083703.png

Esta pantalla forma parte del análisis de datos, pudiendo configurar cómo se cargan los datos y definir el formato en el que vienen. Por ello, en la parte inferior de la pantalla se cuenta con una serie de opciones de configuración de la carga, que será común a todos los orígenes de datos.

image-20250321-084408.png

Una vez que los datos estén tal como se necesiten, se pulsará en el botón de «Create Project»:

image-20250321-085529.png

Aparecerá una mensaje indicando que se está creando el proyecto, e inmediatamente en cuanto se termine de generá, se mostrará el proyecto, con un ejemplo de diez registros.

image-20250321-091805.png

Para regresar al listado de proyectos, únicamente habrá que pulsar en el botón de «Back»:

image-20250321-092836.png

En el listado de proyectos se podrá ver el nuevo proyecto que se acaba de crear:

image-20250321-093009.png

Otros ejemplos de uso

A continuación se muestran una serie de ejemplos de uso de DataRefiner con diferentes orígenes.

Ingestar archivos locales

En este ejemplo, se generará un proyecto como en el caso anterior, pero en este caso el origen de los datos no será una URL, sino que vendrán de un archivo CSV existente en el ordenador.

Para ello, se podrá usar el siguiente CSV, que corresponde con el CSV utilizado en el ejemplo anterior:

Una vez descargado en local, se creará un nuevo proyecto, seleccionando en este caso la opción de «This Computer»:

image-20250321-102714.png

Una vez seleccionado el archivo CSV, se pulsará en el botón de «Next»:

image-20250321-103232.png

Como en el caso anterior, se mostrará una pantalla durante unos segundos indicando que se está cargando la información, para a continuación mostrarse todos los datos en formato tabla:

image-20250321-103412.png

Transformaciones sencillas

En este ejemplo se va a transformar el tipo de una columna de tipo numérico a tipo string.

Para ello, se hará uso de uno de los proyectos creados previamente a partir de los datos de la isla de Wight. Desde el listado de proyecto, se seleccionará uno de ellos. En la parte derecha se verá la tabla con diez registros de vista previa. Se va a trabajar con la columna de nombre «Amount».

Pulsando en el icono de «▼» sobre la columna, se desplegarán las opciones disponibles.

image-20250321-104748.png

Se busca transformar las celdas de datos de números a texto, por lo que para ello se navegará a Edit cells > Common transforms > To number.

image-20250321-104937.png

Tras ejecutar la transformación, se mostrará una notificación indicando la realización de la transformación, y del número de registros transformados:

image-20250321-105030.png

El total de registros es de 11.285, mientras que la transformación se ha realizado en 9.041 registros, por lo que quedan registros sin transformar. Para analizar qué es lo que ha pasado, se aplicará un facet. Para ello, en la columna en la que se está trabajando se seleccionará la opción de Facet > Numeric facet.

image-20250321-105410.png

En la parte izquierda se mostrará entonces una gráfica de distribución de datos, en la que se muestra información sobre el número de registros numéricos, no numéricos, vacíos y que den error:

image-20250321-105615.png

Acotando la distribución de datos, y fijándose en la columna de «Amount», se verá que la vista previa de datos se actualiza y que se muestra de un modo parecido a esto:

image-20250321-111940.png

Aquí se puede ver que el problema está en la presencia de «comas» como separadores de miles, lo que genera que causa que la transformación no se lleve a cabo. Para solucionarlo, se tendrá que eliminar dichos caracteres de «coma».

Para ello, en las opciones de la columna se navegará hasta el menú Edit cells >Transform.

image-20250321-112516.png

Aparecerá entonces una ventana en la que se podrá introducir un código que lleve a cabo la transformación.

image-20250321-112736.png

Es posible utilizar diferentes lenguajes, como GREL, Python o Clojure. En este caso se va a utilizar GREL (General Refine Expression Language).

image-20250321-112754.png

Para realizar la conversión se utilizará un comando de reemplazo:

value.replace(',','')

En la ventana se visualizará el valor original, y el valor transformado tras aplicar el comando, para comprobar directamente la transformación:

image-20250321-113039.png

Se pulsará en el botón de «OK» para aplicar los cambios, mostrándose una notificación indicando los cambios ocurridos.

image-20250321-113316.png

Hecho esto, se volverá a llevar a cabo la transformación de la columna de número a texto en Edit cells > Common transforms > To number. Si todo ha ido sin problemas, la notificación indicará que todas las celdas se han modificado.

image-20250321-113515.png

Se muestra el valor de 8.459 registros y no el de 10.703 debido al filtro realizado en el histograma de distribución de valores. Reiniciándolo (pulsando en «reset»), mostrará todos los datos.

image-20250321-113710.png

Transformaciones avanzadas

Es posible aplicar otra serie de transformaciones más avanzadas, como derivar una columna desde otra aplicando transformaciones.

Por ejemplo, para los datos con los que que se está trabajando en este workshop, se expandirán las opciones de la columna «Date», y se seleccionará la opción de Edit column > Add column based on this column.

image-20250321-114741.png

Aparecerá entonces una nueva ventana en la que introducir el código necesario para realizar la transformación y aplicarlo en la nueva columna.

image-20250321-114834.png

Como en el caso anterior, se puede definir diferentes lenguajes de programación a utilizar. Nuevamente se hará uso de GREL.

Se busca formatear el campo de fecha a algo más genérico, por lo que como comando se hará uso del siguiente código:

value.toDate('dd.mm.yy').toString('yyyy-mm-dd')

En la ventana se mostrará el nuevo campo con la transformación aplicada:

image-20250321-115153.png

Se pulsará en el botón de «OK» para crear la nueva columna, mostrándose una notificación indicando los cambios ocurridos.

image-20250321-115306.png

En la tabla de vista previa aparecerá la nueva columna creada -de nombre NewDate- con el formato indicado.

image-20250321-115412.png

Pivotar datos

Es posible pivotar el orden de los datos de manera sencilla. Para este ejemplo, se hará uso de este otro dataset de datos, el cual habrá que cargar como datos locales:

Una vez generado el proyecto, se mostrará una tabla con tres registros:

image-20250321-124607.png

Se va a pivotar los datos a partir de la columna «Country Name». Para ello, se abrirán las opciones de dicha columna, y se seleccionará la opción de Transpose > Transpose cells across columns into rows.

image-20250321-124746.png

Se mostrará entonces una ventana en la que se indica desde qué columna a qué columna se quiere pivotar. Ésta se configurará de la siguiente forma:

image-20250321-125006.png

Se pulsará en el botón de «Transpose» para aplicar los cambios. Como en casos anteriores, se mostrará una notificación indicando los cambios realizados:

image-20250321-125131.png

A continuación, se separará la columna «year» en dos columnas diferentes. Para ello, desde las opciones de dicha columna, se seleccionará la opción de Edit column > Split into several columns.

image-20250321-125307.png

Se muestra entonces una ventana en la que se puede configurar cómo se separará la columna.

image-20250321-130844.png

El separador en este caso será «:». Pulsando en «OK» se ejecutará la separación, mostrándose una notificación al respecto:

image-20250321-130953.png

La separación de la columna ha sido correcta. El siguiente paso será cambiar el nombre de las columnas a «Year» y «Life Expectancy». Para ello, se accederá a las opciones de las columnas y se seleccionará la opción de Edit columns > Rename this column.

image-20250321-131151.png

Se lanzará entonces un modal en el que poder introducir el nuevo nombre de la columna:

image-20250321-131530.png

Tras aceptar el nuevo nombre, se mostrará una notificación informando del cambio.

image-20250321-131615.png

Exportar datos en distintos formatos

Para exportar datos, se pulsará en el botón de «Export ▼».

image-20250321-115652.png

Se desplegará un menú con diferentes opciones y formatos para exportar.

image-20250321-115743.png

Pulsando en la opción que interese, se descarga el archivo en el formato indicado.

image-20250321-115845.png

Exportar datos a Onesait Platform

Lo normal es que, tras refinar los datos, se quiera ingestarlos en una Entidad más que descargarlos a local. Por ello, se cuenta con una extensión que permite exportar el proyecto directamente a una Entidad.

Para ello, se puede exportar tanto desde el botón de Export > EXPORT TO ONESAITPLATFORM como desde la sección de Extensions: Onesait Platorm > EXPORT TO ONESAITPLATFORM.

image-20250321-120438.png

Se mostrará entonces una ventana en la que se tendrá que introducir cierta información de configuración de la Entidad:

image-20250321-120559.png
  • Use Proxy: si la instancia se encuentra tras un proxy, se tendrá que marcar esta opción.

  • Proxy: URL del proxy. Por defecto: http://proxy.indra.es

  • ProxyPort: el puerto del proxy. Por defecto: 8080

  • Token: el token del usuario, para autorizar la operación.

  • OP URL Server: la URL de la instancia donde se encuentra la Plataforma en uso.

  • Ontology Name: el nombre de la Entidad.

  • New Ontology: si se quiere crear una nueva entidad, se marcará este campo.

  • Ontology Description: el texto descriptivo de la Entidad, para cuando se crea una nueva.

image-20250321-123955.png

Importar datos desde Onesait Platform

Al igual que se puede exportar los datos refinados a una Entidad, es posible importar datos de la propia Plataforma a DataRefiner.

Para ello, desde el listado de proyectos, se pulsará en el botón de «Create» situado en la parte superior derecha de la pantalla.

image-20250321-082322.png

Se mostrará entonces un listado con los distintos orígenes de datos. De este las opciones, se seleccionará la de «Onesait Platform».

image-20250321-135035.png

Se mostrará un listado de posibles conexiones ya existentes, así como la opción de crear una nueva conexión. En este segundo caso, se tendrá que introducir la siguiente información:

image-20250321-135151.png
  • Use Proxy: si la instancia se encuentra tras un proxy, se tendrá que marcar esta opción.

  • Proxy: URL del proxy. Por defecto: http://proxy.indra.es

  • ProxyPort: el puerto del proxy. Por defecto: 8080

  • Name: el nombre de la conexión a crear.

  • Host: la URL de la instancia de Onesait Platform.

  • User: el usuario con el que conectarse.

  • Vertical: el vertical de la instancia a la que conectar.

  • Password: la clave del usuario.

Tras incluir esta información, se podrá pulsar en el botón de «Test» para probar la conexión.

image-20250321-135832.png

Comprobando que funciona, se podrá salvar la conexión y conectarse mediante el botón de «Connect».

image-20250321-135917.png

Tras conectarse, aparecerá el editor de consultas. Por poner un ejemplo, se obtendrán los datos de la Entidad «Helsinkipopulation».

Dependiendo del tipo de consulta que se realice, se obtendrá los datos de una manera u otra. Así, para obtener todos los datos se ejecutará la siguiente consulta:

SELECT * FROM Helsinkipopulation

Utilizar DataRefiner mediante API REST

Se pueden realizar las mismas operaciones que se realizan desde la interfaz de usuario desde API REST. Para acceder al Swagger con las operaciones del API, se tendrá que navegar desde Control Panel al menú de APIs localizado en el menú contextual junto al nombre del usuario.

image-20250321-140342.png

Se mostrará una ventana con accesos directos a los diferentes APIs, teniendo que seleccionar el de «Control Panel»:

image-20250321-140440.png

Una vez en el Swagger, en el selector de definiciones se tendrá que elegir la de «Data Refiner»:

image-20250321-140534.png

Se mostrará entonces el API de Data Refiner con la operación /datarefiner, que será que habrá que utilizar.

Para hacer uso de esta operación, habrá que rellenar los siguientes campos:

  • Authorization: el Bearer token del usuario.

  • Operations: con los pasos que se pueden obtener de manera sencilla pulsando el botón «extract» desde la interfaz de usuario:

image-20250321-141006.png
image-20250321-141033.png
  • exportType: el formato permitido para la exportación de los datos.

  • engine:

  • importOptions: el JSON con las opciones relevantes del formato del archivo.

Definidas las opciones de la operación, únicamente quedará pendiente pulsar en el botón de «Execute» para lanzar la consulta.

Ejemplo de operación para pivotar columnas

{ "op": "core/transpose-columns-into-rows", "combinedColumnName": "year", "startColumnName": "2005", "columnCount": 5, "ignoreBlankCells": true, "fillDown": true, "prependColumnName": true, "separator": ":", "keyColumnName": null, "valueColumnName": null, "description": "Transpose cells in 5 column(s) starting with 2005 into rows in one new column named year" }, { "op": "core/column-split", "engineConfig": { "facets": [], "mode": "row-based" }, "columnName": "year", "guessCellType": true, "removeOriginalColumn": true, "mode": "separator", "separator": ":", "regex": false, "maxColumns": 0, "description": "Split column year by separator" }, { "op": "core/column-rename", "oldColumnName": "year 2", "newColumnName": "life expectancy", "description": "Rename column year 2 to life expectancy" }, { "op": "core/column-rename", "oldColumnName": "year 1", "newColumnName": "year", "description": "Rename column year 1 to year" }

 

Related content