Cálculo Métricas Año Anterior y YTD

Anuncio
Métricas Año Anterior y YTD
Método para calcular las Métricas Año Anterior y Year To Date en Oracle Business Intelligence
Enterprise Edition Plus
Arquitectura Actual del cliente:
Este ejercicio se basará en la industria de Aerolíneas, en donde encontraremos 2 tipos de clientes,
que se distribuyen en 2 diferentes tablas:
Cliente Estándar: Aquel que ha viajado por lo menos una vez con la aerolínea, su información
residirá en la tabla MSI_CUSTOMER.
Cliente Frecuente: Aquel que ha viajado más de una vez con la aerolínea y que se ha inscrito en el
programa de viajero frecuente para contar con diversos privilegios, como pueden ser tarifas más
bajas, asientos en clase ejecutiva, etc., su información se encuentra en la tabla
MSI_CUSTOMER_ACCOUNT, por tanto, todos los “Cliente Frecuente” alguna vez fueron “Cliente
Estándar” con lo cual todos los clientes frecuentes están incluidos en la tabla de cliente estándar,
por ello el número de datos de la tabla MSI_CUSTOMER_ACCOUNT siempre debe ser menor al
de la tabla de MSI_CUSTOMER.
También en el esquema encontramos otras 2 tablas de catálogo que son:

