Descripción Breve:

Enterprise Data Analytics, en adelante EDA, es una aplicación web desarrollada por Jortilles  para el análisis y visualización de datos.   EDA es una aplicación web especialmente diseñada para que sea fácil de utilizar por usuarios de negocio sin conocimientos técnicos.

EDA es una aplicación web moderna desarrollada bajo los patrones de diseño actuales, siendo responsiva y adaptativa.

EDA permite generar modelos lógicos sobre una base de datos relacional. Aplicar seguridad a nivel de datos y realizar informes sobre ese modelo lógico.

A continuación se muestra un ejemplo de un informe realizado con EDA.

1.   Principales Funcionalidades

A continuación se describen las principales características  y funcionalidades de EDA

Creación de modelos lógicos

EDA permite realizar un modelo lógico de datos a partir del cual, los usuarios, podrán realizar informes de forma sencilla e intuitiva.

Un usuario administrador puede generar modelos de datos. Para generar un modelo de datos un usuario administrador deberá configurar una conexión a base de datos  y darle un nombre:

Una vez proporcionados los datos de conexión EDA generará un modelo lógico de forma automática. Generando:

  • Entidades a partir de las tablas y atributos a partir de las columnas.
  • Relaciones entre las diferentes tablas a partir de columnas con el mismo nombre y formato de id ( campos que contengan id_, o fk_, o code, o nk_ )
  • Si marcamos la opción “Optimizar Consultas” tendremos también estadísticas de tamaños de las tablas que se utilizarán para asesorar al usuario a la hora de realizar informes. Previniendo consultas pesadas innecesarias.

Generando un modelo lógico enriquecido con nombres y descripciones que permitirán al usuario de negocio conocer perfectamente el contenido del modelo de datos. 

Los modelos de datos se pueden enriquecer con:

  • Vistas a nivel de modelo: Pudiendo definir vistas a nivel de modelo lógico que se comporten cómo nuevas tablas. Esto es especialmente recomendable cuando se tienen consultas complejas que se usan de forma recurrente. Se puede definir una vista a nivel de modelo lógico.
  • Generación de entidades a partir de un csv: Pensado para entornos dinámicos. Se puede generar una nueva entidad en el modelo a partir de un csv de datos. Esta funcionalidad carga los datos del csv en una tabla de base de datos. Esta funcionalidad está habilitada solamente con modelos definidos con Postgresql.
  • Mapas: Se pueden subir archivos geojson y vincularlo a uno (o varios atributos) de forma que se puedan generar mapas de capas vinculados a esos atributos.

Los modelos de datos se pueden securizar a nivel de datos permitiendo definir seguridad a nivel de registro. La seguridad se aplica al usuario de la sesión.

Conectores

Los conectores a los diferentes sistemas gestores de bases de datos se han desarrollado de forma modular. De este modo incorporar una nueva conexión a un origen nuevo es sencillo de implementar.

En el momento de escribir este documento EDA se conecta a:

  • Oracle
  • SqlServer
  • MySql
  • Postgres
  • Vertica
  • Google Big Query

Personalización del modelo

EDA genera el modelo de datos de forma automatizada. Pero esto es sólo una ayuda. El modelo de datos se puede personalizar:

  • Ocultando tablas
  • Ocultando columnas técnicas que no tienen por qué salir en el modelo
  • Cambiando los nombre de las tablas o columnas
  • Generando descripciones significativas
  • Creando o eliminando relaciones entre tablas

Pantalla principal

La aplicación está diseñada para que sea especialmente sencilla de utilizar. Contando con una pantalla principal clara e intuitiva. Disponiendo de las principales funcionalidades a un solo clic de distancia:

Pudiendo generar un nuevo informe (1) o acceder a un informe ya definido dependiendo del nivel de visibilidad existente (2)

Creación de informes

Para crear un nuevo informe tan sólo hay que clicar sobre el botón “nuevo informe” de la pantalla principal.

Tras lo cual hay que darle un nombre y escoger el modelo de datos sobre el que se realizará el informe.

Una vez configurado el informe se genera un “informe en blanco” con el título y un primer panel disponible.

Un informe se configura añadiendo paneles. Los paneles son los contenedores donde ubicaremos los diferentes objetos.

Un informe se compone por:

  • Paneles: Un panel es un contenedor donde ubicaremos un objeto de consulta. Visualizando un gráfico, un mapa, un indicador, etc.
  • Filtros: Los filtros se ubican en la parte superior del informe y pueden aplicar a uno o varios paneles. Los filtros son multi-selectores y pueden ser específicos de fechas.
  • Textos: EDA permite tener textos explicativos en los informes para ubicar aclaraciones en los mismos.

