Mejoras continuas en Crono Analytics

Productos
miércoles, 24 de abril de 2013

El pasado mes de marzo anunciamos la disponibilidad de una nueva versión Crono Analytics. En realidad, gracias al modelo de integración continua, sacamos actualizaciones y mejoras cada 2 semanas aproximadamente. Aunque solo cuando introducimos funcionalidades importantes aumentamos la versión y lo anunciamos en el blog de la empresa.

En “Business Intelligence fácil” intento manteneros informados aunque, como veis, no siempre lo consigo. Por este motivo, os animo a que os suscribáis también al blog de Crono Analytics (o, mejor, a su lista de distribución).

Hoy os quiero hablar de una funcionalidad nueva que denominamos “Reescritura avanzada de consulta”. O reescritura dimensional. Aquí intentamos explicar –con poco éxito, me temo- en que consiste: “Reescritura de consulta con Crono Analytics”.

Trataré ahora de explicarlo de otro modo. Imaginaos que tenéis un Datawarehouse con millones de registros en una sencilla “estrella”:

Modelo en estrella con una tabla de detalle

Con este modelo, evidentemente, si consultamos las ventas diarias de las tiendas de Barcelona la consulta generada será así:

SELECT
              LB_TIENDAS.POBLACION AS Poblacion,
              LB_TIENDAS.NOMBRE AS Tienda,
              LB_TIEMPO.FECHA AS Fecha,
              sum(LB_VENTAS.UNIDADES) AS Unidades
            FROM LB_VENTAS
            INNER JOIN LB_TIENDAS ON (LB_VENTAS.ID_TIENDA=LB_TIENDAS.ID_TIENDA)
            INNER JOIN LB_TIEMPO ON (LB_VENTAS.FECHA=LB_TIEMPO.FECHA)
            WHERE
              LB_TIEMPO.ANYO='2013'
              AND LB_TIENDAS.POBLACION='BARCELONA'
            GROUP BY
              LB_TIENDAS.POBLACION,
              LB_TIENDAS.NOMBRE,
              LB_TIEMPO.FECHA
            

La consulta anterior es óptima ya que se realiza de acuerdo a su modelo en estrella. Este modelo funcionará sin problemas con millones de registros.

Sin embargo, con el paso del tiempo, se abrirán más tiendas, y se tendrá un catálogo de productos más extenso, y el datawarehouse contendrá más y más historia de datos. Los “millones de registros” iniciales se convertirán en decenas o cientos de millones de registros.

¿Seguirá funcionando igual de bien esa estrellita inicial? Seguramente no. Por lo menos, será necesario crear alguna tabla agregada.

La solución habitual –y recomendada- es crear una nueva tabla de ventas resumida (con sus respectivas dimensiones). Tal que así:

Modelo en estrella con una tabla agregada

Ahora, si consultamos las ventas mensuales de España, Crono Analytics generará esta consulta:

SELECT
              LB_POBLACIONES.POBLACION AS Poblacion,
              LB_POBLACIONES.PAIS AS Pais,
              LB_MESES.NOMBRE_MES AS Mes,
              sum(LB_VENTAS_AGREGADO1.UNIDADES) AS Unidades
            FROM LB_VENTAS_AGREGADO1
            INNER JOIN LB_POBLACIONES ON (LB_VENTAS_AGREGADO1.ID_POBLACION=LB_POBLACIONES.ID_POBLACION)
            INNER JOIN LB_MESES ON (LB_VENTAS_AGREGADO1.ANYO=LB_MESES.ANYO AND LB_VENTAS_AGREGADO1.MES=LB_MESES.MES)
            WHERE
              LB_POBLACIONES.PAIS='ESPAÑA'
              AND LB_MESES.ANYO='2013'
            GROUP BY
              LB_POBLACIONES.POBLACION,
              LB_POBLACIONES.PAIS,
              LB_MESES.NOMBRE_MES
            

Con este nuevo modelo, las consultas agregadas utilizarán esta estrella, y tendrán buenos tiempos de respuesta, sea cual sea la consulta que realice el usuario…

Si conoces otras soluciones de BI, nada de esto te sorprenderá en exceso. ¿Qué es, entonces, lo novedoso en Crono Analytics? Varias cosas:

  • Configurar una nueva tabla agregada en el modelo semántico de Crono es trivial. En otras soluciones, es taaan costoso que es directamente inviable (recuerdo un universo de Business Objects con cientos de indicadores en la que nadie quería crear nuevos agregados por el costo de mantenimiento…). Desde IT preferíamos que alguna consulta fuesen un poco lenta, antes que arriesgarnos a tocar ese galimatías de @Aggrgate_Aware() con resultado incierto…
  • Crear una tabla agregada no impacta nada en las consultas existentes. Es decir, la primera consulta de este artículo seguirá funcionando exactamente igual, seguirá utilizando el modelo en estrella (sin agregar “joins” adicionales contra las tablas de poblaciones y meses).
  • Crono Analytics, por lo tanto, reescribe tanto las tablas de dimensiones como las tablas de hecho.

La gran virtud de esta funcionalidad es que encaja perfectamente con las mejores prácticas en entornos Business Intelligence y también con el paradigma de desarrollo ágil. Es decir:

  • Empezamos los proyectos creando las tablas detalladas. Nada más.
  • Si ya va rápido, ¡perfecto!. En cambio, si es necesario crear tablas agregadas, se crean sin problemas y se incorporan al metamodelo. (¡sin impactar negativamente a las consultas detalladas que ya iban bien inicialmente).
  • Si hacen falta crear dos o más tablas agregadas, se crean. Y todas las consultas, siempre, se hacen en estrella (si el modelo de datos lo permite).

Gracias a funcionalidades como ésta (entre muchas otras), la capa semántica de Crono Analytics es la más potente y flexible del mercado y permite que los usuarios tengan una verdadera visión de negocio de sus datos y un entorno ágil y fácil de utilizar.

Si quieres una demostración, o deseas más información, no dudes en contactar a [email protected].

También puedes “jugar” con la versión de evaluación.