Mostrando entradas con la etiqueta Inteligencia de Negocios. Mostrar todas las entradas
Mostrando entradas con la etiqueta Inteligencia de Negocios. Mostrar todas las entradas

lunes, 16 de abril de 2012

Características de un Datawarehouse

En Internet existe demasiada teoría acerca de Datamarts y Datawarehouse, lo que resulta a veces complejo entender toda esta información para llevarla a la práctica. A continuación, enunciaré algunas características de un Datawarehouse, lo cual ayudará a mejorar los conocimientos para aquellos que no tienen un concepto claro sobre este tema. Cabe recalcar que el buen diseño de un Datawarehouse, garantiza el funcionamiento de un proyecto con Business Inteligence.

Un Datawarehouse, como su nombre lo indica, es una bodega de datos en la cual se almacena información con el fin de realizar consultas, reportes y análisis. Estos contienen datos históricos, derivados de datos transaccionales. 

Existen bases de datos, que por ejemplo guardan información diariamente acerca de las ventas de las compañias, si verificamos las tablas involucradas en el proceso, encontramos informacion de varios años atrás, esta información se puede llevar al Datawarehouse, y dejar por ejemplo solo un año de información en la BD transaccional, de esta manera, las consultas en las tablas de ventas funcionarán mas rápido.

Un datawarehouse se debe construir de manera desnormalizada, esto se debe a la cantidad de datos que posee. Es decir, que las tablas que lo componen no se encuentran bajo el esquema entidad relación, claro esta que esto no quiere decir que no se utilizan llaves foráneas ni llaves primarias.

Para dejar mas claro esta parte veamos un ejemplo:


La anterior imagen muestra un clasico diseño E-R Entidad Relación, pero en la construcción de un datawarehouse, se debe usar el siguiente diseño:


El anterior diseño hace parte de algo que se llama diagrama copo de nieve, que al igual que el diagrama de estrella, son principales diagramas o estrategias que se utilizan en la construcción de cubos en un datawarehouse, y que es eso de cubos? pues un cubo es el conjunto de tablas que componen un datawarehouse, en cuanto a los componentes de un cubo, encontramos dos tipos: dimensiones y hechos. 

Cuando hablamos de dimensiones, nos referimos a estructuras que componen una o mas jerarquias que categorizan los datos. La tabla de productos anterior es un ejemplo de dimension, si quisieramos agregarle mas jerarquias podriamos incluir por ejemplo el proveedor.

La tabla de hechos, es la tabla principal donde convergen todas las dimensiones del cubo, a continuacion vemos un ejemplo básico de un cubo.



Como se puede apreciar en la anterior imagen, las dimensiones tienen un campo que es llave primaria y a su vez se relacionan a través de una llave foránea con la tabla de hechos, pero la tabla de hechos no tiene llaves primarias.

En Oracle, la construcción del cubo se realiza con la herramienta Design Center. Hasta ahora en mis proyectos solo he utilizado una tabla de hechos, aunque he visto proyectos donde dicen que han requerido mas de una. 


sábado, 14 de abril de 2012

La tabla de tiempo en un DataWarehouse

La dimension o tabla del tiempo, permite que el analisis que realizamos en las gráficas o indicadores que construimos con las herramientas de Oracle BI (Oracle Business Intelligence - Inteligencia de negocios) se pueda realizar en función de: hora, dias, meses, años, trimestres, etc.

Para construir por cuenta propia esta dimension seria una tarea algo engorrosa, es por eso que Oracle permite adicionar una Dimesion del tiempo al momento de construir el Datawarehouse por medio de la herramienta Design Center.


La tabla que se crea a partir del asistente, cuenta con muchos campos, no debemos confundirnos con esto, ya que podemos utilizar solo los campos que en verdad nos puede servir en la aplicación. Esa discriminación de los campos se puede realizar al momento de llenar la tabla (ya que esta se crea vacia), o al momento de construir el repositorio por medio del ADMINISTRATION BI TOOL, se pueden retirar los campos o columnas que quedaron vacias o que no necesitamos. Lo mas lógico es llenar esta dimension antes de empezar a insertar datos en el cubo que creamos.

Les dejo entonces un script sencillo en PL/SQL que permite llenar la dimension del tiempo:


Declare

FechaFin date;
Fecha      date;

Begin

/*Se inicializan las varibles dependiento desde y hasta que año se desea llenar
la tabla TIEMPO*/

Fecha    := to_date('2010-01-01','yyyy-MM-dd');
FechaFin := to_date('2013-12-31','yyyy-MM-dd');


