Inicio > Business Analytics > Fragmentación con OBI – Mejorar el rendimiento en consultas y reportes

Fragmentación con OBI – Mejorar el rendimiento en consultas y reportes

Muchas veces realizamos consultas o reportes frecuentes sobre tablas con gran cantidad de información y necesitamos obtener un buen rendimiento, por ello es interesante saber que en OBI tenemos la opción de trabajar sobre diferentes tablas fuente, donde por ejemplo una puede contener datos actuales y otra datos históricos y que el sistema consulte una u otra o las dos en función de lo que se le solicite.

A continuación un ejemplo fácil para que lo veáis.

Partimos de una tabla de hechos Ventas en la que podemos dividir sus fuentes en dos tablas, una de ventas del ejercicio actual 2011 y otra de histórico de ventas, con datos referidos al ejercicio 2010 y/o anteriores.

En  el diagrama físico unimos las dimensiones con las dos tablas físicas fuentes de la tabla de hechos, VENTAS e HISTORICO_VENTAS.

Debemos arrastrar esta nueva tabla también a las fuentes de datos de las dimensiones, como por ejemplo a Calendario, donde Calendario en este ejemplo es una dimensión que extrae sus datos directamente de la fecha de Venta:

En la Logical Table Source – VENTAS definimos el contenido de la fragmentación exclusivamente para el año 2011 y marcamos el check de que este origen debe combinarse con otros orígenes en este nivel:

En la Logical Table Source – HISTORICO_VENTAS definimos el contenido de la fragmentación para el año 2010 y/o anteriores y marcamos el check de que este origen debe combinarse con otros orígenes en este nivel:

A partir de aquí, una consulta en OBI sobre los ingresos en el año 2011,

se realiza según el log sobre la tabla física VENTAS:

[…]

Select sum(T47917.INGRESO) as c1,

TO_NUMBER(TO_CHAR(T47917.FECHA, ‘yyyy’), ‘9999’) as c2

  from VENTAS T47917

where  (TO_NUMBER(TO_CHAR(T47917.FECHA, ‘yyyy’), ‘9999’) = 2011)

group by TO_NUMBER(TO_CHAR(T47917.FECHA, ‘yyyy’), ‘9999’)

[…]

Una consulta sobre los ingresos en los años 2010 o anteriores,

se realiza según el log sobre la tabla física HISTORICO_VENTAS:

[…]

Select  sum(T48419.INGRESO) as c1,

TO_NUMBER(TO_CHAR(T48419.FECHA, ‘yyyy’), ‘9999’) as c2

  from HISTORICO_VENTAS T48419

where  (TO_NUMBER(TO_CHAR(T48419.FECHA, ‘yyyy’), ‘9999’) <= 2010)

group by TO_NUMBER(TO_CHAR(T48419.FECHA, ‘yyyy’), ‘9999’)

[…]

O una consulta sobre los ingresos en el año 2008 exclusivamente,

se realiza según el log sobre la tabla física HISTORICO_VENTAS:

[…]

Select  sum(T48419.INGRESO) as c1,

TO_NUMBER(TO_CHAR(T48419.FECHA, ‘yyyy’), ‘9999’) as c2

  from HISTORICO_VENTAS T48419

where  (TO_NUMBER(TO_CHAR(T48419.FECHA, ‘yyyy’), ‘9999’) = 2008)

group by TO_NUMBER(TO_CHAR(T48419.FECHA, ‘yyyy’), ‘9999’)

[…]

Y en el caso de no filtrar año la consulta la realiza sobre las dos tablas, VENTAS e HISTORICO_VENTAS:

[…]

Select  T47917.INGRESO as c8,

T47917.INGRESO as c9

from VENTAS T47917

Union all

Select   T48419.INGRESO as c8,

0 as c9

  from HISTORICO_VENTAS T48419

[…]

En definitiva un buen recurso a tener en cuenta en nuestros desarrollos en OBI.

  1. Misael Blandón
    mayo 17, 2012 en 17:56

    La opción de Fragmentación solo está disponible en la versión 11G de OBI Enterprise ó en la 10G y 11G de estandar también se puede tener ?
    Gracias por tu atención

    • Víctor Cruz
      mayo 18, 2012 en 10:05

      Misael, esta opción está disponible en todas las versiones que comentas. Un saludo.

  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: