Funciones OVER

Las funciones OVER se usan para determinar la forma en la que deben fragmentarse los datos; por ejemplo, en intervalos de tiempo.

Nota: El uso de las funciones OVER es diferente para las expresiones personalizadas y las columnas calculadas. En las expresiones personalizadas se pueden incluir referencias a ejes, mientras que en las columnas calculadas solo se puede hacer referencia a columnas o jerarquías fijas.

Para obtener más información, consulte Uso de una declaración OVER para hacer referencia a fragmentos de datos y Uso de declaraciones OVER en columnas calculadas.

Opción Descripción
All Usa todos los nodos de la jerarquía a la que se hace referencia. Puede resultar útil para cruzar el nodo actual con más de una jerarquía. Por ejemplo, puede mostrar las ventas relativas de varias categorías de productos en cada mes.

Ejemplos de expresiones personalizadas:

Sum([Sales]) / Sum([Sales]) OVER (Intersect(All([Axis.Color]), [Axis.X]))

Sum([Sales]) / Sum([Sales]) OVER (All([Axis.X])) * 100

Ejemplos de columnas calculadas:

Sum([Sales]) OVER All([Date])

Max([Sales]) OVER Intersect([Category], All([Date]))

AllNext Usa todos los nodos, incluido el actual, hasta el final del nivel.

Ejemplo de una expresión personalizada:

Sum([Sales]) OVER (AllNext([Axis.X]))

Ejemplos de columnas calculadas:

Sum([Sales]) OVER AllNext([Date])

Max([Sales]) OVER Intersect([Category], AllNext([Date]))

AllPrevious Usa todos los nodos, incluido el actual, desde el inicio del nivel. Se puede usar para calcular la suma acumulativa.

Ejemplos de expresiones personalizadas:

Sum([Sales]) OVER (AllPrevious([Axis.X]))

Sum([Sales]) OVER (Intersect(Parent([Axis.X]), AllPrevious([Axis.X])))

Ejemplos de columnas calculadas:

Sum([Sales]) OVER AllPrevious([Date])

Max([Sales]) OVER Intersect([Category], AllPrevious([Date]))

FirstNode Selecciona el primer nodo del nivel actual.

Ejemplo de una expresión personalizada:

Sum([Sales]) - Sum([Sales]) OVER (FirstNode([Axis.X]))

Ejemplo de una columna calculada:

Sum([Sales]) - Sum([Sales]) OVER (FirstNode([Hierarchy.TimeHierarchy]))

Intersect Devuelve las filas cruzadas de los nodos en distintas jerarquías. Consulte también AllPrevious y All.

Ejemplo de una expresión personalizada:

Intersect(Parent([Axis.X]), All([Axis.Color]), Parent([Axis.Rows]), ...)

Ejemplo de una columna calculada:

Sum([Sales]) OVER Intersect([Category], AllPrevious([Date]))

LastNode Selecciona el último nodo del nivel actual.

Ejemplo de una expresión personalizada:

Sum([Sales]) - Sum([Sales]) OVER (LastNode([Axis.X]))

Ejemplo de una columna calculada:

Sum([Sales]) - Sum([Sales]) OVER (LastNode([Hierarchy.TimeHierarchy]))

LastPeriods Incluye el nodo actual y los n - 1 nodos anteriores. Esta opción se puede usar para calcular promedios móviles.

Ejemplo de una expresión personalizada:

Sum([Sales]) OVER (LastPeriods(3, [Axis.X]))/3

Ejemplo de una columna calculada:

Sum([Sales]) - Sum([Sales]) OVER (LastPeriods([Hierarchy.TimeHierarchy]))

NavigatePeriod Permite especificar su propia navegación de nodo. El método tiene cuatro argumentos:

Arg1 es la jerarquía por la que se debe navegar.

Arg2 es un valor de cadena que especifica el máximo nivel de la jerarquía hasta el que puede navegar.

Arg3 es un entero que especifica el número de pasos que se puede mover hacia los lados en la jerarquía en el nivel especificado en Arg1.

