Etiqueta : bi

Desarrollo de un componente CDE

Por David González
Project Manager en OpenSistemas

Una de las partes más importantes de un sistemas de BI son los dashboard en los que se representan los principales KPIs que requieren de atención por parte del área de negocio de la empresa.

Para la realización de los dashboard Pentaho en su versión Open Source utiliza Community Dashboard Editor (CDE), el cual ya incorpora D3js mediante instalación desde el Market Place de Pentaho.

Lo que veremos a continuación, se puede extrapolar a cualquier componente, pero en este caso desarrollaremos un componente cuya labor será generar un gráfico de D3js. D3js es un framework para generar librerías gráficas, cuya ventaja es que no tiene limitaciones. CDE cuenta con componentes de CCC que ofrecen gran cantidad de opciones, incluso permiten extender algunas propiedades, pero no llegan al nivel de D3js (por el contrario la realización del gráfico es mucho más sencilla).

Partiremos del componente “d3Component” (podemos encontrarlo una vez instalado el paquete de D3js en:

biserver-ce/pentaho-solutions/system/d3ComponentLibrary/resources/components/d3Component)

Lo copiamos en la misma ruta con el nombre que queramos, en nuestro caso, como vamos a hacer un gráfico simple de un circulo, lo llamaremos “d3SimpleRadial”.

Una vez dentro veremos dos archivos, component.xml y otro *.js.

El primero es el más importante, y es donde se definirá la localización del componente en el menú de CDE, sus parámetros y donde se encuentra el desarrollo del mismo. El segundo, es el que referenciamos desde el componente y puede haber tantos ficheros como necesitemos en función de la dificultad del componente.

    <Name>d3 Simple Radial</Name>
    <IName>d3SR</IName>
    <Description>D3 Simple Radial</Description>
    <Category>D3COMPONENTS</Category>
    <CatDescription>D3 Components</CatDescription>
    <Type>PalleteEntry</Type>
    <Version>1.0</Version>

Name, es el nombre que aparecerá en el menú de CDE.
IName, es el nombre interno que deberá coincidir con el objeto creado en alguno de los archivos del componente.
Category, es para decidir en que grupo se va a incluir nuestro componente.

A continuación aparecen las properties, que son las opciones de parametrización que va a tener el componente:

<Property>dataFixed</Property>

Si no son propiedades existentes en CDE además habrá que definirlas:


        <DesignerProperty>
          <Header>
            <Name>dataFixed</Name>
            <Parent>BaseProperty</Parent>
            <DefaultValue></DefaultValue>
            <Description>Data Fixed</Description>
            <Tooltip>Data Fixed</Tooltip>
            <InputType>String</InputType>
            <OutputType>String</OutputType>
            <Order>51</Order>
            <Version>1.0</Version>
          </Header>
        </DesignerProperty>

Así definiremos que tipo de datos espera, si aparecerá en las opciones normales o sólo en las avanzadas, etc.

Nos hemos dejado la parte más importante, dentro de implementation, la parte que dice donde esta el desarrollo del componente (y las dependencias)

<Code src="d3SR.js"/>
      <!--Styles>
        <Style version="1.0" src="d3Component.css">d3Component</Style>
      </Styles-->
      <Dependencies>
        <Dependency src="../commons/lib/d3.js" version="343">d3js</Dependency>
        <Dependency src="../commons/d3ComponentBase.js" version="1">d3ComponentBase</Dependency>

En nuestro ejemplo, el core estará definido en d3SR.js (en este caso lo más cómodo renombrar el fichero js que teníamos), pero, ¿que estructura debe tener este archivo? Muy sencillo, debe devolver un objeto que se llame como el IName, y en su interior tener los métodos que va a utilizar CDE (update, render, etc).

En nuestro caso extendemos de D3ComponentBase, si fuera un componente normal extenderíamos de BaseComponent.

Mi recomendación, es comenzar con un fichero que sólo devuelve el objeto vacío:


/*
 * d3 component, using the d3ComponentBase
 */

 var d3SR =  D3ComponentBase.extend({});

Si reiniciamos el servidor, aparecerá nuestro componente. Cualquier modificación en el xml requiere reiniciar del servidor. Por otro lado, Pentaho mimifica y compacta todos los desarrollos, por lo que cualquier cambio en los ficheros de js no serán visibles hasta que reinciemos el servidor. Esto no es viable a la hora de desarrollar, pero no os preocupéis, os dejo algo que os permitirá ver los cambios utilizando los ficheros originales en lugar de los mimificados, pudiendo además depurar cualquier componente.

Añadir a la url de visualización del dashboard el parámetro debug=true. Con esto podremos desarrollar en nuestro IDE habitual, y los cambios se verán reflejados en nuestro dashboard de test.

A partir de este momento, podemos empezar a editar nuestro objeto e ir viendo nuestros avances. Esta es mi recomendación para asegurarnos de que el componente es correcto y no ocasiona problemas en la carga de CDE.

¿Como creamos el core del componente?, muy sencillo, una vez que tenemos el código JavaScript que genera el gráfico de D3js, lo meteremos en la función “render” dentro del objeto. Hay varias opciones, viendo el resto de componentes podéis ver las que hay, desconozco si existe una documentación de las posibles opciones.

Una vez que tenemos el código ahí metido, tenemos que parametrizarlo, para que tome los valores que mete el usuario desde el back de CDE. Como accedemos a los parámetros, muy sencillo, utilizamos el ejemplo anterior dataFixed, para obtener el valor en nuestro d3SR utilizaremos this.dataFixed.