Para configura un panel hay que clicar en el botón ubicado en la parte superior derecha del panel. Una vez abierta la ventana de opciones se puede editar la consulta sobre el modelo de datos.

La interfaz para configurar una consulta de un panel está especialmente diseñada para ser intuitiva. Presentando entidades y atributos con nombres definidos en el modelo de datos y expresados en términos entendibles por el usuario

Un usuario tan sólo deberá escoger una entidad, un atributo de dicha entidad y arrastrar el campo a la casilla de selección.

En caso de que se quiera definir un filtro aplicable a la consulta del panel  se deberá arrastrar el atributo a la casilla de los filtros.

Para filtrar por un valor de un atributo habrá que clicar sobre el atributo ubicado en la barra de selección o en la barra de filtro y definir el filtro deseado.

Una vez definidos los atributos que deseamos visualizar y filtrar, procederemos a configurar la consulta definiendo ordenaciones, agregaciones y formato en caso de que proceda para cada atributo. Para hacer esto tan sólo hay que clickar sobre el nombre del atributo y ajustar las opciones disponibles.

Finalmente una vez que tenemos la consulta definida la podemos ejecutar:

Tras lo cual se mostrará una vista previa del resultado. Por defecto como una tabla de datos.

En este momento se puede elegir la visualización. Mantener la tabla de datos o seleccionar una de las visualizaciones disponibles para los datos escogidos.

El listado de visualizaciones nos muestra las opciones disponibles. Mostrando cómo no disponibles las que, por sus requerimientos específicos, no son posibles de utilizar. En caso de que pasemos el ratón por encima de la opción no  disponible obtendremos una explicación de los motivos.

Una vez escogida la visualización deseada se puede confirmar la configuración del panel para obtener el resultado deseado.

Cada vez que hagamos un cambio en la configuración del informe nos aparecerá una alerta informándonos de que “Hay cambios sin guardar”.

Los paneles se pueden redimensionar a voluntad sobre la cuadricula de diseño clicando sobre un borde y arrastrando. Si se clica sobre la punta inferior derecha se podrá definir altura y anchura.

Los paneles se pueden mover a cualquier posición de la pantalla dentro de la cuadricula clicando sobre el texto y arrastrándolo al punto deseado.

Filtros del Informe

Un informe puede tener filtros basados en el modelo de datos sobre el que se construye el mismo.

Para añadir un nuevo filtro hay que hacer clic en la rueda que está en la parte inferior derecha de la pantalla.  Tras lo cual, nos aparecerá el menú de acciones asociadas al informe y donde podremos añadir un nuevo filtro. 

Tras lo cual nos aparecerá la pantalla de configuración del filtro donde:

(1) Podremos decidir si el filtro aplica a “todo el informe” o tan sólo a algunos paneles concretos (2). Y podremos elegir sobre qué entidad (3) y atributo (4) queremos filtrar.

Con el fin de facilitar las consultas. Debido a que el informe guarda integridad. Es recomendable definir los filtros al final.   Una vez hayamos definido todos los paneles.

En caso de que tengamos un panel sin configurar. No podremos definir un  nuevo filtro. Deberemos configurar todos los paneles de informe primero y luego los filtros. El motivo vuelve a ser la integridad del informe.

Dado que los filtros son multi-selectores por defecto. Para aplicar un filtro habrá que realizar la selección deseada (1) y clicar en el botón “Filtrar” (2)

Textos

En ocasiones es necesario incluir un texto explicativo en alguna parte del informe. Con tal fin se ha creado el componente Texto. Para poder poner un texto libre. Para poder añadir un nuevo texto al informe hay que clicar en la rueda inferior derecha y a continuación sobre el botón “Nuevo Texto”

Visualizaciones Disponibles

En el momento de redactar este documento es posible visualizar los datos cómo:

  • Tabla de datos
  • Tabla cruzada o pivotante
  • KPI
  • Gráfico de tarta
  • Gráfico de área polar
  • Gráfico de barras
  • Gráfico de barras apiladas
  • Gráfico de barras horizontales
  • Gráfico de líneas
  • Gráfico mixto de líneas y barras
  • Mapa de coordenadas
  • Mapa de capas
  • Gráfico de sankey

Consultas avanzadas

EDA pone un foco especial en la facilidad de uso y en la abstracción de los conocimientos técnicos necesarios para realizar consultas contra una base de datos. Pero en ocasiones es necesario recurrir a la potencia del SQL para realizar algunas consultas complejas.

Para ello EDA pone a disposición de los usuarios avanzados el “Modo SQL”. Para acceder a este modo hay que accionar el interruptor que se encuentra en la parte superior derecha del diálogo de definición de consulta en la configuración de un panel (1)

