Compartir a través de


Crear conjuntos con nombre en MDX (MDX)

Una expresión de conjunto puede ser una declaración extensa, compleja y, por tanto, difícil de seguir o entender. O bien, una expresión de conjunto puede utilizarse con tanta frecuencia que definir repetidamente el conjunto sea fatigoso. Para facilitar el trabajo con una expresión larga, compleja o de uso habitual, las Expresiones multidimensionales (MDX) permiten definir expresiones como un conjunto con nombre.

Esencialmente, un conjunto con nombre es una expresión de conjunto a la que se ha asignado un alias. Un conjunto con nombre puede incorporar miembros o funciones que se pueden incorporar normalmente a un conjunto. Como MDX trata el alias del conjunto con nombre como una expresión de conjunto, puede utilizar ese alias en cualquier lugar en que se acepte una expresión de conjunto.

Puede definir un conjunto con nombre para que tenga uno de los contextos siguientes:

  • Ámbito de consulta   Para crear un conjunto con nombre definido como parte de una consulta MDX, y en consecuencia con un ámbito limitado a la consulta, debe utilizar la palabra clave WITH. Puede utilizar el conjunto con nombre en una instrucción MDX SELECT. De esta manera, el conjunto con nombre creado con la palabra clave WITH se puede cambiar sin tener que tocar la instrucción SELECT.

    Para obtener más información sobre el uso de la palabra clave WITH para crear conjuntos con nombre, vea Crear conjuntos con nombre del ámbito de consulta (MDX).

  • Ámbito de sesión Para crear un conjunto con nombre cuyo ámbito sea más amplio que el contexto de la consulta, es decir, un ámbito que represente el período de duración de la sesión MDX, debe utilizar la instrucción CREATE SET. Un conjunto con nombre definido por la utilización de la instrucción CREATE SET está disponible para todas las consultas de MDX de esa sesión. La instrucción CREATE SET tiene sentido, por ejemplo, en una aplicación cliente que reutilice un conjunto de un modo coherente en varias consultas diferentes.

    Para obtener más información sobre el uso de la instrucción CREATE SET para crear conjuntos con nombre en una sesión, vea Crear conjuntos con nombre de ámbito de sesión (MDX).

  • Ámbito global. Para crear un conjunto con nombre cuyo ámbito sea más amplio que el contexto de la sesión del usuario, es decir, un ámbito que represente la duración de la instancia en ejecución, debe utilizar la instrucción CREATE SET dentro del script MDX predeterminado. Para obtener más información, vea Script MDX básico (MDX). Un conjunto con nombre definido utilizando CREATE SET en el script MDX predeterminado está disponible para todos los usuarios en todas sus consultas MDX de cualquier sesión.

El contenido de los conjuntos con nombre se puede evaluar en el momento de la creación (estático) o siempre que se utilizan en una consulta (dinámico). La sintaxis CREATE SET [STATIC|DYNAMIC] define cuando se evalúa el conjunto; vea Instrucción CREATE SET (MDX)Instrucción CREATE SET (MDX)para obtener más información. De forma predeterminada, los conjuntos se crean como STATIC si no se especifica ninguna palabra clave en la instrucción de creación.

Los conjuntos con nombre con un comportamiento dinámico se pueden definir globalmente (en el script MDX predeterminado) o en el ámbito de una sesión. Sin embargo, estos conjuntos con nombre solo se evalúan cuando se resuelve una consulta (ámbito de consulta). Se producirá un error siempre que se intente evaluar un conjunto dinámico en un ámbito global o de sesión; esto también se aplica a las referencias indirectas de conjuntos dinámicos. La siguiente es una lista de los cálculos, definida globalmente o en el ámbito de la sesión, que puede hacer referencia a conjuntos con nombre dinámicos.

  • Miembros calculados

  • Conjuntos con nombre dinámicos

  • KPI

  • Expresiones de lado derecho (RHS) de una expresión de asignación

  • Expresión de condición del cálculo de una celda

  • Expresión de valor del cálculo de una celda

Dentro de cualquier consulta MDX, es posible para hacer referencia a un conjunto dinámico porque este se evaluará en el ámbito de la consulta.

Nota de advertenciaAdvertencia

Dado que los conjuntos dinámicos no se evalúan durante el comando CREATE SET, se crea un vínculo a todos los objetos (estático o dinámico) de los que el conjunto dinámico depende. Por consiguiente, no se puede quitar ningún objeto al que se haga referencia hasta que se quite el conjunto dinámico. Por ejemplo, si un conjunto con nombre dinámico se crea en la sesión que hace referencia a un miembro calculado en una sesión, el miembro calculado no se puede eliminar mientras el conjunto con nombre dinámico exista todavía.

Resolución de conjuntos con nombre dinámicos

En un momento dado, podrían existir hasta tres versiones de un conjunto dinámico:

  • Una en el ámbito global que se usa en el script del cubo

  • Una en el ámbito de la sesión que se usa en los cálculos de la sesión

  • Una en el ámbito de la consulta que se usa en los cálculos de la consulta

La versión que se utiliza en el cálculo depende completamente del contexto de la expresión y de cómo se haga referencia al conjunto con nombre dinámico; esto es válido principalmente en las referencias indirectas.

Por ejemplo, si tiene un miembro calculado en una sesión que utiliza un conjunto con nombre dinámico de sesión y usa ese miembro calculado en una consulta, el conjunto con nombre se evaluará en el ámbito de la sesión y la cláusula WHERE de la consulta no tendrá ningún efecto en el conjunto con nombre. Sin embargo, si utiliza directamente el mismo conjunto con nombre dinámico en una consulta, el conjunto con nombre se evalúa en el ámbito de la consulta y la cláusula WHERE podría afectar a los resultados del conjunto con nombre.