Workshop uso del Data Refiner
- 1 Descripción
- 2 Tecnología en que se basa Data Refiner
- 3 Uso desde la interfaz de usuario
- 3.1 Ejemplo 1 Ingestar ficheros url externa
- 3.2 Ejemplo 2 Ingestar ficheros locales
- 3.3 Ejemplo 3 transformación sencilla
- 3.4 Ejemplo 4 transformaciones más avanzadas
- 3.5 NOTA
- 3.6 Ejemplo 5 Exportar datos a distintos formatos
- 3.7 Ejemplo 6 Exportar datos a la plataforma
- 3.8 Ejemplo 7 Pivotar datos
- 3.9 Ejemplo 8 Importar datos desde una conexión con onesaitplatform
- 4 Refinar ficheros desde el api datarefiner
Descripción
Con el objetivo de incorporar nuevas capacidades de Data Governance en Plataforma se ha incluido un nuevo módulo, denominado DataRefiner accesible desde la entrada de menú Gobierno del Dato.
El objetivo de este componente es “refinar” la información que se carga o que se extrae de plataforma. Para esto permite:
Que un usuario final cargue desde una UI datos desde diversos lugares, por ejemplo desde su propio PC, 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,…
El usuario puede trabajar con estos datos con un interfaz “Excel-like” 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 plataforma como Entidad.
Tecnología en que se basa Data Refiner
Nuestro DataRefiner se basa en el software OpenRefine al que se le han añadido un conjunto de extensiones para trabajar con la plataforma.
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 ordenador, pero en lugar de utilizar una aplicación lo hagas desde tu navegador
OpenRefine se encuentra en github: OpenRefine
Para encontrar más información podéis acceder a su wiki: https://github.com/OpenRefine/OpenRefine/wiki/Documentation-For-Users
y al manual de usuario
Uso desde la interfaz de usuario
Ejemplo 1 Ingestar ficheros url externa
Ingestar ficheros por interfaz de usuario desde una url externa.
Url del ejemplo: https://www.iwight.com/documentlibrary/download/transparency-data-april-2013-csv
Ejemplo 2 Ingestar ficheros locales
Ingestar ficheros por interfaz de usuario desde el PC.
Ejemplo 3 transformación sencilla
Transformamos la columna Amount al tipo numérico.
Edit cells>Common transforms>to number
Algunos de los registros no se han transformado bien por lo que ahora le aplicaré un Facet seleccionando en la columna amount:
Facet>Numeric Facet
Vemos que hay elementos que no se han transformado porque hay una coma en los separadores de los miles.
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 indicaré value.replace(',','')
Repetimos:
Edit cells>Common transforms>to number
y vemos que ya todos están en formato númerico.
Ejemplo 4 transformaciones más avanzadas
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
NOTA
Utilizaremos Extract… para obtener el historial de cambios realizados sobre el proyecto para poder aplicarlos en otros proyectos con la misma estructura, también para poder usarlos en el api rest que podemos invocar del datarefiner de la plataforma.
Ejemplo 5 Exportar datos a distintos formatos
Mostraremos como exportar datos a distintos formatos de fichero.
Ejemplo 6 Exportar datos a la plataforma
Exportar datos a la plataforma creando una ontología nueva.
El token se rellena con el oauth token, marcamos new ontology y le damos un nombre.
Ejemplo 7 Pivotar datos
Creamos un proyecto con el fichero.
Seleccionaré la columna Country Name y seleccionaré Transpose>Transpose cells across columns into rows
Separamos la columna year en dos columnas:
Edit column>Split into several columns
Renombramos las columnas a year y a life expectancy.
Ejemplo 8 Importar datos desde una conexión con onesaitplatform
Formulario de conexiones
Use Proxy, Proxy y ProxyPort: Se rellenarán en caso de tener que utilizar un proxy.
Name: Será el nombre de la conexión.
Host: El Host de la plataforma en este caso estamos indicando la del lab.onesaitplatform.com
User: Usuario de la Onesait platform con el que se pretende conectar para tener acceso a sus recursos.
Vertical: En caso de usar verticales debe rellenarse.
Password: Contraseña del usuario para acceder a la plataforma.
Nos conectaremos y aparece editor de consultas.
Obtendremos los datos de la entidad de ejemplo Helsinkipopulation
Dependiendo de la consulta ontendremos los datos de una manera u otra.
Select * from…
Select Helsinki from…
Refinar ficheros desde el api datarefiner
Podemos realizar las mismas operaciones que realizamos desde la interfaz de usuario, para lo cual tan sólo tenemos que rellenar el campo operations con los pasos que podemos obtener de una manera sencilla pulsando el botón Extract… desde la interfaz de usuario. Pondremos unos ejemplos:
Ejemplo 1 uso desde api
refinaremos el fichero que hemos usado para el ejemplo de pivote, añadiendo las operaciones que realizamos anteriormente
{ "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" }
y seleccionando como exportype html por ejemplo.