martes, 30 de agosto de 2016

Herramientas para implementar un Data Warehouse

Data_Warehouse_Mart_figura_principal

En el mercado existe una gran gama de herramientas para implementar el Data Warehouse conocidas como herramientas de Inteligencia de Negocio (Business Intelligence BI). Cada una de las cuales están formadas por un paquete de aplicaciones integradas.

Tipos de herramientas de inteligencia de negocio.

Cuadro de mando integral también llamados Dashboard.

Digital Dashboards o paneles de Control Digital - También conocidos como Business Intelligence Dashboards, o Dashboards Ejecutivos, Son resúmenes visuales de información del negocio, que muestran de una mirada la comprensión del global de las condiciones del negocio mediante métricas e Indicadores Clave de Desempeño. Esta es una Herramienta de Inteligencia de Negocios muy popular desde hace unos pocos años.

OLAP (Procesamiento Analítico en línea por sus siglas en inglés) (incluido HOLAP, ROLAP and MOLAP)- Es la capacidad de algunos sistemas de soporte de decisiones gerenciales que permiten examinar de manera interactiva grandes volúmenes de información desde varias perspectivas.

Aplicaciones de Informes, genera vistas de datos agregadas para mantener a la gerencia informada sobre el estado de su negocio.

Minería de datos - Extracción de información de las bases de datos acerca del consumidor, mediante la utilización de aplicaciones que pueden aislar e identificar patrones o tendencias del consumidor en un alto volumen de datos. Hay una gran variedad de técnicas de minería de datos que revelan distintos tipos de patrones. Algunas de las técnicas son métodos estadísticos y Redes Neurales como formas altamente avanzadas de análisis de datos.

Entre las herramientas existen del tipo comercial o pagas y las Open Source o código abierto aquí se muestran algunas de ellas.

Productos comerciales

Atlas SBI

Bitool Herramienta de ETL y Visualizacion

BiPoint - Business Intelligence

Bingo Intelligence

BIRT Analytics

BiyCloud Smart: QlikView + Cloud + Social Business]

Business Objects

Crystal Reports

Dynamic Data Web

Productos Open Source de inteligencia de negocios

Eclipse BIRT Project: Generador de informes para aplicaciones Web de código abierto basado en Eclipse

JasperReports

LogiReport: Aplicación de BI gratuita basada en Web de LogiXML

OpenI: Aplicación Web simple orientada al reporting OLAP.

Pentaho

RapidMiner (antes llamado YALE)

SpagoBI

1.2 Eclipse BIRT Project

Este es un proyecto de software de código abierto que proporciona capacidades de creación de informes y de inteligencia de negocio para clientes pesados y aplicaciones web, especialmente aquellas basadas en Java y Java EE. BIRT es un proyecto de software de alto nivel dentro de la Fundación Eclipse.

Los objetivos del proyecto son cubrir un ancho rango de necesidades de creación de informes dentro de una aplicación típica, abarcando desde informes operacionales o de empresa hasta procesamiento multi-dimensional analítico en línea (OLAP). Inicialmente, el proyecto se ha enfocado en capacidades que permitan a los desarrolladores de aplicaciones diseñar e integrar fácilmente informes dentro de aplicaciones.

Cuenta con 2 componentes principales: un diseñador de informes visuales dentro de Eclipse IDE para crear informes BIRT, y un componente de rutina para generar informes que pueden ser puestos en uso en cualquier entorno Java. Además, incluye un motor de gráficos que está integrado en el diseñador de informes y puede ser usado por separado para incluir gráficas en una aplicación.

Los diseños de informes BIRT se hacen en XML y pueden acceder a cierto número de fuentes de datos diferentes incluyendo SQL databases, JDO datastores, JFire Scripting Objects, POJOs, XML y Servicios Web.

ECLIPSE

Figura 1: Eclipse BIRT Project

 

1.3 Jasper

Maneja un modelo de negocio del tipo comercial de código abierto ofreciendo informes, cuadros de mando, análisis, y servicios de integración de datos para los requisitos de BI tanto autónomos y embebidos con una arquitectura flexible y moderna, construida en un modelo escalable para que sea integrable con otras aplicaciones.

1.4 Pentaho BI

Pentaho es una suite de software orientada a la solución y centrada en procesos que incluye los principales componentes requeridos para implementar soluciones basadas en procesos. Las soluciones que Pentaho pretende ofrecer se componen fundamentalmente de una infraestructura de herramientas de análisis e informes integrado con un motor de flujo de trabajo de procesos de negocio. La plataforma será capaz de ejecutar las reglas de negocio necesarias, expresadas en forma de procesos y actividades además de presentar y entregar la información adecuada en el momento adecuado.

