Definir asignaciones con ámbito mediante comandos de secuencias de comandos
En las tareas de los dos temas anteriores de esta lección, aprendió a agregar miembros calculados y cálculos de conjuntos con nombre a la secuencia de comandos de cálculo de un cubo. Además de estos dos tipos específicos de cálculos de Expresiones multidimensionales (MDX), también puede utilizar Nuevo comando de secuencia de comandos para realizar la mayoría de las acciones de un cubo que admita MDX.
En Microsoft SQL Server 2005 Analysis Services (SSAS), las secuencias de comandos MDX se pueden aplicar a todo el cubo o a secciones específicas del mismo, en puntos determinados de la ejecución de la secuencia de comandos. Ya conoce algo sobre el comando de secuencia de comandos predeterminado, la instrucción CALCULATE, que llena las celdas del cubo con datos agregados según el ámbito predeterminado.
El ámbito predeterminado es todo el cubo pero, tal como se dijo en el tema anterior, puede usar la instrucción SCOPE para definir un ámbito más limitado, conocido como subcubo y, a continuación, aplicar una secuencia de comandos MDX sólo a dicho espacio determinado del cubo. La instrucción SCOPE define el ámbito de todas las instrucciones y expresiones MDX dentro de la secuencia de comandos de cálculo hasta que el ámbito actual finalice o vuelva a definirse. La instrucción THIS se utiliza entonces para aplicar una expresión MDX al ámbito actual. Puede utilizar la instrucción BACK_COLOR para especificar un color de celda de fondo para las celdas del ámbito actual que le ayude durante la depuración.
En las tareas de este tema, utilizará las instrucciones SCOPE y THIS para definir cuotas de venta para cada trimestre fiscal del año fiscal 2005. A continuación, podrá asignar cuotas de venta al nivel Mes de todos los años fiscales del cubo. También aprenderá a utilizar los puntos de interrupción para que le ayuden a depurar la secuencia de comandos de cálculo.
Revisar las asignaciones de cuota de importe de venta (Sales Amount Quota) por tiempo y empleado
Para revisar las asignaciones de cuota de importe de venta (Sales Amount Quota) por tiempo y empleado
Abra el Diseñador de cubos para el cubo Analysis Services Tutorial y, a continuación, haga clic en la ficha Examinador.
Quite todas las jerarquías y medidas del panel Datos y quite todos los miembros de la dimensión del panel Filtro.
Agregue la medida Sales Amount Quota del grupo de medida Sales Quotas al área de datos del panel Datos.
Agregue la jerarquía definida por el usuario Fiscal Time a la columna.
Agregue la jerarquía de atributo Employee Name al área de fila.
Observe que no se han definido valores de cuota de venta para el año fiscal 2005.
En el área de columna, quite FY 2002 y FY 2003.
En área de la columna, expanda FY 2004, H1 FY 2004 y, a continuación, expanda Q3 FY 2004.
Observe que la cuota de importe de venta para cada mes fiscal del trimestre fiscal es la misma que la cuota de importe de venta para el trimestre fiscal. Esto se debe a que la granularidad de la dimensión de tiempo del grupo de medida Sales Quota es el nivel de trimestre, tal como se abordó en la lección 5.
La siguiente imagen muestra la cuota de venta para cada empleado que tenga una cuota de venta para cada mes del cuarto trimestre del año fiscal 2004.
Definir el ámbito para el cálculo de cuota de importe de venta (Sales Amount Quota) para el año fiscal 2005
En esta tarea, revisará el ámbito actual, lo modificará y, a continuación, definirá un cálculo que determine los valores de cuota de importe de venta para el año fiscal 2005 según los valores para el año fiscal 2004.
Para definir el ámbito para el cálculo de cuota de importe de venta (Sales Amount Quota) para el año fiscal 2005
Seleccione la ficha Cálculos y, a continuación, seleccione Vista de formulario en la barra de herramientas.
En el panel Organizador de secuencias de comandos, seleccione Large Resellers y, a continuación, haga clic en Nuevo comando de secuencia de comandos en la barra de herramientas de la ficha Cálculos.
Observe que aparece una secuencia de comandos vacía en el panel Expresiones de cálculo y que este comando de secuencia de comandos aparece con un título en blanco del panel Organizador de secuencias de comandos.
En el panel Expresiones de cálculo, escriba la siguiente instrucción:
/* Changing Scope to All or Default Member */ SCOPE (ROOT())
Esta instrucción SCOPE cambia el ámbito del cubo al miembro All o predeterminado para todos los atributos del cubo.
Haga clic en Nuevo comando de secuencia de comandos en la barra de herramientas de la ficha Cálculos y, a continuación, escriba la siguiente instrucción en el panel Expresiones de cálculo:
/* Defining the cube scope for the sales amount quotas for FY2005 */ SCOPE ()
Observe que aparece una línea serpenteante roja debajo del paréntesis final para indicarle que tiene que definir un conjunto de miembros dentro del paréntesis para la instrucción SCOPE. Empezará agregando la medida Sales Amount Quota a la instrucción SCOPE para incluir esta medida dentro del ámbito.
En la ficha Metadatos del panel Herramientas de cálculo, expanda Medidas, Sales Quotas y, a continuación, arrastre la medida Sales Amount Quota al paréntesis para la instrucción SCOPE en el panel Expresiones de cálculo.
Observe que la línea serpenteante roja desaparece. A continuación, agregará el miembro de dimensión FY 2005 a la instrucción SCOPE para agregar este miembro de dimensión de tiempo al ámbito actual.
En la ficha Metadatos del panel Herramientas de cálculo, expanda Date, Fiscal, Fiscal Time, Fiscal Year y, a continuación, arrastre FY 2005 a la instrucción SCOPE en el panel Expresiones de cálculo inmediatamente después del miembro [Sales Amount Quota] del conjunto que esté definiendo.
Observe la línea serpenteante roja debajo de la parte [Date] de este nuevo miembro del conjunto. Esta línea le informa de que existe un error de sintaxis inmediatamente anterior a este miembro de dimensión, porque es necesaria una coma entre cada miembro del conjunto dentro de la instrucción SCOPE.
Agregue la coma necesaria antes de la parte [Date] del miembro FY 2005 de la dimensión Date.
Observe que la línea serpenteante roja inicial desaparece. A continuación, agregará los miembros de la jerarquía definida por el usuario Employees de la dimensión Employee a la instrucción SCOPE para agregar estos miembros al ámbito actual.
En la ficha Metadatos del panel Herramientas de cálculo, expanda Employee y, a continuación, arrastre la jerarquía definida por el usuario Employees a la instrucción SCOPE del panel Expresiones de cálculo inmediatamente después del miembro [Date].[Fiscal Time].[Fiscal Year].&[2005] del conjunto que está definiendo.
Observe la línea serpenteante roja situada debajo de la parte [Employee] de este nuevo miembro del conjunto, para indicar que se necesita una coma entre cada miembro del conjunto dentro de la instrucción SCOPE.
Agregue la coma necesaria antes de la parte [Employee] del nuevo miembro.
Observe que la línea serpenteante roja inicial desaparece.
Al final del miembro [Employee].[Employees] de este conjunto de la instrucción SCOPE, agregue la siguiente cláusula para completar la definición de este tercer miembro del conjunto:
.Members
Esta cláusula especifica que todos los miembros de la jerarquía Employees de la dimensión Employee deberían incluirse en el ámbito del cubo actual.
Compruebe que la instrucción SCOPE completa coincide con la siguiente secuencia de comandos:
SCOPE ([Measures].[Sales Amount Quota],[Date].[Fiscal Time].[Fiscal Year].&[2005], [Employee].[Employees].Members)
Acaba de finalizar la definición de ámbito que define el subcubo al que aplicará una expresión MDX para calcular el importe de cuota de ventas para el año fiscal 2005.
En la barra de herramientas de la ficha Cálculos, haga clic en Vista de secuencia de comandos y revise los comandos de secuencia de comandos recientemente agregados.
Observe que cada comando de secuencia de comandos aparece tal como lo escribió en el panel Expresiones de cálculo pero con un punto y coma agregado al final de cada uno de ellos. Observe también que el comentario situado antes de cada comando de secuencia de comandos le ayuda a entender cada comando por separado, como se muestra en la siguiente imagen.
Definir y probar el nuevo cálculo de cuota de ventas para el año fiscal 2005
En este procedimiento, agregará un nuevo comando de secuencia de comandos a la secuencia de comandos de cálculo que calcula el importe de cuota de venta para el año fiscal 2005 de todos los miembros de la dimensión Employee. Sin embargo, en lugar de agregar el comando de secuencia de comandos a la vista Formulario, agregará el comando de secuencia de comandos directamente a la vista Secuencia de comandos. En la vista Secuencia de comandos, asegúrese de agregar un punto y coma entre cada comando de secuencia de comandos.
Para definir y probar el nuevo cálculo de cuota de venta para el año fiscal 2005
En la vista Secuencia de comandos, escriba las siguientes instrucciones en una nueva línea al final de la secuencia de comandos de cálculo:
/* Applying a calculation to the subcube */ THIS = [Date].[Fiscal Time].[Fiscal Year].&[2004] * 1.25;
La instrucción THIS asigna un nuevo valor a la medida Sales Amount Quota en la intersección del miembro Employee y el miembro FY 2005 del subcubo. El nuevo valor se basa en el valor que existe para la intersección del miembro Employee y la medida Sales Amount Quota del año fiscal 2004 multiplicado por 1,25.
En el panel Expresiones de cálculo, haga clic en el margen situado a la izquierda de la instrucción THIS para establecer un punto de interrupción.
Observe que aparece un punto rojo en dicho margen y que la instrucción se resalta en rojo, tal como aparece en la siguiente imagen. Al ejecutar este proyecto en modo de depuración, los cambios en el proyecto aparecerán en la instancia de Analysis Services, se procesará el cubo y la secuencia de comandos de cálculo se ejecutará hasta que se encuentre el punto de interrupción. A continuación, puede completar las secuencias de comandos restantes una a una. Si no establece un punto de interrupción y ejecuta el proyecto en modo de depuración, la secuencia de comandos de cálculo se interrumpirá en la primera secuencia de comandos de cálculo, la instrucción CALCULATE.
En el menú Depurar, haga clic en Iniciar depuración (o pulse F5 en el teclado).
El proyecto se implementa y procesa, y la secuencia de comandos de cálculo se ejecuta hasta que se encuentra el punto de interrupción.
Oculte todas las ventanas acopladas para proporcionar un área mayor para ver el panel Tabla dinámica que aparece al final de la ficha Cálculos.
El panel Tabla dinámica que aparece, como se muestra en la siguiente imagen, le ayudará para la depuración.
En el panel Tabla dinámica, agregue la medida Sales Amount Quota al área de datos, agregue la jerarquía definida por el usuario Date.Fiscal Time al área de columna y, a continuación, agregue la jerarquía de atributo Employee Name de la dimensión Employee al área de fila.
Observe que el miembro FY 2005 del nivel Fiscal Year para la medida Sales Amount Quota de cada empleado no contiene ningún valor en el área de datos para la medida Sales Quota Amount, como se muestra en la siguiente imagen. De manera predeterminada, las celdas vacías aparecen en el panel Tabla dinámica cuando está en modo de depuración.
Pulse F10 para ejecutar la instrucción THIS y calcular la cuota de venta para el año fiscal 2005.
Observe que ahora se han calculado las celdas del panel Tabla dinámica en la intersección de la medida Sales Amount Quota, el miembro de dimensión FY 2005 y el miembro Employee Name. Observe también que las celdas afectadas por la instrucción THIS están resaltadas en amarillo. Existe un icono en la barra de herramientas para habilitar o deshabilitar el resaltado de las celdas modificadas. De forma predeterminada, las celdas modificadas se resaltan.
En el panel Tabla dinámica, quite FY 2002, FY 2003 y FY 2004 del área de columna.
Haga clic con el botón secundario en cualquier parte del área de datos y, a continuación, haga clic en Mostrar celdas vacías para quitar la marca de verificación situada junto a esta opción y ocultar todas las celdas vacías (esta opción también está disponible en la barra de herramientas de la ficha Cálculos). Esto hará más fácil ver a todos los empleados que tengan valores de cuota de importe de venta, como muestra la siguiente imagen.
En el panel Tabla dinámica, intente expandir FY 2005 en el área de columna.
Observe que no puede expandir FY 2005 porque los valores para el miembro H1 FY 2005 en la intersección de la medida Sales Amount Quota y la jerarquía de atributo Employee Name no se han calculado (porque estaban fuera del ámbito actual).
Para ver las celdas vacías de los valores para miembros H1 FY 2005, haga clic en cualquier parte del panel Tabla dinámica y, a continuación, haga clic en Mostrar celdas vacías en la barra de herramientas de la ficha Cálculos para mostrar todas las celdas vacías, como aparece en la siguiente imagen.
En el menú Depurar, haga clic en Detener depuración (o pulse Mayús-F5 en el teclado).
Quite el punto de interrupción de la secuencia de comandos de cálculo, haciendo clic en el punto de interrupción del margen izquierdo.
Asignar cuotas de importe de venta a los semestres y trimestres del año fiscal 2005
En este procedimiento, se modifica el ámbito para incluir los miembros de semestre fiscal de Fiscal Year 2005 en lugar del miembro Fiscal Year 2005, y se asigna posteriormente la mitad del valor de la cuota de importe de venta para el año fiscal 2005 (Fiscal Year 2005) a cada semestre del año fiscal 2005 (Fiscal Year 2005). A continuación, modificará el ámbito para incluir los miembros de trimestre fiscal de Fiscal Year 2005 en lugar del miembro Fiscal Year 2005 y asignará una cuarta parte del valor de cuota de importe de venta para el año fiscal 2005 (Fiscal Year 2005) a cada trimestre del año fiscal 2005 (Fiscal Year 2005). Por último, probará estas asignaciones.
Para asignar cuotas de importe de venta a los semestres y trimestres del año fiscal 2005
En la vista Secuencia de comandos del panel Expresiones de cálculo, escriba la siguiente instrucción en una nueva línea al final de la secuencia de comandos de cálculo:
/* Allocation of Sales Amount Quota to the 2005 Fiscal Semesters */ SCOPE ( [Date].[Fiscal Semester].[Fiscal Semester].Members );
Esta instrucción SCOPE es una instrucción SCOPE anidada porque no aparece ninguna instrucción END SCOPE entre esta instrucción SCOPE y la instrucción SCOPE anterior. Cuando una instrucción SCOPE está anidada, la instrucción SCOPE anidada hereda el ámbito primario para aquellos atributos cuyo ámbito no se haya vuelto a definir. La instrucción SCOPE anterior no modifica directamente la medida Sales Amount Quota, la jerarquía definida por el usuario Employees ni la jerarquía definida por el usuario Fiscal Time. En su lugar, agrega cada miembro de la jerarquía de atributo Fiscal Semester a la definición del subcubo (mediante la función Members). Para obtener más información, vea Members (Set) (MDX). Como resultado de la instrucción SCOPE anidada, el espacio del cubo incluye ahora a todos los miembros que estén en la intersección del miembro Employee y la medida Sales Amount Quota de cualquier semestre fiscal de Fiscal Year 2005 (actualmente sólo hay un semestre fiscal en Fiscal Year 2005).
En el panel Expresiones de cálculo, escriba la siguiente instrucción en una nueva línea al final de la secuencia de comandos de cálculo:
THIS = [Date].[Fiscal Time].CurrentMember.Parent / 2;
Esta instrucción asigna a cada semestre fiscal en el espacio del cubo definido el valor calculado para el trimestre fiscal. La función CurrentMember.Parent se utiliza para asignar a cada miembro una cuarta parte del valor de su primario. Para obtener más información, vea CurrentMember (MDX) y Parent (MDX).
En el panel Expresiones de cálculo, escriba la siguiente instrucción en una nueva línea al final de la secuencia de comandos de cálculo:
/* Allocation of Sales Amount Quota to the 2005 Fiscal Quarters */ SCOPE ( [Date].[Fiscal Quarter].[Fiscal Quarter].Members );
Esta instrucción SCOPE también es una instrucción SCOPE anidada porque no aparece ninguna instrucción END SCOPE entre esta instrucción SCOPE y la instrucción SCOPE anterior. La instrucción SCOPE anterior no modifica directamente la medida Sales Amount Quota, la jerarquía definida por el usuario Employees ni la jerarquía definida por el usuario Fiscal Time. En su lugar, agrega cada miembro de la jerarquía de atributo Fiscal Quarter a la definición del subcubo (mediante la función Members). Como resultado, el espacio del cubo incluye ahora a todos los miembros que estén en la intersección del miembro Employee y la medida Sales Amount Quota de cualquier trimestre fiscal del año fiscal 2005 (actualmente sólo hay un trimestre fiscal en Fiscal Year 2005 en el cubo).
En el panel Expresiones de cálculo, escriba la siguiente instrucción en una nueva línea al final de la secuencia de comandos de cálculo:
THIS = [Date].[Fiscal Time].CurrentMember.Parent / 2;
Esta instrucción asigna a cada trimestre fiscal en el espacio del cubo definido el valor calculado para el trimestre fiscal. La función CurrentMember.Parent se utiliza para asignar a cada miembro la mitad del valor de su primario.
En el panel Expresiones de cálculo, haga clic en el margen situado junto a la instrucción SCOPE para establecer un punto de interrupción y, a continuación, pulse F5 en el teclado.
La secuencia de comandos de cálculo se ejecuta hasta que se encuentra el punto de interrupción.
Haga clic en cualquier parte del área de datos del panel Tabla dinámica y, a continuación, en Mostrar celdas vacías en la barra de herramientas de la ficha Cálculos para ocultar las celdas vacías.
Observe que el panel de datos se llena con las mismas medidas y jerarquías que utilizaba el depurador en el último paso a través, y que se ha calculado el valor para el miembro H1 FY 2005, la mitad del valor de su primario, como aparece en la siguiente imagen.
Por último, observe que el valor para cada miembro de FY 2005 se vuelve a calcular en la agregación de sus miembros, que en este caso es el primer semestre fiscal del año fiscal. El valor del miembro Fiscal Year 2005 se ve afectado por el cálculo del miembro Fiscal Semester 2005 porque cada secuencia de comandos se ejecuta como paso independiente. Para fijar un valor existente de modo que no se vea afectado por las instrucciones posteriores en la secuencia de comandos de cálculo, utilice la instrucción FREEZE. Para obtener más información, vea FREEZE (Instrucción, MDX).
En el área de columna, expanda H1 FY 2005.
Observe que el valor para el miembro Q1 FY 2005 todavía no se ha calculado.
Haga clic en cualquier parte del área de datos del panel Tabla dinámica y, a continuación, en Mostrar celdas vacías en la barra de herramientas de la ficha Cálculos.
En el área de columna, expanda Q1 FY 2005.
Observe que no hay ningún valor asignado a los dos meses del primer trimestre del año fiscal 2005 (Fiscal Year 2005) porque estos miembros ya no están en el ámbito del actual subcubo (hasta que se ejecuten las dos instrucciones finales de la secuencia de comandos). La dimensión de tiempo del cubo Analysis Services Tutorial sólo contiene los dos primeros meses de Fiscal Year 2005. En consecuencia, no existe ningún miembro Q2 FY 2005.
Pulse F10 para ejecutar la instrucción SCOPE y, a continuación, presione F10 de nuevo para ejecutar la instrucción final en la secuencia de comandos de cálculo, que aplica el cálculo al subcubo actual.
Observe que se calcula el valor para el miembro Q1 FY 2005, y que se vuelve a calcular el valor de H1 FY 2005 y los valores de miembro FY2005 (como la agregación de sus miembros secundarios), como se indica en la siguiente imagen. Observe también que no se calcula el valor para cada mes fiscal del año fiscal 2005 (julio y agosto de 2005). En el siguiente procedimiento, asignará los valores adecuados a cada trimestre.
En el menú Depuración, haga clic en Detener depuración (o pulse Mayús-F5 en el teclado).
Quite el punto de interrupción de la secuencia de comandos de cálculo.
Asignar cuotas de venta a meses
En este procedimiento, modificará el ámbito para incluir el nivel del mes fiscal en todos los años fiscales (las instrucciones del ámbito anterior limitaban los cálculos al año fiscal 2005 únicamente). A continuación, asignará una tercera parte del valor del trimestre fiscal para la cuota de venta de cada empleado a cada mes fiscal.
Para asignar cuotas de venta a meses
En el panel Expresiones de cálculo, agregue las siguiente instrucciones en una nueva línea al final de la secuencia de comandos de cálculo:
/* Allocate Quotas to Months */ SCOPE ( [Date].[Fiscal Time].[Fiscal Month].Members );
Esta instrucción SCOPE es otra instrucción de ámbito anidada que modifica el espacio del cubo en el que se aplicará una expresión MDX para asignar las cuotas de venta a cada mes fiscal según el valor de cada trimestre fiscal. Esta instrucción SCOPE es parecida a la instrucción SCOPE anidada anterior, pero observe que el ámbito de la jerarquía definida por el usuario Fiscal Time se vuelve a definir. Por lo tanto, los miembros del espacio del cubo incluirán ahora todos los miembros Fiscal Month de la dimensión Date en lugar de únicamente los miembros Fiscal Month de Fiscal Year 2005.
[!NOTA] Compare esta modificación del ámbito del cubo con la modificación del ámbito del cubo del procedimiento anterior para asegurarse de entender la diferencia entre las dos instrucciones de cambio de ámbito.
En el panel Expresiones de cálculo, agregue las siguiente instrucciones en una nueva línea al final de la secuencia de comandos de cálculo:
THIS = [Date].[Fiscal Time].CurrentMember.Parent / 3;
Esta instrucción asigna a cada miembro Month de la jerarquía Fiscal Time una tercera parte del valor de su primario (nivel de trimestre). Este cálculo se aplicará a todos los meses fiscales del cubo.
En el panel Expresiones de cálculo, haga clic en el margen situado a la izquierda de la instrucción THIS final para establecer un punto de interrupción y, a continuación, pulse F5 en el teclado.
Revise los valores para julio de 2004 y agosto de 2004.
Observe que actualmente no se ha calculado ningún valor para julio de 2004 ni para agosto de 2004.
Haga clic con el botón secundario en el panel Datos y, a continuación, haga clic en Mostrar celdas vacías para mostrar sólo las celdas que tienen valores.
De esta forma podrá ver más fácilmente cómo se aplica la instrucción final en la secuencia de comandos de cálculo.
Presione F10 para ejecutar la instrucción final.
Observe que el valor Sales Amount Quota para cada empleado de cada mes fiscal se calcula en un valor que es igual a una tercera parte de su valor primario, tal como muestra la siguiente imagen.
En el área de columna, quite FY 2005 y, a continuación, agregue Q4 FY 2004.
Expanda FY 2004, expanda H2 FY 2004 y, a continuación, Q4 FY 2004.
Observe que el valor para cada mes fiscal es igual al valor total del trimestre fiscal, como muestra la siguiente imagen.
En el menú Depurar, haga clic en Detener depuración.
Quite el punto de interrupción de la secuencia de comandos de cálculo.
En la barra de herramientas, haga clic en Guardar todo.
[!NOTA] Para disponer de un proyecto completo de la lección 6, descargue e instale los ejemplos actualizados. Para obtener más información, vea Obtener ejemplos actualizados en Instalar ejemplos.
Lección siguiente
Lección 7: Definir indicadores clave de rendimiento (KPI)
Vea también
Otros recursos
Crear y editar secuencias de comandos MDX
SCOPE (Instrucción, MDX)
Contenido de FORE_COLOR y BACK_COLOR (MDX)
This (MDX)
FREEZE (Instrucción, MDX)
CurrentMember (MDX)
Parent (MDX)
Members (Set) (MDX)