Por último, os dejo el código de la primera versión en GitHub, que aunque no sea definitiva es funcional (probada con Pentaho 5.2), para que podáis ver todo el código.

https://github.com/dgalcalde/d3SipleRadial

Funciones MDX para series temporales

Por Celia Barbeyto
Consultor Open Source en OpenSistemas

Los cubos OLAP son un elemento imprescindible en Business Intelligence para realizar análisis de datos multidimensionales. MDX es el lenguaje de consultas para cubos OLAP, la estructura en general es algo similar al lenguaje SQL, en el sentido de que está conformado por una parte de selección de la información, otra parte de especificación del origen de la información y una última parte de la especificación de las condiciones de filtrado. Además, el lenguaje MDX contiene una gran cantidad de funciones orientadas a entornos de datos multidimensionales.
(más…)

useR conference en Albacete

Por Fernando Monera
CINO de OpenSistemas

La semana pasada asistí a “useR” en Albacete. Se trata de una conferencia a nivel mundial de usuarios y desarrolladores alrededor del software de análisis estadístico R. Obviamente estaba patrocinada ente otros por Google y Oracle.

Mi interés en la conferencia era muy alto, ya que una de las áreas fuertes de OpenSistemas es el Business Intelligence, con un fuerte componente de análisis estadístico de datos sobre todo en el área de trading. (más…)

El valor del capital humano en consultoría tecnológica

Por Javier Sotomayor Aramburu
COO de OpenSistemas

El activo más importante en una empresa de servicios de consultoría tecnológica es claramente el capital humano. En esta industria vendemos cerebros al peso, gente con un alto componente de capacidad analítica y de creatividad, que sepan buscar soluciones de forma proactiva adaptándose a entornos que cambian enormemente de un proyecto a otro. En tecnología tienes que saber adaptarte como un camaleón, y con los años de experiencia vas aprendiendo que aunque cada cliente es un mundo y tiene unas necesidades muy concretas el objetivo siempre es el mismo,  aportar soluciones tecnológicas que apoyen las necesidades del negocio. (más…)

La falsa creencia de que el software libre es gratis

Por Luis Ignacio Bacas
Developer de OpenSistemas

A estas alturas de la historia, creo que es totalmente innecesario defender el uso del Software libre o del software de código abierto en los proyectos y servicios que se ofrecen hoy en día, desde las miles de páginas web que se ejecutan en servidores Apache hasta los móviles de última generación con núcleo Linux, ya que en la gran mayoría de los casos permite reducir y repartir los costes de desarrollo y mantenimiento de dichos proyectos abaratando su coste total. (más…)

La importancia de la transmisión de conocimiento en proyectos de IT

Por Javier Sotomayor Aramburu
COO de OpenSistemas

Uno de los grandes problemas a los que se enfrentan los equipos de trabajo en proyectos de tecnología es el de la transmisión de la información relativa al proyecto entre los distintos integrantes del mismo, tanto en proyectos pequeños que se quedan parados durante meses y se evolucionan más adelante, muchas veces con personas distintas a las originales, como en proyectos grandes de larga duración en los que puede haber rotación de recursos y cada nuevo miembro tiene que absorber mucha información antes de ser operativo. (más…)

A vueltas con la tecnología de integración

Por Jose Ignacio Yarza Vidal
Project Manager de OpenSistemas

En este post voy a contar brevemente la experiencia que hemos tenido integrando dos productos con tecnologías diferentes como son JavaEE y PHP.

En un proyecto reciente había que integrar un gestor de contenidos (CMS – Nuxeo DAM, tecnología JavaEE) con un sistema de eLearning (LMS – Dokeos, tecnología PHP). El uso que se le iba a dar al CMS era como repositorio y reproductor de contenidos multimedia, en particular vídeo. Se trataba de almacenar vídeos con sus metadatos y luego reproducirlos desde las páginas del LMS. (más…)

Creciendo en SaaS

Por Raúl Hijosa Nieto
Developer de OpenSistemas

Según la consultora Gartner, los ingresos asociados a la tecnología SaaS (Software as a Service) fueron en 2012 de 14.500 millones de dólares con un incremento del 17,9% respecto a 2011. Las razones del notable aumento del interés de las empresas en este tipo de servicios viene dada por tres tipos de factores: (más…)

AngularJs, el framework de moda en Javascript

Por David Muñoz Sánchez
Web Developer de OpenSistemas

En plena era en la que todo el mundo habla de HTML5. Javascript se ha convertido en el lenguaje por excelencia para desarrollar los front-end y los UI de nuestras aplicaciones web. Alrededor suyo han surgido todo tipo de framework que nos han hecho este trabajo más fácil, los más destacados: mootools, prototype y a la cabeza jQuery. (más…)

Elementos de valor en propuestas técnicas

Javier Sotomayor Aramburu
COO de OpenSistemas

En el sector de las tecnologías de la información hay dos situaciones clásicas que suelen provocar sobre esfuerzos hasta altas horas de la madrugada. La primera es acercarse a la fecha de la puesta en producción de un sistema, sobre todo en aquellos en los que no hay posible retraso. En OpenSistemas lo sabemos bien porque hemos desarrollado la plataforma de resultados electorales del Grupo Vocento y que tiene que funcionar a la perfección y sin excusas el día después de unas elecciones.

La segunda es acercarse a la fecha de entrega de una propuesta comercial a un cliente. En ocasiones se debe a procrastinación pura y dura y claro, al final a uno le pilla el toro, aunque en otras se debe al escaso margen de tiempo que hay a veces para poder elaborar la documentación. (más…)