Un poco de Open Refine (parte I)

Fue allá por 2010 cuando conocí esta herramienta (ver post), que a día de hoy me resulta tan interesante como me lo pareció por aquel entonces. En ese momento ya se estaba haciendo la transición de GoogleRefine a OpenRefine…y han tenido que pasar casi otros 10 años más para que vuelva a resultarme una herramienta de interés…

Open Refine es una herramienta Java open-source (licencia BSD-3) 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.

Primero hay que avisar que el concepto de OpenRefine es que puedas hacer las transformaciones desde tu propio ordenados, sólo que en lugar de usando una aplicación cliente rico lo hagas desde tu navegador (aunque como siempre, hay formas de llevarse este concepto al Cloud).

OpenRefine se encuentra en github: https://github.com/OpenRefine

Para encontrar más información podéis acceder a su wiki: https://github.com/OpenRefine/OpenRefine/wiki/Documentation-For-Users

Un poco de Historia

Cuando Google cedió el software a la comunidad le costó arrancar, para que os hagáis una idea:

https://github.com/OpenRefine/OpenRefine/releases

AÑO VERSIÓN DETALLES
2013 Google Refine 2.5 Última versión con Branding de Google
2015 Open Refine 2.6-RC1 Tardan 2 años en generar una Release Candidate de la que no salió versión final
2017 Open Refine 2.7 Release

Open Refine 2.8 Release

Por fin tenemos una release, bueno 2
2018 Open Refine 3.0 Release

Open Refine 3.1 Release

Han pasado 5 años hasta que haya una versión major de Open Refine
2019 Open Refine 3.2 Release
2020 Open Refine 3.3 Release

La versión actual es la 3.4-beta2 (sacada el 4 de julio), antes estuvo la 3.4-beta1 de mayo.

Como se puede ver desde 2018/2019 se nota que el proyecto se ha reactivado.

Cómo instalar OpenRefine

Hemos dicho OpenRefine está pensado para usarse en el PC local, por lo que para usarlo basta con que descarguéis la distribución para vuestro sistema operativo.

En la página de releases encontraréis los instaladores para cada uno.

Yo he comenzado con la versión 3.4-beta2 que podéis descargar desde aquí:

https://github.com/OpenRefine/OpenRefine/releases/tag/3.4-beta2

En el caso de Windows podéis optar con una versión con o sin máquina virtual Java, para los newbies os recomiendo esta: https://github.com/OpenRefine/OpenRefine/releases/download/3.4-beta2/openrefine-win-with-java-3.4-beta2.zip

Una vez descargado el fichero basta con que lo descomprimáis en una carpeta y ejecutéis el fichero openrefine.exe (o el .bat si queréis cambiar algún parámetro).

Pasando unos segundos se os abrirá un navegador en http://127.0.0.1:3333 con este aspecto:

Cómo usar OpenRefine

Una vez instalado y desde la página principal lo primero que tengo que hacer es crear un proyecto, que en esencia cargar un archivo, como veis en la imagen se puede cargar desde un fichero local, URL,… y además se soportan diversos formatos: JSON, XML, XLS, RDF,…

Para el ejemplo me basaré en este fichero: https://www.iwight.com/documentlibrary/download/transparency-data-april-2013-csv

NOTA: Podéis encontrar muchos artículos con ejemplos aquí.

Así que seleccionaré este fichero y pulsaré Next:

Una vez cargado me encontraré con una UI como esta, desde la que puedo hacer algunas transformaciones previas a la carga del fichero en mi proyecto

Por ejemplo puedo ignorar la primera línea si esta tiene las cabeceras o descartar filas en blanco:

O intentar transformar las columnas a su tipo…no vamos a hacer esto porque lo haremos en una fase posterior.

Concluiremos creando el proyecto:

Una vez creado el proyecto me encuentro con este UI:

Donde veris que veo los primeros registros del fichero/proyecto, en este ejemplo tenemos 11285 registros.

Vemos también que cada columna tiene un desplegable y que a la izquierda me aparece un recuadro para poder dar marcha atrás y ver Los Facets.

Si me voy a la columna Amount puedo ver las opciones que tengo: Facet, Filtros, editar celdas, columnas, transponer, ordenar, reconciliar.

Empezaré por decir que esta columna es de tipo numérico:

Ahora veré los datos formateados como números, sin embargo esto no significa que todos sean números, ahora le aplicar un Facet si selecciono Numeric Facet

En la parte izquierda veré que tengo 2244 datos que no son numéricos

Y si dejo sólo el check de Non-numeric en mi tabla veré 10 de estos registros, como podéis observar el problema está en que hay una coma para separar los miles y la herramienta no puede transformarlo a número:

Así que puedo transformarlo con la herramienta y su lenguaje GREL (Google Refine Expression Language). Iré a la columna Amount, seleccionaré Edit cells>Transform y en la transformación

Si aplico el filtro y vuelvo al Numeric Facet veo que ya todos los datos de mi columna son numéricos.

Puedo aplicar otras transformaciones más avanzadas, como derivar una columna desde otra aplicando transformaciones, para eso me pondré en la columna Date , seleccionaré Edit column>add column based on this column

En esta aplicaré la transformación de formato de fecha:

value.toDate(‘dd.mm.yy’).toString(‘yyyy-mm-dd’)

Y luego le aplicaré Edit cells>Commons Transformations>To date

También puedo combinar datos, reconciliarlos

Extraer transformaciones

Un concepto muy interesante de OpenRefine es que puedo extraer las transformaciones para poder aplicarlas sobre otros datos del mismo tipo (el Excel del año siguiente en este ejemplo), esto se hace desde Undo-redo/Extract

El resultado es un JSON que puedo guardar:

Y que desde la opción Apply puedo pegar y aplicar a otros ficheros:

Exportar datos

Acabamos este primer tutorial viendo cómo exportar los datos de mi proyecto. Como podréis ver OpenRefine permite exportar en numerosos formatos.

En este caso me interesa ver cómo funciona la exportación al formato nativo de OpenRefine, JSON, para uso selecciono Export>Templating

Con esto me aperecerá una ventana de este estilo donde puedo configurar el formato del JSON exportado, por defecto me propone:

pero puedo configurarlo para hacer una exportación a mi medida:

En el próximo post sobre Open Refine hablaremos sobre otros de sus conceptos, como las extensiones, GREL,…

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s