miércoles, 23 de abril de 2014

APPLYSIMPLE - FUNCIONES

MicroStrategy nos ofrece la opción de utilizar funciones Apply, que permiten el uso de expresiones personalizadas, con el objeto de permitirle al usuario una explotación completa de la herramienta.

Existen varios tipos de funciones Apply: ApplySimple, ApplyComparision, ApplyAgg, ApplyOlap y ApplyLogical.

-- En esta guía se explica mediante ejemplos el uso del ApplySimple --

Las funciones Apply permiten utilizar el símbolo # como parámetro auxiliar para identificar objetos. Siendo #0 el primer campo agregado a la función, #1 el segundo, etc.

Ejemplo:


ApplySimple(“#0 + #1”,Elemento1, Elemento2). Esto sumaria los elementos 1 y 2.

1.        EJEMPLOS EN ATRIBUTOS:


  • Devuelve la cadena de texto del mes.

En este caso el valor obtenido en la base es del tipo “201301” (año-mes). Mediante la siguiente función en


el atributo “MES” obtendremos el dato “Enero”.

ApplySimple("to_char(to_date(#0,'yyyymm'),'Month','nls_date_language = Spanish')", [ID_MES_ANALISIS])

Nota: El parámetro “language” es necesario cuando el dato obtenido viene en inglés o cualquier otro idioma, caso contrario es posible que mostrara January.

  • Devuelve la cadena de texto del día de la semana.

Mediante esta función podemos obtener la descripción del día de la semana

ApplySimple("to_char(to_date(#0), 'day', 'NLS_DATE_LANGUAGE = SPANISH' )", [ID_FECHA])


  • Calcular la edad de una Persona.

Si bien es recomendable calcular la EDAD de una persona mediante su Fecha de Nacimiento en el ETL, también es posible realizar el cálculo a través de un ApplySimple en un atributo.

Pasos a seguir:
  1. Crear un nuevo Atributo.
  2. Crear una nueva Representación.
  3. Insertar el siguiente Apply:


  4. ApplySimple("FLOOR (months_between(#0,#1)/12)", CurrentDate(), [FEC_NACIMIENTO])

    Guardar y Cerrar. 
Este sería el query generado por MicroStrategy:

SELECT DISTINCT FLOOR (months_between(TRUNC(CURRENT_DATE)
a11.FEC_NACIMIENTO)/12)  EDAD from L_PERSONAS a11


2.        EJEMPLOS EN FILTROS:

Para realizar un filtro con Applysimple debemos calificar sobre el “ID” o “DESC” correspondiente. Seteando el parámetro “Personalizado”, tal como se muestran en la siguiente imagen adjunta.



  • Devuelve el valor del último mes.

Mediante la siguiente función podemos filtrar un indicador por el último mes (id_mes_analisis) cargado en el ejemplo en la “Fact_Mabs”.

ApplySimple("(select max(ID_MES_ANALISIS) from fact_mabs)",0)

  • Devuelve el valor del año y lo concatena con el valor numérico de un mes mostrado originalmente de forma descriptiva.

Ejemplo: Año Tabla = 2013. Mes Tabla = Enero

ApplySimple( "#0 || to_char(to_date(#1, 'month', 'NLS_DATE_LANGUAGE = SPANISH' ),'MM')", [ANO_TABLA], [MES_TABLA])

Resultado del ejemplo: 201301

3.        EJEMPLOS EN INDICADORES:




  • Compara cada mes con el último mes. si es verdadero, el indicador arroja el valor “1”. Caso contrario divide la cantidad de fechas entre “30”.

Para realizar este tipo de cálculos podemos usar dos funciones: Case o If. 
Este ejemplo puede aplicarse sin necesidad de un ApplySimple, tal como se muestra.

Case(([9.0 Mes de Mabs] < [9.5 Ult. Mes de Mabs]), Int(1), ([9.1 Cantidad de Fechas] / 30))

If(([9.0 Mes de Mabs] < [9.5 Ult. Mes de Mabs]), Int(1), ([9.1 Cantidad de Fechas] / 30))

  • Realiza operaciones matemáticas simples.

El ApplySimple mostrado realiza el siguiente cálculo:
Descuento * Coste – Unidades Vendidas – Unidades Vendidas – Unidades Vendidas

ApplySimple("#0*#1-#2-#3-#4", Descuento, Coste, [Unidades vendidas])

En el caso de agregar más parámetros que componentes, la herramienta toma el ultimo agregado.

Es decir, según el ejemplo, los parámetros #3 y #4 harían referencia a Unidades Vendidas.

2 comentarios: