Compartir a través de


Script MDX básico (MDX)

Un script de expresiones multidimensionales (MDX) define el proceso de cálculo de un cubo en Microsoft SQL Server Analysis Services. Hay dos tipos de script MDX:

  • Script MDX predeterminado
    Al crear un cubo, Analysis Services crea un script MDX predeterminado para el mismo. Este script define un paso de cálculo para todo el cubo.

  • Script MDX definido por el usuario
    Después de crear el cubo, se pueden agregar scripts MDX definidos por el usuario que amplían las capacidades de cálculo del cubo.

Script MDX predeterminado

El script MDX predeterminado que crea Analysis Services al definir un cubo contiene una sola instrucción CALCULATE. Esta única instrucción CALCULATE se ubica al comienzo del script MDX predeterminado e indica que todo el cubo debe calcularse durante el primer paso de cálculo.

El script MDX predeterminado también incluye los comandos que crean conjuntos con nombre, asignaciones y miembros calculados creados en el Diseñador de cubos:

  • Analysis Services agrega directamente comandos al script MDX predeterminado.

  • Para cada conjunto con nombre del cubo existe una instrucción CREATE SET correspondiente en el script MDX predeterminado.

  • Para cada miembro calculado definido en el cubo existe una instrucción CREATE MEMBER correspondiente en el script MDX predeterminado.

Para controlar el orden de los comandos de scripts, conjuntos con nombre y miembros calculados del script MDX predeterminado puede utilizar la pestaña Cálculos del Diseñador de cubos. Para obtener más información sobre cómo definir los cálculos almacenados en el script MDX predeterminado, vea Definir cálculos.

Si no se asocia ningún script MDX a un cubo, éste asume el script MDX predeterminado. Es necesario asociar los cubos a un script MDX como mínimo, ya que los cubos se basan en estos scripts para determinar el comportamiento del cálculo. Es decir, un cubo que no se haya asociado a ningún script MDX o que se haya asociado a un script MDX vacío no podría calcular ninguna celda. Si crea los cubos mediante programación, mediante comandos ASSL (Analysis Services Scripting Language) o mediante los Objetos de administración de análisis (AMO), se recomienda crear un script MDX predeterminad que contenga una única instrucción CALCULATE para el cubo.

Contenido de los scripts MDX

Un script MDX puede incluir las siguientes instrucciones y expresiones:

  • Todas las instrucciones de scripts MDX
    En los scripts MDX, las instrucciones de los scripts MDX controlan el contexto y el ámbito de los cálculos y administran el comportamiento de otras instrucciones del script MDX. Esta categoría incluye las siguientes instrucciones:

    Para obtener más información acerca de las instrucciones de los scripts MDX, vea Instrucciones para scripts de MDX (MDX).

  • CREATE MEMBER
    La instrucción CREATE MEMBER crea miembros calculados. Para obtener más información acerca de cómo crear miembros calculados, vea Generar miembros calculados en MDX (MDX).

  • CREATE SET
    La instrucción CREATE SET crea conjuntos con nombre. Para obtener más información acerca de cómo crear conjuntos con nombre, vea Crear conjuntos con nombre en MDX (MDX).

  • Instrucciones condicionales
    Las instrucciones condicionales agregan lógica condicional a los scripts MDX. En esta categoría se incluyen las instrucciones CASE e IF.

  • Expresiones de asignación
    Las expresiones de asignación asignan una expresión, como un valor, a los subcubos restringidos. Una expresión de subcubo restringido es una colección de expresiones de conjunto restringidas que definen los "bordes" de un subcubo de un script MDX. En los siguientes ejemplos de código se muestra la sintaxis de una expresión de subcubo restringido:

    <Constrained subcube> ::= ( 
        ( <Constrained set> [<Crossjoin operator> <Constrained set>...] |
        <ROOT function> |
        <TREE function> |
        LEAVES() |
        * ) [, <Constrained subcube>...]
    <Constrained set> ::= 
        <Natural hierarchy>.MEMBERS | 
        <Natural hierarchy>.LEVEL(<numeric expression>).MEMBERS | 
        { <Natural hierarchy member> } | 
        DESCENDANTS( <Natural hierarchy member>, <Level expression>, ( SELF | AFTER | SELF_AND_AFTER ) ) | 
        DESCENDANTS( <Natural hierarchy member>, , LEAVES )
    <Natural hierarchy> ::= <Hierarchy identifier>
    <Natural hierarchy member> ::= <Natural hierarchy>.<identifier>[.<identifier>...]