Por Noé Zavala
En Artus, es posible utilizar variables de periodos que sirvan para modificar, dinámicamente, el comportamiento de los indicadores. Estas son variables de Artus que toman el valor de las fechas de los periodos insertados y los convierten a un formato comprensible para el motor de MDX.
@FECHA_INI y @FECHA_FIN son 2 de las variables de Artus que pueden ser útiles para hacer calculaos. Por ejemplo, si se requiere la cantidad de meses transcurridos en el periodo podemos utilizar la función MONTH de MDX, la cual se usa de la siguiente manera:
MONTH(CDATE(“@FECHA_INI”))
A la función MONTH se le debe pasar como parámetro una variable tipo Date, en este caso el valor que contiene @FECHA_INI. Pero @FECHA_INI no contiene, per se, una variable tipo Date, sino la fecha contenida en una cadena con formato yyyy-mm-dd. Por lo tanto se debe convertir a tipo Date y para eso usamos la función CDATE, la cual debe recibir como parámetro un String y para eso le indicamos que se trata de un cadena de caracteres: “@USEFECHA_INI”. Con estas funciones y estas variables, ya podemos utilizar las fechas para hacer cálculos básicos o tan complejos como sea necesario.
Ejemplo:
[Measures].[Store Sales]/(MONTH(CDATE(“@FECHA_FIN”)) – MONTH(CDATE(“@FECHA_INI”)) + 1)
@USEFECHA_INI y @USEFECHA_FIN son otras 2 variables de Artus que se pueden utilizar en conjunto con las funciones de tiempo de MDX. Ambas variables, convierten las fechas en el UniqueName correspondiente al periodo. Por ejemplo, si la fecha contiene el valor ’2008/Enero/01′ podría ser convertida en el member [Time].[All Time].[2008].[Enero].[01] (Este UniqueName se obtiene a partir del formato que haya sido establecido en los niveles en la dimensión de tiempo al importar un cubo de AS). En conjunto con una de las funciones de MDX podemos lograr comportamientos interesantes como el siguiente:
([Measures].[Store Sales], ClosingPeriod([Time].[Month], @USEFECHA_INI))
La función ClosingPeriod devuelve el último member del Nivel indicado en el primer parámetro. En el ejemplo, devolvería el último mes relacionado con el Member resultante en @USEFECHA_INI.
Si el valor de @USEFECHA_INI es [Time].[2008] (el periodo en el que se navega está en el level Year), ClosingPeriod devolvería el mes Diciembre por ser el último mes del año.
Si el valor de @USEFECHA_INI es [Time].[2008].[Q1] (el level es Quarter), ClosingPeriod devolvería el mes Marzo por ser el último mes del Trimestre.
Si el valor de @USEFECHA_INI es [Time].[2008].[Q1].[1] (el level es Month), ClosingPeriod devolvería el mismo mes.
Así como la función ClosingPeriod, existen otras muy útiles como OpeningPeriod, ParallelPeriod, Cousin, PeriodsToDate, etc.


Comentarios recientes