Compartir a través de


Administración del ámbito y el contexto (MDX)

En Microsoft SQL Server Analysis Services, un script de expresiones multidimensionales (MDX) se puede aplicar a todo el cubo o a partes específicas del cubo, en puntos específicos dentro de la ejecución del script. El script MDX puede adoptar un enfoque en capas para los cálculos dentro de un cubo mediante el uso de pasos de cálculo.

Nota:

Para obtener más información sobre cómo los pasos de cálculo pueden afectar a los cálculos, vea Understanding Pass Order and Solve Order (MDX).

Para controlar el paso de cálculo, el ámbito y el contexto dentro de un script MDX, use específicamente la instrucción CACULATE, la This función y la instrucción SCOPE.

Uso de la instrucción CALCULATE

La instrucción CALCULATE rellena cada celda del cubo con datos agregados. Por ejemplo, el script MDX predeterminado tiene una sola instrucción CALCULATE al principio del script.

Para obtener más información sobre la sintaxis de la instrucción CALCULATE, vea INSTRUCCIÓN CALCULATE (MDX).

Nota:

Si el script contiene una instrucción SCOPE que contiene una instrucción CALCULATE, MDX evalúa la instrucción CALCULATE dentro del contexto del subcubo definido por la instrucción SCOPE, no en todo el cubo.

Uso de esta función

La This función permite recuperar el subcubo actual dentro de un script MDX. Puede usar la This función para establecer rápidamente el valor de las celdas dentro del subcubo actual en una expresión MDX. A menudo se usa la This función junto con la instrucción SCOPE para cambiar el contenido de un subcubo específico durante un paso de cálculo específico.

Nota:

Si el script contiene una instrucción SCOPE que incluye una función This, MDX evalúa la función This dentro del contexto del subcubo definido por la instrucción SCOPE, no en todo el cubo.

Este ejemplo de función

En el siguiente ejemplo de comando de script MDX se usa la función This para aumentar en 10% el valor de la medida Amount, en el grupo de medida Finance del cubo de ejemplo Adventure Works DW Multidimensional 2012, para los elementos secundarios del miembro Redmond en la dimensión Customer.

/* This SCOPE statement defines the current subcube */  
SCOPE([Customer].&[Redmond].MEMBERS,   
    [Measures].[Amount], *);  
        /* This expression sets the value of the Amount measure */  
        THIS = [Measures].[Amount] * 1.1;  
END SCOPE;  

Para obtener más información sobre la sintaxis de la This función, vea This (MDX).

Empleo de la declaración SCOPE

La instrucción SCOPE define el subcubo actual que contiene y especifica el ámbito de otras expresiones y instrucciones MDX dentro de un script MDX. MDX evalúa estas otras expresiones y instrucciones MDX, incluida la This función y la instrucción CALCULATE, dentro del contexto del subcubo.

Una declaración SCOPE es dinámica, aunque no es iterativa por naturaleza. Las instrucciones contenidas en una instrucción SCOPE se ejecutan una vez, pero el subcubo se puede determinar dinámicamente. Por ejemplo, tiene un cubo denominado SampleCube. En el cubo SampleCube, se aplica la siguiente instrucción SCOPE para definir un subcubo que define el contexto como ALLMEMBERS dentro de la dimensión Measures:

SCOPE([Measures].ALLMEMBERS);

THIS = [Measures].ALLMEMBERS.COUNT;

END SCOPE;

Las instrucciones y expresiones de esta instrucción SCOPE se ejecutan una vez.

Ahora, un usuario empresarial ejecuta la siguiente consulta MDX que contiene una medida, denominada ExistingMeasure, en el cubo SampleCube:

WITH MEMBER [Measures].[NewMeasure] AS '1'

SELECT

[Measures].ALLMEMBERS ON COLUMNS,

[Customer].DEFAULTMEMBER ON ROWS

FROM

[SampleCube]

El conjunto de celdas devuelto de la consulta es similar a la salida que se muestra en la tabla siguiente.

[MedidaExistente] [NuevaMedida]
[Cliente]. [Todos] 2 2

Al examinar el conjunto de celdas devuelto, observe cómo el valor ExistingMeasure, incluido en la instrucción SCOPE dentro del script MDX, se actualiza dinámicamente después de definir la medida NewMeasure.

Una instrucción SCOPE se puede anidar dentro de otra instrucción SCOPE. Sin embargo, como la instrucción SCOPE no es iterativa, el propósito principal de insertar instrucciones SCOPE es subdividir más detalladamente un subcubo para recibir un tratamiento especial.

Ejemplo de declaración de alcance (SCOPE)

En el siguiente ejemplo de script MDX se usa una instrucción SCOPE para establecer el valor de la medida Amount en el grupo de medidas Finance del cubo de ejemplo Multidimensional 2012 de Adventure Works DW, aumentándolo en 10% más alto para los hijos del miembro Redmond en la dimensión Customer. Sin embargo, otra instrucción SCOPE cambia el subcubo para incluir la medida Importe para los hijos del año natural de 2002. Por último, la medida "Cantidad" solo se agrega para ese subcubo, manteniendo los valores agregados de la medida "Cantidad" en otros años naturales sin alteración.

/* Calculate the entire cube first. */  
CALCULATE;  
/* This SCOPE statement defines the current subcube */  
SCOPE([Customer].&[Redmond].MEMBERS,   
    [Measures].[Amount], *);  
        /* This expression sets the value of the Amount measure */  
        THIS = [Measures].[Amount] * 1.1;  
END SCOPE;  

Para obtener más información sobre la sintaxis de la instrucción SCOPE, vea SCOPE Statement (MDX).

Véase también

Referencia del lenguaje MDX (MDX)
El script MDX básico (MDX)
Aspectos básicos de la consulta MDX (Analysis Services)