Accionando este interruptor (1) se puede cambiar del “Modo EDA”, el modo normal de EDA a este “Modo SQL” donde los usuarios avanzados podrán definir y ejecutar consultas SQL nativas contra la base de datos.

Una vez accionado el interruptor de “Modo SQL” (1) el usuario podrá definir su consulta SQL libre en el área de texto dispuesta para tal objetivo (2) y especificar una de las tablas principales del modelo de datos sobre el que se basa el informe (3).

Las consultas. Son consultas SQL nativas libres teniendo en cuenta las siguientes restricciones:

  • Las consultas deben ser sobre el mismo esquema de base de datos sobre el que se realiza el informe. No se pueden mezclar esquemas de bases de datos. En caso de necesitar tablas de diferentes esquemas, recomendamos generar vistas.
  • Se deben usar alias para las tablas. Es decir se deben definir la consultas con la siguiente estructura de ejemplo “ select a.campo1, a.campo2 from tabla a

Con el fin de facilitar la interacción avanzada con consultas SQL se dispone de una ayuda (3) en la misma pantalla que nos recordarán:

  • Las recomendaciones generales
  • Cómo vincular los filtros de informe con nuestra consulta SQL
  • Ejemplos de uso.

Una vez definida nuestra consulta sql (2) y identificada la tabla principal. Ya podemos ejecutar la consulta y utilizarla con normalidad cómo si fuera cualquier otra consulta de cualquier otro panel.

Las consultas SQL nativas son pareadas por EDA y se inyectan los posibles filtros de acceso al dato que pudieran existir en el modelo en el que se basa el informe.

Si se desea vincular la consulta con los filtros del informe se deberá:

  • Para hacerlo sólo tienes que añadir: AND ${alias_tabla.columna_filtrada} en la cláusula ‘WHERE’ de la consulta donde quieras inyectar el filtro
  • Si no has añadido ningúna cláusula WHERE, añádela a la consulta y haz los joins necesarios, junto con el filtro en el formato ${alias_tabla.columna_filtrada}
  • Si la tabla por la que filtramos no está en la consulta, recuerda que debes añadir las cláusulas JOIN necesarias para poder vincular la tabla del filtro con tu consulta

A continuación se muestran algunos ejemplos:

  • Consulta simple:

SELECT c.customername

FROM CUSTOMERS c

  • Consulta con los filtros del informe vinculados:
  • Tenemos un filtro en el informe para el campo ‘city’ de la tabla CUSTOMERS:
    • Consulta sin filtros vinculados:

SELECT c.customername FROM CUSTOMERS c

WHERE c.customername IN (‘Julia’, ‘John’)

  • Consulta con filtros vinculados:

SELECT c.customername

FROM CUSTOMERS c

WHERE c.customername IN (‘Julia’, ‘john’) AND ${c.city}

  • Tenemos un filtro en el informe para el campo ‘office_id’ de la tabla OFFICES
    • Consulta sin filtros vinculados:

SELECT e.employee_name

FROM EMPLOYEE e

WHERE e.employee_name IN (‘Julia’, ‘John’)

  • Consulta con filtros vinculados:

SELECT e.employee_name FROM EMPLOYEE e

INNER JOIN OFFICES o ON o.office_id = e.office_id

WHERE e.employee_name IN (‘Julia’, ‘John’) AND ${o.office_id}

 

Seguridad

Seguridad a  nivel de dato

EDA permite incorporar seguridad a nivel de dato, tanto a nivel de usuario como a nivel de grupo.

La seguridad se aplica asignando a cada usuario o grupo un conjunto de valores de una columna, éstos valores son los que el usuario o grupo estará autorizado a ver, de modo que todas las consultas -tanto si son de tipo EDA como si son consultas libres- realizarán la comprobación de seguridad antes de devolver datos.

La comprobación de seguridad consiste en determinar las relaciones entre las tablas de la consulta y las tablas con permisos, si las tablas están relacionadas se aplicará un inner join con las tablas con permisos para filtrar los resultados al usuario según los permisos definidos.

En consecuencia, las tablas que no estén relacionadas con aquellas a las que aplicamos seguridad no filtraran ninguna información (mostrarán todos los datos). 

Se pueden aplicar permisos sobre más de una columna en una misma tabla y sobre distintas columnas de distintas tablas.

Por ejemplo, supongamos que disponemos de una tabla “Empleados” que contiene las ID de los usuarios de EDA, y que ésta tabla está vinculada con otras tablas del modelo de datos.

Desde la pantalla de edición del modelo, seleccionamos la columna sobre la que aplicarán los permisos, en éste caso la tabla es “Employees” y la columna es “Employeenumber”.

 