Su plataforma se basa en flujos de trabajos, procesos y definición de procesos las cuales pueden ser integradas fácilmente.

Debido a que es una completa gama de programas integrados, la arquitectura de Pentaho se basa en servidores, motores y componentes muchos de ellos estándares; ofreciendo una plataforma de BI escalable y sofisticada que combina componentes de código abierto y código fuente escrita por desarrolladores de Pentaho.

Adicionalmente, es posible integrar software de terceros (Ver figura 2, Fuente: Pentaho Open Source Business Intelligence), entre los principales componentes que conforman la suite de pentaho están:

Productos

Pentaho Analysis Services: cuyo nombre código Modrian es un servidor OLAP (procesamiento analítico en línea) escrito en Java. Es compatible con el MDX (expresiones multidimensionales) y el lenguaje de consulta XML para el Análisis y especificaciones de la interfaz olap4j.

Pentaho Reporting: Consiste en un motor de presentación, capaz de generar informes programáticos sobre la base de un archivo de definición XML. Sobre esta solución se han desarrollado muchas herramientas, por ejemplo: informes, diseñadores de interfaz gráfica de usuario, y asistentes tipo wizard. Un uso notable de esta herramienta es el Generador de informes para OpenOffice.org

Pentaho Data Mining: Es una envoltura alrededor del proyecto Weka. Es una suite de software que usa estrategias de aprendizaje de máquina, aprendizaje automático y minería de datos. Cuenta con series de clasificación, de regresión, de reglas de asociación, y de algoritmos de clustering, para así apoyar las tareas de análisis predictivo.

Pentaho Dashboard: Es una plataforma integrada para proporcionar información sobre sus datos, donde se pueden ver informes, gráficos interactivos y los cubos creados con las herramientas Pentaho Report Designer.

Pentaho para Apache Hadoop: Es un conector de bajo nivel para facilitar el acceso a MUY grandes volúmenes manejados en el proyecto Apache Hadoop, la Suite de Pentaho BI para Hadoop permite abordar los mayores desafíos que experimentan los usuarios de Hadoop -, sobre su empinada curva de aprendizaje técnico, la falta de personal técnico cualificado y la falta de disponibilidad de las aplicaciones de desarrollo y despliegue para llevar a cabo la integración de datos e inteligencia de negocios con Hadoop.

SUITE

Figura 2: Suite de Pentaho

{ Leer Más }


viernes, 12 de agosto de 2016

Data Warehouse

 

Data_Warehouse_Mart_figura_principal

Gracias al avance informático en la actualidad la mayoría de los procesos se han informatizado, y como resultado de esto se obtiene una gran cantidad de información que se almacenan en diferentes ficheros y bases de datos, es por esto que uno de los problemas principales que enfrentan hoy en día las empresa es la gestión de grandes volúmenes de información y la forma de explotar y sacar provecho a dicha información para lograr tener soporte en la toma de decisiones administrativas, financieras y económicas. Toda empresa actualmente debe mantener un control de la información generada día a día para poder tomar decisiones de forma óptima.

Al estar inmersos en la era del conocimiento, cuyo valor primordial es la información, la cual tiene un peso inmenso sobre cualquier otro recurso de una empresa; si un gerente está bien informado de lo que sucede dentro de la empresa con datos concretos y reales puede tomar decisiones mucho más acertadas para el bien de la empresa, permitiendo manejar sus recursos de manera eficiente.

La solución más factible para agrupar toda esta información en un solo lugar del cual se pueda extraer toda la información estadística y de inteligencia de negocio necesaria es un Almacén de Datos o Data Warehouse.

 

¿Qué es un Data Warehouse?

Es una colección de datos orientada a un determinado ámbito (empresa, organización, etc.), integrado, no volátil y variable en el tiempo, que ayuda a la toma de decisiones en la entidad en la que se utiliza. Se trata, sobre todo, de un registro o historial de procesos completo de una organización, más allá de la información transaccional y operacional, almacenada en una base de datos diseñada para favorecer el análisis y la divulgación eficiente de datos. Los almacenes de datos contienen a menudo grandes cantidades de información que pueden o no subdividirse en unidades lógicas más pequeñas (Data Marts) dependiendo del subsistema de la entidad del que procedan o para el que sea necesario.

Existen varias definiciones para Data Warehouse algunas de ellas encaminadas a la información que contienen, otras hacen referencia además, a todo el proceso por el cual pasa la información para llegar al resultado final.

 

