Agregando datos de entrada
En diversas ocasiones necesitamos incorporar al modelo O3 un catálogo ó una codificación que no existe en ninguna fuente de datos. En la mayoría de los casos la solución que encontramos es generar un archivo txt o incluso crear una tabla en la BD para que el dataamrt se ajuste a las necesidades. Pero es cierto que ambas alternativas pueden generarnos inconvenientes, la ubicación del archivo, la posibilidad de poder crear una tabla, etc.
O3 Designer incluye un tipo especial de fuente de datos que ofrece una excelente alternativa al problema.
El nuevo tipo de fuente de datos se identifica con el nodo de etiqueta "Script". El mismo no requiere configuración de ningún tipo por lo que simplemente se deben agregar las fuentes de datos deseadas.
A continuación se ofrecen algunos ejemplos de fuentes de datos generados a través de scripts:
Ejemplo de catálogo simple
ArrayList list = new ArrayList(); list.add(new Object[]{0, "Activos"}); list.add(new Object[]{1, "Pasivos"}); iterator = list.iterator();
Esta consulta nos permite tener una fuente de datos con los valores:
0 | Activos |
1 | Pasivos |
Se debe desmarcar el checkbox "Verificar antes de construir" para evitar errores durante la construcción.
Ejemplo de datos de entrada de tipo fecha
ArrayList list = new ArrayList(); list.add(new Object[]{new Date(2008-1900, 0, 1)}); iterator = list.iterator();
Esta consulta nos permite tener una fuente de datos con los valores:
01/01/2008 |
El año es base 1900, el mes es base 0 (0 es enero, 1 febrero, etc) y el dia es normal. El orden de los argumentos es: año, mes, dia
A partir del uso de scripts como consultas, se comprende que su potencial permite realizar procedimientos mucho más complejos y elaborados.
Ejemplo de datos de entrada de tipo fecha, generación automática a la fecha de hoy
El ejemplo anterior indica como generar una tabla de dimensión de datos fechas en forma estática, cada nuevo año deberíamos modificar el modelo para obtener el nuevo año.
A continuación se indica un sciript para generar datos de fecha en forma automática desde una fecha de comienzo hasta la fecha de generación del cubo. En este ejemplo generamos a partir del año 1996
ArrayList list = new ArrayList(); int currentYear = Calendar.getInstance().get(Calendar.YEAR); for (int year=1996; year <= currentYear; year++) { list.add(new Object[]{new Date(year-1900, 0, 1)}); } //list.add(new Object[]{null}); iterator = list.iterator();