Una vez seleccionada la columna (1), se muestra el menú de edición para ésta columna:

El botón “añadir permiso” (2) habilita el menú de edición de los permisos para esta columna, donde podemos elegir si queremos dar permisos de usuario o de grupo (el funcionamiento es idéntico):

 

Una vez dentro del panel de edición de permisos seleccionamos el usuario (o grupo) deseado y los valores que está autorizado a ver. También es posible marcar un usuario o grupo como autorizado a ver todos los datos marcando la opción “Todos”.

A partir de ese momento, todas las consultas que contengan campos de tablas relacionadas con la tabla “Employees” filtrarán la información en base a los permisos dados para ese usuario o grupo.

Una vez damos permisos de grupo o de usuario, el modelo se marca como securizado y a partir de ese momento, un usuario o grupo  sin permisos no puede acceder a ningún dato del modelo, es decir: se marca como usuario sin ningún permiso, incluyendo al administrador.

Esto implica que cuando se genere un informe, los usuarios sin permisos no verán ese modelo entre los disponibles, y que en caso de acceder a un informe basado en ese modelo se lanzará un error advirtiendo de la falta de permisos y se mostrarán los paneles vacíos.  El administrador tendrá acceso a los modelos y su edición, pero no a los datos de los mismos.

De éste modo, una vez damos permisos hay tres niveles de usuarios/grupos:

  1. Pueden verlo todo (marcados con la opción “todos”)
  2. Pueden ver una parte (tienen algunos valores asignados)
  3. No pueden ver nada (no tiene seguridad definida)

Si un usuario tiene permisos de grupo e individuales ambos aplican, así si por ejemplo como usuario puede ver los valores (1, 2, 3) y como grupo puede ver los valores (4, 5, 6) en la práctica no podrá ver ninguno de ellos.

Es responsabilidad del administrador otorgar los permisos de forma consistente con el modelo de datos.

 

Seguridad a nivel de informes

Los informes pueden marcarse como:

  1. Públicos: Se puede compartir la URL del informe y cualquier persona puede ver la información que contiene.
  2. Comunes: EL informe es visible para cualquier usuario registrado de EDA
  3. De grupo: El informe sólo es visible para los usuarios del grupo al que pertenece el creador del informe
  4. Privado: El informe sólo es visible para el usuario que lo ha creado

Ésta clasificación se puede asignar tanto al crear el informe (1) como una vez creado (2), exceptuando la clasificación “publico”, que hay que asignarla una vez el informe está creado y dispone de una URL. 

1.Panel de creación de informes

 

2.Edición de los permisos del informe:

Se puede controlar la información que se muestra en los informes públicos editando los permisos a nivel de dato para el usuario “anónimo”, creado por defecto al instalar la aplicación.

 

Ambas dimensiones de la seguridad (a nivel de dato, a nivel de informe) funcionan conjuntamente, así es posible que dos usuarios del mismo grupo dispongan de permisos diferentes. En éste caso, ambos podrán ver los informes de grupo del otro, pero no necesariamente verán la misma información, según los permisos individuales que tengan asignados.

 

2.   Arquitectura de la aplicación

EDA es una aplicación web desarrollada siguiendo las técnicas actuales de programación. Utilizando Angular para el frontend y Node.js para el backend. Cómo base de datos interna de funcionamiento utiliza MongoDB.

Cómo servidor web se puede utilizar Apache https server o NginX

EDA es una aplicación Open Source y su código está libremente accesible en Github ( https://github.com/jortilles/EDA )

3.   Despliegue y configuración

Jortilles ofrece EDA en modo SAS. De este modo se puede disfrutar de un servidor EDA siempre actualizado y administrado por Jortilles por una cuota mensual. Si optamos por esta opción dispondremos de un servidor en internet para nosotros bajo la url https://edaserver.com/mi_empresa

Docker

docker run -p 80:80 jortilles/eda:latest

Manual

Existen varias opciones de despliegue. A continuación se muestra la configuración básica a partir de la cual se puede realizar modificaciones.

1. Clonar el repositorio de GIT:

git clone https://github.com/jortilles/EDA.git

2. Configurar la base de datos en eda_api/config/database.config.js

3. Configurar el backend en eda_app/src/app/config/config.ts 

4. Instalar y arrancar

cd eda_api
npm install
npm start
cd eda_app
npm install
npm start

4.   Consideraciones finales

EDA es un producto en constante desarrollo. Esta guía está basada en la versión 1.4 del producto. En caso de acceder a una versión más reciente puede que esta guía quede desactualizada. Existiendo funcionalidades no descritas.

Jortilles es el desarrollador de EDA. En caso de tener cualquier duda. Póngase en contacto con nosotros en info@jortilles.com