MVW_CUST_ACCT_START_DATE: La cual contiene todas las claves o Id’s de las fechas, las
cuales requerimos para ligarnos con el resto de las tablas que contienen las descripciones,
tablas como: MVW_CUST_ACCT_START_WEEKDAY, MVW_CUST_ACCT_START_WEEK, etc.
1) MSI_LOCATION1_HIST: La cual contiene todas las claves o Id’s referentes a la localidad del
cliente, las cuales que requerimos para ligarnos con el resto de las tablas que contienen las
descripciones, tablas como: MVW_LOC_ADDR_CITY, MVW_LOC_ADDR_REGION, etc.
Métricas Año Anterior y YTD
Requerimiento
La aerolínea desea tener un reporte en donde muestre el número de “Clientes Frecuentes” por
mercado que hayan tenido una transacción con la aerolínea, durante este mes (Mes actual), el
acumulado del año (Mesa Actual YTD) y para comparar su eficiencia con la del año anterior, desea
ver también el mismo mes pero del año anterior (Mes Año Anterior) y el acumulado del año
anterior (Mes Anterior YTD), así como el porcentaje de variación a nivel mes (Mes Actual – Mes
Año Anterior) y del acumulado de lo que va del año (Mes Actual YTD-Mes Anterior YTD).
El reporte se debe ver así:
Mapeo de la Información:
Año: Año actual sobre el cual se ejecuta el reporte, esta información se encuentra en la tabla
MVW_CUST_ACCT_START_DATE, en el campo ACCT_START_YEAR_ID.
Mes: Mes actual sobre el cual se ejecuta el reporte, esta información se encuentra en la tabla
MVW_CUST_ACCT_START_DATE, en el campo ACCT_START_MONTH_DESC.
Mercado: Mercado al que pertenece el cliente, la información se encuentra en la tabla
MVW_LOC1_ADDR_MARKET y en el campo LOC1_ADDR_MKT_NM.
Mes Actual: Conteo del número de clientes frecuentes, que hayan realizado alguna transacción,
durante el Mes sobre el cual se ejecuta el reporte, estos datos se encuentran en la tabla
MSI_CUSTOMER_ACCOUNT y se hace el count del campo CUST_ACCT_ID.
Mes Año Anterior: Es necesario calcular dicha información, ya que no existe un campo que
contenga dicho dato, por tanto será necesario generar el campo de “FECHA ANTERIOR”.
Ver “Cálculo Mes Año Anterior”
Mes Actual YTD: Es necesario generar un cálculo, ya que no existe relación un campo que
contenga dicha información.
Ver “Cálculo para el acumulado de lo que va del año a la fecha (Year To Date) - Mes Actual YTD”
Mes Anterior YTD: Es necesario generar un cálculo, ya que no existe relación un campo que
contenga dicha información
Ver “Cálculo para generar el acumulado de lo que va del año a la fecha (Year To Date) pero del
año anterior - Mes Anterior YTD”
Métricas Año Anterior y YTD
Variación %: (Mes Actual - Mes Año Anterior) * 100 / Mes Año Anterior
Variación YTD%: (Mes Actual YTD - Mes Anterior YTD) * 100 / Mes Anterior YTD
Cálculo Mes Año Anterior (Fecha Anterior)
Para calcular dicho dato se sugiere hacer lo siguiente:
1) Crear la fecha de Año Anterior o Fecha Anterior:
a) Cambiarle al catálogo de Fecha el tipo de tabla de “Physical Table” a “Select” con esto
podremos agregarle más campos a esta misma tabla, es decir con esto lograremos
agregarle el campo de Fecha Anterior a nuestra dimensión de Tiempo.
b) Al colocar tipo de tabla “Select” en la parte de abajo se abre un cuadro de texto en
donde se agregará el código para seleccionar todos y cada uno de los campos que
contenga su catálogo de tiempo.
c) Una vez que se hayan seleccionado todos los campos de la tabla de tiempo
(MVW_CUST_ACCT_START_DATE), se agregará el campo que contendrá el cálculo del
año anterior, para lo cual usaremos la función de Oracle ADD_MONTHS la cual regresa
la fecha más (+) “n” meses, en este caso deseamos que nos regrese el año anterior
por lo que usaremos -12:
Sintaxis : ADD_MONTHS (DATE1, n)
ADD_MONTHS(CUST_ACCT_START_DT,-12) AS FECHAANTERIOR
Métricas Año Anterior y YTD
d) Como resultado se debe obtener una tabla así:
2) Crear una tabla Alias de la tabla de hechos (MSI_CUTOMER_ACCOUNT), y renombrarla
(MSI_CUSTOMER_ACCOUNTALIAS), esto con la finalidad de que dicha tabla se ligue con la
nueva fecha que acabamos de crear y así obtengamos el conteo de los clientes frecuentes
del año anterior.
3) Crear las mismas relaciones que tiene la tabla de hechos original
(MSI_CUSTOMER_ACCOUNT), pero ahora la tabla Alias recién creada
(MSI_CUSTOMER_ACCOUNALIAS).
Métricas Año Anterior y YTD
Primero la relación de la Tabla Alias con el catálogo de tiempo, aquí en lugar de crearse la
relación original de tabla de hechos con catálogo (CUST_ACCT_START_DT=
CUST_ACCT_START_DT), se hará con la fecha recién creada “FechaAnterior” quedando la
relación de la siguiente manera:
MVW_CUST_ACCT_START_DATE.FECHAANTERIOR =
MSI_CUSTOMER_ACCOUNTALIAS.CUST_ACCT_START_DT
Después la relación de la Tabla Alias con el catálogo de clientes, aquí la relación será igual ID
con ID quedando de la siguiente manera:
MSI_CUSTOMER_ACCOUNTALIAS.CUST_ID = MSI_CUSTOMER.CUST_ID
Obteniendo así el siguiente Diagrama Físico:
4) Al terminar las relaciones, lo que logramos fue que todas las métricas contenidas en la
Tabla Alias (MSI_CUSOTMER_ACCOUNTALIAS), serán calculadas en base a la fecha
anterior.
Lo siguiente es crear la métrica que requerimos para calcular el Mes Año Anterior. La
forma más sencilla es duplicando la métrica o campo que actualmente contenga esa
información en este caso es CUST_ACCT_ID, se le renombra
(CUST_ID_COUNT_ANTERIOR), se le cambia la regla de Agregación de ‘None’ a ‘Count’ y
después se le mapea la fuente de información:
Métricas Año Anterior y YTD
5) Con esto queda terminada la métrica de Mes Año Anterior.
Métricas Año Anterior y YTD
Cálculo para el acumulado de lo que va del año a la fecha (Year To Date) - Mes Actual YTD
Para el cálculo de esta métrica es necesario tener:
1) Disponible en su catálogo de tiempo el nombre o número del Mes.
2) La métrica que se desea calcular a ese mismo nivel, es decir, al nivel Mes.
3) La función MSUM, la cual suma la columna actual + el número de filas precedentes que se
especifican (MSUM(columna1,n)).
El cálculo es un “Case”, en donde se dice que cuando se cumpla la condición del mes se aplique la
función MSUM, la cual contiene la métrica + el número de filas que se le deben sumar,
dependiendo del mes que se desea calcular.
CASE WHEN Aerolinea.MVW_CUST_ACCT_START_DATE.ACCT_START_MONTH_DESC = 'Enero' THEN
MSUM(Aerolinea.MSI_CUSTOMER_ACCOUNT.CUST_ACCT_ID_COUNT, 1) WHEN
Aerolinea.MVW_CUST_ACCT_START_DATE.ACCT_START_MONTH_DESC = 'Febrero' THEN
MSUM(Aerolinea.MSI_CUSTOMER_ACCOUNT.CUST_ACCT_ID_COUNT, 2) WHEN
Aerolinea.MVW_CUST_ACCT_START_DATE.ACCT_START_MONTH_DESC = 'Marzo' THEN
MSUM(Aerolinea.MSI_CUSTOMER_ACCOUNT.CUST_ACCT_ID_COUNT, 3) WHEN
Aerolinea.MVW_CUST_ACCT_START_DATE.ACCT_START_MONTH_DESC = 'Abril' THEN
MSUM(Aerolinea.MSI_CUSTOMER_ACCOUNT.CUST_ACCT_ID_COUNT, 4) WHEN
Aerolinea.MVW_CUST_ACCT_START_DATE.ACCT_START_MONTH_DESC = 'Mayo' THEN
MSUM(Aerolinea.MSI_CUSTOMER_ACCOUNT.CUST_ACCT_ID_COUNT, 5) WHEN
Aerolinea.MVW_CUST_ACCT_START_DATE.ACCT_START_MONTH_DESC = 'Junio' THEN
MSUM(Aerolinea.MSI_CUSTOMER_ACCOUNT.CUST_ACCT_ID_COUNT, 6) WHEN
Aerolinea.MVW_CUST_ACCT_START_DATE.ACCT_START_MONTH_DESC = 'Julio' THEN
MSUM(Aerolinea.MSI_CUSTOMER_ACCOUNT.CUST_ACCT_ID_COUNT, 7) WHEN
Aerolinea.MVW_CUST_ACCT_START_DATE.ACCT_START_MONTH_DESC = 'Agosto' THEN
MSUM(Aerolinea.MSI_CUSTOMER_ACCOUNT.CUST_ACCT_ID_COUNT, 8) WHEN
Aerolinea.MVW_CUST_ACCT_START_DATE.ACCT_START_MONTH_DESC = 'Septiembre' THEN
MSUM(Aerolinea.MSI_CUSTOMER_ACCOUNT.CUST_ACCT_ID_COUNT, 9) WHEN
Aerolinea.MVW_CUST_ACCT_START_DATE.ACCT_START_MONTH_DESC = 'Octubre' THEN
MSUM(Aerolinea.MSI_CUSTOMER_ACCOUNT.CUST_ACCT_ID_COUNT, 10) WHEN
Aerolinea.MVW_CUST_ACCT_START_DATE.ACCT_START_MONTH_DESC = 'Noviembre' THEN
MSUM(Aerolinea.MSI_CUSTOMER_ACCOUNT.CUST_ACCT_ID_COUNT, 11) ELSE
MSUM(Aerolinea.MSI_CUSTOMER_ACCOUNT.CUST_ACCT_ID_COUNT, 12) END
Métricas Año Anterior y YTD
Cálculo para generar el acumulado de lo que va del año a la fecha (Year To Date) pero del año
anterior - Mes Anterior YTD
Para el cálculo de esta métrica es necesario tener:
1) Disponible en su catálogo de tiempo el nombre o número del Mes.
2) La métrica que se desea calcular a ese mismo nivel, es decir, al nivel Mes Año Anterior.
Ver “Cálculo Mes Año Anterior”
3) Tener la función MSUM, la cual suma la columna actual + el número de filas precedentes
que se especifican (MSUM(columna1,n)).
El cálculo es un “Case”, en donde se dice que cuando se cumpla la condición del mes se aplique la
función MSUM, la cual contiene la métrica + el número de filas que se le deben sumar,
dependiendo del mes que se desea calcular.
CASE WHEN Aerolinea.MVW_CUST_ACCT_START_DATE.MESFECHAANTERIOR = 'Enero' THEN
MSUM(Aerolinea.MSI_CUSTOMER_ACCOUNT.CUST_ID_COUNT_ANTERIOR, 1) WHEN
Aerolinea.MVW_CUST_ACCT_START_DATE.MESFECHAANTERIOR = 'Febrero' THEN
MSUM(Aerolinea.MSI_CUSTOMER_ACCOUNT.CUST_ID_COUNT_ANTERIOR, 2) WHEN
Aerolinea.MVW_CUST_ACCT_START_DATE.MESFECHAANTERIOR = 'Marzo' THEN
MSUM(Aerolinea.MSI_CUSTOMER_ACCOUNT.CUST_ID_COUNT_ANTERIOR, 3) WHEN
Aerolinea.MVW_CUST_ACCT_START_DATE.MESFECHAANTERIOR = 'Abril' THEN
MSUM(Aerolinea.MSI_CUSTOMER_ACCOUNT.CUST_ID_COUNT_ANTERIOR, 4) WHEN
Aerolinea.MVW_CUST_ACCT_START_DATE.MESFECHAANTERIOR = 'Mayo' THEN
MSUM(Aerolinea.MSI_CUSTOMER_ACCOUNT.CUST_ID_COUNT_ANTERIOR, 5) WHEN
Aerolinea.MVW_CUST_ACCT_START_DATE.MESFECHAANTERIOR = 'Junio' THEN
MSUM(Aerolinea.MSI_CUSTOMER_ACCOUNT.CUST_ID_COUNT_ANTERIOR, 6) WHEN
Aerolinea.MVW_CUST_ACCT_START_DATE.MESFECHAANTERIOR = 'Julio' THEN
MSUM(Aerolinea.MSI_CUSTOMER_ACCOUNT.CUST_ID_COUNT_ANTERIOR, 7) WHEN
Aerolinea.MVW_CUST_ACCT_START_DATE.MESFECHAANTERIOR = 'Agosto' THEN
MSUM(Aerolinea.MSI_CUSTOMER_ACCOUNT.CUST_ID_COUNT_ANTERIOR, 8) WHEN
Aerolinea.MVW_CUST_ACCT_START_DATE.MESFECHAANTERIOR = 'Septiembre' THEN
MSUM(Aerolinea.MSI_CUSTOMER_ACCOUNT.CUST_ID_COUNT_ANTERIOR, 9) WHEN
Aerolinea.MVW_CUST_ACCT_START_DATE.MESFECHAANTERIOR = 'Octubre' THEN
MSUM(Aerolinea.MSI_CUSTOMER_ACCOUNT.CUST_ID_COUNT_ANTERIOR, 10) WHEN
Aerolinea.MVW_CUST_ACCT_START_DATE.MESFECHAANTERIOR = 'Noviembre' THEN
MSUM(Aerolinea.MSI_CUSTOMER_ACCOUNT.CUST_ID_COUNT_ANTERIOR, 11) ELSE
MSUM(Aerolinea.MSI_CUSTOMER_ACCOUNT.CUST_ID_COUNT_ANTERIOR, 12) END
Descargar