WHILE Fecha < FechaFin LOOP

     DBMS_OUTPUT.PUT_LINE('Mes: ' || TO_CHAR(Fecha,'YYYYMMDD') );

     INSERT INTO TiempoQ(DIMENSION_KEY, DAY_ID, DAY, DAY_DESCRIPTION, DAY_NAME,           MONTH_OF_YEAR,
     CALENDAR_YEAR_ID, CALENDAR_MONTH_NAME, CALENDAR_MONTH_DESCRIPTION)
     SELECT
     TO_CHAR(Fecha,'YYYYMMDD'),
     TO_CHAR(Fecha,'D'),
     fecha,
     TO_CHAR(Fecha,'DY'),
     TO_CHAR(Fecha,'DY'),
     TO_CHAR(Fecha,'MM'),    
     TO_CHAR(Fecha,'YYYY'),
     TO_CHAR(Fecha,'MONTH'),
     TO_CHAR(Fecha,'YYYY-MM')
     FROM DUAL;

     SELECT Fecha+1 into Fecha from dual;
   
End loop;

End;


Si te gustó este articulo, te invitamos a que veas la publicidad al lado derecho del blog y que des clic sobre ella, te lo agradecemos.
 




martes, 24 de enero de 2012

CACHE EN ORACLE BUSINESS INTELLIGENCE

Actualización automatica del Dashboard o simplemente inhabilitar la cache.

Que tiene que ver una cosa con la otra?

Es simple, luego de crear el DataMart (Design Center), configurar el repositorio con el Administration Tool de BI, y crear cuadros de mandos y visualizarlos en pantalla por medio de las herramientas Dashboard y Answers. Cuando insertaba, actualizaba o eliminaba registros en las tablas del DataMart, la información, y en general los cuadros de mandos no se actualizaban a menos que reiniciara el servicio de OracleBI Server o realizara cambios manuales en el repositorio.
Para evitar caer en esta confusión, se debe modificar la opción de la cache del repositorio, la cual se encuentra en el archivo NQSConfig.INI


Realizar el cambio, reiniciar el servicio y listo.

martes, 10 de enero de 2012

Fallo al conectar al Centro de Control (Warehouse Builder)

RTC-5260 and RTC-5301 error in Oracle Warehouse Builder (OWB) :


El centro de control que se ejecuta desde el Design Center, es requerido para poder desplegar nuestro repositorio. Cuando aparece el mensaje error RTC-5260 y RTC-5301, significa que el servicio no esta disponible, es por eso que en una sesión de SQLPlus logueado con el usuario dueño del repositorio, en mi caso por ejemplo: OWBREPOS_OWNER (Oracle BI 10g), se debe ejecutar el siguiente comando:

@c:\oracle\bise1\owb\owb\rtp\sql\start_service.sql
Hay que tener en cuenta la ruta de instalación del Oracle BI.

Si aparece algún error enla ejecución del comando haciendo alusión a la zona horaria:
..
ORA-01882: timezone region

Se debe proceder a editar el archivo Run_Service.bat, ubicado en la ruta: C:\oracle\bise1\owb\owb\bin\win32

En este archivo se encuentra la siguiente linea:
%JAVAPATH%\jre\bin\javaw.exe %JVM_OPTIONS% -DORACLE_HOME="%RTHOME%"-DOCM_HOME="%RTHOME%" -DOCM_ORACLE_HOME="%RTHOME%" -classpath %RTHOME%\owb\bin\admin\;%RTHOME%\owb\bin\admin\launcher.jar -DOWB_HOME=%OWB_HOME% -DJDK_HOME=%JDK_HOME% -DORA_HOME=%ORA_HOME% -DOEM_HOME=%OEM_HOME% -DIAS_HOME=%IAS_HOME% Launcher %RTHOME%\owb\bin\admin\owb.classpath oracle.wh.runtime.platform.service.Service %STARTUP_TYPE% %NODEID% %RTUSER% %HOST% %PORT% %SERVICE%

Se debe agregar entonces lo siguiente: -Duser.timezone="+05:30"

Finalmente la linea debe quedar:

%JAVAPATH%\jre\bin\javaw.exe %JVM_OPTIONS% -DORACLE_HOME="%RTHOME%"
-Duser.timezone="+05:30" -DOCM_HOME="%RTHOME%" -DOCM_ORACLE_HOME="%RTHOME%" -classpath %RTHOME%\owb\bin\admin\;%RTHOME%\owb\bin\admin\launcher.jar -DOWB_HOME=%OWB_HOME% -DJDK_HOME=%JDK_HOME% -DORA_HOME=%ORA_HOME% -DOEM_HOME=%OEM_HOME% -DIAS_HOME=%IAS_HOME% Launcher %RTHOME%\owb\bin\admin\owb.classpath oracle.wh.runtime.platform.service.Service %STARTUP_TYPE% %NODEID% %RTUSER% %HOST% %PORT% %SERVICE%

Se guardan los cambios, y se ejecuta nuevamente el comando para iniciar el servicio.

Si todo salió bien, debe salir Available.