Arg4 es opcional y determina el nivel mínimo de la jerarquía al que puede navegar. Es posible omitir este argumento en cuyo caso se realiza una navegación hasta el nivel de hoja.

Ejemplos de expresiones personalizadas:

Sum([Sales]) OVER NavigatePeriod([Axis.X], "Year", -1)

Sum([Value]) OVER NavigatePeriod([Axis.X], "Year", 0, 0)

Sum([Sales]) OVER NavigatePeriod([Axis.X], 2, -1, 2)

Ejemplo de una columna calculada:

Avg([Sales]) OVER (NavigatePeriod([Hierarchy.TimeHierarchy],0,-10)) - Avg([Sales])OVER (NavigatePeriod([Hierarchy.TimeHierarchy],0,10))

Next Compara el nodo actual con el nodo siguiente del mismo nivel en la jerarquía. Si no hay un nodo de este tipo, es decir, si el actual es el último del nivel, el subconjunto resultante no contendrá ninguna fila.

Ejemplos de expresiones personalizadas:

Sum([Sales]) - Sum([Sales]) OVER (Next([Axis.X]))

Count() OVER Next([Axis.X], 2)

Ejemplo de una columna calculada:

Max([Sales]) OVER (Intersect([Category],Next([Year])))

NextPeriod Usa el siguiente nodo que tiene el valor siguiente en el mismo nivel que el nodo actual. Si no hay un nodo de este tipo, es decir, si el actual es el último del nivel, el subconjunto resultante no contendrá ninguna fila.

Ejemplos de expresiones personalizadas:

Sum([Sales]) OVER (NextPeriod([Axis.X]))

Count() OVER NextPeriod([Axis.X], 2)

Ejemplo de una columna calculada:

Max([Sales]) OVER (Intersect([Category],NextPeriod([Year])))

ParallelPeriod Usa el nodo paralelo anterior con el mismo valor en el mismo nivel que el nodo actual. Por ejemplo, se puede usar para comparar los resultados de ventas de cada mes con el mes correspondiente del año anterior.

Ejemplo de una expresión personalizada:

Sum([Sales])-Sum([Sales]) OVER (ParallelPeriod([Axis.X]))

Ejemplo de una columna calculada:

Sum([Sales])-Sum([Sales]) OVER (ParallelPeriod([Hierarchy.TimeHierarchy]))

Parent Usa el subconjunto principal del nodo actual. Si el nodo no tiene uno principal, se usan todas las filas como subconjunto.

Ejemplos de expresiones personalizadas:

Sum([Sales]) / Sum([Sales]) OVER (Parent([Axis.Color]))

Sum([Sales]) / Sum([Sales]) OVER (Parent([Axis.X])) * 100

Avg([Sales]) OVER Parent([Axis.X])

Ejemplo de una columna calculada:

Sum([Sales]) OVER (Parent([Hierarchy.TimeHierarchy]))

Previous Utiliza el nodo anterior en el mismo nivel que el nodo actual para comparar el resultado de este nodo con el anterior. Si no hay un nodo anterior, es decir, si el actual es el primero del nivel, el subconjunto resultante no contendrá ninguna fila.

Ejemplos de expresiones personalizadas:

Sum([Sales]) - Sum([Sales]) OVER (Previous([Axis.X]))

Count() OVER Previous([Axis.X], 2)

Ejemplo de una columna calculada:

Max([Sales]) OVER (Intersect([Category],Previous([Year])))

PreviousPeriod Usa el siguiente nodo que tiene el valor anterior en el mismo nivel que el nodo actual. Si no hay un nodo anterior, es decir, si el actual es el primero del nivel, el subconjunto resultante no contendrá ninguna fila.

Ejemplos de expresiones personalizadas:

Sum([Sales]) OVER (PreviousPeriod([Axis.X]))

Count() OVER PreviousPeriod([Axis.X], 2)

Ejemplo de una columna calculada:

Max([Sales]) OVER (Intersect([Category],PreviousPeriod([Year])))

Consulte también Funciones.