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,…