Filtrar en una tabla de hechos los últimos datos de cada cliente

Ver el tema anterior Ver el tema siguiente Ir abajo

Filtrar en una tabla de hechos los últimos datos de cada cliente

Mensaje  rgarcia el Jue 21 Mayo 2009, 13:27

Tengo una tabla de hechos que contiene los cambios de situación de un conjunto de clientes. Tiene el siguiente aspecto:

DIM_PF DIM_SIT FECHA_SIT COD_UNICO
----------------------------------------------
1 1 01/01/2009 20090101001
2 1 01/01/2009 20090101002
3 1 01/01/2009 20090101003
1 2 01/02/2009 20090201001
3 3 01/02/2009 20090201003
1 1 01/03/2009 20090301001

Donde DIM_PF es la clave foránea de relación con la dimensión de cliente, DIM_SIT es la clave foránea de relación con la dimensión de situaciones, FECHA_SIT es un campo fecha que indica el momento de cambio de la situación y COD_UNICO es un código único de la tabla de hechos.

Quiero obtener un informe de la situación de los clientes en un momento determinado (parámetro de entrada Fecha de informe) de modo que el resultado debería ser:

Si 01/01/2009 <= Fecha de informe < 01/02/2009:
Situación Nº clientes
1 3 (los clientes 1, 2 y 3)

Si 01/02/2009 <= Fecha de informe < 01/03/2009:
Situación Nº clientes
1 1 (el cliente 2)
2 1 (el cliente 1)
3 1 (el cliente 3)

Si 01/03/2009 <= Fecha de informe:
Situación Nº clientes
1 2 (los clientes 2 y 1)
3 1 (el cliente 3)

Había pensado en crear una medida FECHA_SIT_ULTIMA=max(FACT_SITUACION.FECHA_SIT) que me devuelve la fecha del último cambio de situación para cada cliente, pero no sé cómo continuar.

¿Alguien podría ayudarme?

rgarcia

Cantidad de envíos : 2
Localización : Zaragoza
Fecha de inscripción : 27/02/2009

Ver perfil de usuario

Volver arriba Ir abajo

Re: Filtrar en una tabla de hechos los últimos datos de cada cliente

Mensaje  bvillamor el Jue 21 Mayo 2009, 21:51

Hola,
creo que podría funcionan creando una medida calculada en la capa de negocio que tenga la agregación de tipo LAST en cada una de las dimensiones que necesite, para empezar en la de tiempo.
He probado con una base de datos MySql y funciona regular pero con una Oracle funciona bien, de hecho lanza un sql con funciones analíticas (keep dense_rank) que es lo que tendríamos que usar si hiciésemos la consulta manualmente.

Begoña.

bvillamor

Cantidad de envíos : 388
Localización : Madrid
Fecha de inscripción : 18/02/2009

Ver perfil de usuario http://www.adiante.es

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.