Características

Entre las características de un Data Warehouse según Bernabeu están: (Bernabeu, 2010)

Ø Orientado a un tema

Ø Administra grandes cantidades de información

Ø Guarda información en distintos repositorios

Ø Condensa y agrega información

Ø Integra y asocia información

Ø Ayuda en la decisión estratégica

Ø Permite explotar la información histórica existente

 

Ventajas

Las ventajas del Data Warehouse según Bernabeu son: (Bernabeu, 2010)

Ø Posibilita la extracción de datos de sistemas operacionales y fuentes externas.

Ø Permite la integración y homogeneización de los datos de toda la empresa.

Ø Provee información que ha sido transformada y totalizada, para que ayude en el proceso de toma de decisiones estratégicas y tácticas

 

Componentes de un Data Warehouse

Data Marts

Es un subconjunto del Data Warehouse que se enfoca en solucionar un área específica de la organización.

Entre las características de un Data Mart destacan:

Ø Usuarios limitados.

Ø Área específica.

Ø Tiene un propósito específico.

Ø Tiene una función de apoyo.

Extracción, transformación y carga (ETL)

Extraer, transformar y cargar (ETL del inglés Extract, Transform and Load) es el proceso que permite mover datos desde múltiples fuentes, reformatearlos, limpiarlos, y cargarlos en otra base de datos, data mart, o data warehouse para analizar.

 

Modelo Multidimensional de un Data Warehouse

Un modelo multidimensional es una base de datos en donde su información se almacena en forma multidimensional, es decir, a través de tablas de hechos y tablas de dimensiones a estos elementos en conjunto se le llaman cubos de información.

Los cubos de información tratan de organizar los datos por tablas o relaciones; estos tienen un número indefinido de dimensiones, razón por la cual también reciben el nombre de hipercubos. Un cubo contendrá datos de una determinada variable que se desea analizar, proporcionando una vista lógica de los datos provistos por el sistema de información hacia el data warehouse, esta vista estará dispuesta según unas dimensiones y podrá contener información calculada. El análisis de los datos está basado en las dimensiones del hipercubo, por lo tanto, se trata de un análisis multidimensional.

A la información de un cubo se puede acceder mediante "tablas dinámicas" en una hoja de cálculo o a través de programas personalizados. Las tablas dinámicas le permiten manipular las vistas (cruces, filtrados, organización, totales) de la información con mucha facilidad. Las diferentes operaciones que se pueden realizar con cubos de información se producen con mucha rapidez. Llevando estos conceptos a un data warehouse, éste es una colección de datos que está formada por «dimensiones» y «variables», entendiendo como dimensiones a aquellos elementos que participan en el análisis y variables a los valores que se desean analizar.

Dimensiones

Las dimensiones de un cubo son atributos relativos a las variables, son las perspectivas de análisis de las variables (forman parte de la tabla de dimensiones). Son catálogos de información complementaria necesaria para la presentación de los datos a los usuarios, como por ejemplo: descripciones, nombres, zonas, rangos de tiempo, etc. Es decir, la información general complementaria a cada uno de los registros de la tabla de hechos.

Variables

También llamadas “indicadores de gestión”, son los datos que están siendo analizados. Forman parte de la tabla de hechos. Más formalmente, las variables representan algún aspecto cuantificable o medible de los objetos o eventos a analizar. Normalmente, las variables son representadas por valores detallados y numéricos para cada instancia del objeto o evento medido. En forma contraria, las dimensiones son atributos relativos a las variables, y son utilizadas para indexar, ordenar, agrupar o abreviar los valores de las mismas. Las dimensiones poseen una granularidad menor, tomando como valores un conjunto de elementos menor que el de las variables; ejemplos de dimensiones podrían ser: “productos”, “localidades” (o zonas), “tiempo” (medido en días, horas, semanas, etc.).

 

Modelamiento

Al momento de realizar el modelamiento de un Data Warehouse se puede optar por distintas formas de relacionar la tabla de hecho y las tablas de dimensiones, entre las cuales están:

Ø Esquema Estrella: Consiste en una tabla de hechos central y las tablas de dimensión están relacionadas mediante claves. En este modelo los datos deben de estar totalmente normalizados.

Ø Esquema Copo de Nieve: Es una extensión del esquema en Estrella, esta posee una tabla de hechos central y las tablas de dimensión están relacionadas a este mediante claves, pero a su vez las tablas de dimensión pueden relacionarse con otras tablas de dimensión.

