Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
se aplica a:
SQL Server Analysis Services
Azure Analysis Services
Fabric/Power BI Premium
En Microsoft SQL Server 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 función This 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 a su vez contiene una instrucción CALCULATE, MDX evalúa la instrucción CALCULATE en el contexto del subcubo definido por la instrucción SCOPE, en lugar de hacerlo en el cubo completo.
Uso de esta función
La función This permite recuperar el subcubo actual dentro de un script MDX. Puede usar esta 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 función This 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 contiene 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 el valor de la medida Amount en el grupo de medida Finance del cubo de ejemplo Adventure Works DW Multidimensional 2012 a un 10% más para los hijos 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 esta función , vea This (MDX).
Uso 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 función This y la instrucción CALCULATE, dentro del contexto del subcubo.
Una instrucción SCOPE es dinámica, pero no 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 dentro de esta declaración SCOPE se ejecutan solo 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.
| [ExistingMeasure] | [NewMeasure] | |
|---|---|---|
| [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 anidar instrucciones SCOPE es subdividir un subcubo aún más para tratamiento especial.
Ejemplo de declaración de alcance
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 Adventure Works DW Multidimensional 2012, en un 10% más para los hijos del miembro Redmond en la dimensión Customer. Sin embargo, otra instrucción SCOPE cambia el subcubo para incluir la medida "Amount" para los hijos del año natural de 2002. Por último, la medida Amount se agrega únicamente para ese subcubo, manteniendo los valores agregados de la medida Amount en otros años naturales sin cambios.
/* 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)