Ø Esquema Constelación: Compuesta por una tabla de hechos central relacionada con otras tablas de hechos, donde cada tabla de hechos posee sus propias dimensiones.

{ Leer Más }


miércoles, 3 de agosto de 2016

Calcular cantidad de días transurridos entre un rango de fechas

PHP-logo

A veces necesitamos saber los días que han transcurrido entre dos fechas. Con PHP podemos hacer esa tarea fácilmente, simplemente restando el valor timestamp de las dos fechas y convirtiendo a días. Lo explicaremos paso a paso en este artículo.


El ejercicio es muy sencillo. Vamos a obtener los valores timestamp de las dos fechas. (Recordar que los timestamp son los segundos que han pasado desde las cero horas del 1 de enero de 1970) Como los dos timestamps son una cantidad de segundos, no tenemos más que restarlos para obtener los segundos de diferencia entre las dos fechas. Luego se trataría de convertir esos segundos en días para obtener el dato que estamos buscando.


Veamos entonces la manera de obtener un timestamp de una fecha. Entre las funciones de fechas de PHP hay varias que nos pueden servir para trabajar con timestamp, pero nosotros tenemos que utilizar una en concreto llamada mktime(). Esta función recibe varios parámetros:


[sourcecode language='php'  padlinenumbers='true']
mktime ( [int hora [, int minuto [, int segundo [, int mes [, int dia [, int anyo [, int es_dst]]]]]]] ) 
[/sourcecode]


El primer parámetro es la hora, luego los minutos y segundos. Luego los meses, días y años. Con todos esos valores nos devuelve el timestamp de una fecha cualquiera. Podemos omitir parámetros y en ese caso tomará los valores de la fecha actual del servidor.


El código para obtener los timestamp de un par de fechas inventadas podría ser algo como el siguiente:


[sourcecode language='php' ]
//defino fecha 1 
$ano1 = 2006; 
$mes1 = 10; 
$dia1 = 2; 
//defino fecha 2 
$ano2 = 2006; 
$mes2 = 10; 
$dia2 = 27; 
//calculo timestam de las dos fechas 
$timestamp1 = mktime(0,0,0,$mes1,$dia1,$ano1); 
$timestamp2 = mktime(0,0,0,$mes2,$dia2,$ano2); 
Luego, podríamos restar los timestamp y convertir los segundos en días: 
//resto a una fecha la otra 
$segundos_diferencia = $timestamp1 - $timestamp2; 
//echo $segundos_diferencia; 
//convierto segundos en días 
$dias_diferencia = $segundos_diferencia / (60 * 60 * 24); 
[/sourcecode]

Para convertir los segundos en días, como se ha podido observar en el código, hay que dividir entre el número de segundos de un día. (60 segundos de un minuto, por los 60 minutos de una hora, por las 24 horas de un día).


Ahora bien, con un código como el anterior, el valor de los días de diferencia puede tener decimales y ser negativo. Nosotros queremos un número de días entero y positivo. Entonces todavía tendremos que hacer un par de operaciones matemáticas. Primero quitar el signo negativo y luego quitar los decimales.

[sourcecode language='php' ]
//obtengo el valor absoulto de los días (quito el posible signo negativo) 
$dias_diferencia = abs($dias_diferencia); 
//quito los decimales a los días de diferencia 
$dias_diferencia = floor($dias_diferencia); 
[/sourcecode]

Los decimales los quitamos simplemente redondeando hacia abajo. Puesto que si tenemos un número decimal de días no ha llegado a un día completo y no nos interesa contabilizarlo.


El código completo se puede ver a continuación:

[sourcecode language='php' ]
<? 
//defino fecha 1 
$ano1 = 2006; 
$mes1 = 10; 
$dia1 = 2; 
//defino fecha 2 
$ano2 = 2006; 
$mes2 = 10; 
$dia2 = 27; 
//calculo timestam de las dos fechas 
$timestamp1 = mktime(0,0,0,$mes1,$dia1,$ano1); 
$timestamp2 = mktime(4,12,0,$mes2,$dia2,$ano2); 
//resto a una fecha la otra 
$segundos_diferencia = $timestamp1 - $timestamp2; 
//echo $segundos_diferencia; 
//convierto segundos en días 
$dias_diferencia = $segundos_diferencia / (60 * 60 * 24); 
//obtengo el valor absoulto de los días (quito el posible signo negativo) 
$dias_diferencia = abs($dias_diferencia); 
//quito los decimales a los días de diferencia 
$dias_diferencia = floor($dias_diferencia); 
echo $dias_diferencia; 
?> 
[/sourcecode]

{ Leer Más }


IconIconIcon