Compartir a través de


Miembros calculados en subselecciones y subcubos

Se aplica a: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

Un miembro calculado es un miembro de dimensión cuyo valor se calcula a partir de una expresión en tiempo de ejecución, y se puede usar en las subselecciones y los subcubos para definir con mayor precisión el espacio del cubo de una consulta.

Habilitación de los miembros calculados en el subespacio

La propiedad SubQueries cadena de conexión en ConnectionString o la propiedad DBPROPMSMDSUBQUERIES de Las propiedades XMLA admitidas (XMLA) define el comportamiento o la asignación de miembros calculados o conjuntos calculados en subselecciones o subcubos. En el contexto de este documento, subselección hace referencia a subselecciones y subcubos, a menos que se indique lo contrario.

La propiedad SubQueries permite los siguientes valores.

Valor Descripción
0 Los miembros calculados no se permiten en subselecciones ni en subcubos.

Se produce un error al evaluar la subselección o subcubo si se hace referencia a un miembro calculado.
1 Los miembros calculados se permiten en subselecciones y subcubos pero sin que se introduzca ningún miembro antecesor en el subespacio que se devuelve.
2 Los miembros calculados se permiten en subselecciones y subcubos y los miembros antecesores se introducen en el subespacio que se devuelve. Asimismo, la granularidad mixta se permite en la selección de miembros calculados.

Usar valores de 1 o 2 en la propiedad SubQueries permite usar miembros calculados para filtrar el subespacio de subselecciones que se devuelve.

Un ejemplo ayudará a clarificar el concepto; primero se debe crear un miembro calculado y luego una consulta de subselección emitida para mostrar el comportamiento anteriormente mencionado.

En el siguiente ejemplo se crea un miembro calculado que agrega [Seattle Metro] como una ciudad a la jerarquía [Geography].[Geography] dentro del estado de Washington.

Para ejecutar el ejemplo, la cadena de conexión debe contener la propiedad SubQueries con un valor de 1 y todas las instrucciones MDX se deben ejecutar en la misma sesión.

Importante

Si utiliza Management Studio para probar las consultas, haga clic en el botón Opciones en el Administrador de conexiones para acceder al panel de propiedades adicionales de las cadenas de conexión, donde puede especificar subconsultas = 1 o 2 para admitir los miembros calculados en el subespacio.

Primero emita la siguiente expresión MDX:

  
CREATE MEMBER [Adventure Works].[Geography].[Geography].[State-Province].&[WA]&[US].[Seattle Metro Agg]   
   AS  AGGREGATE(   
                 {   
                   [Geography].[Geography].[City].&[Bellevue]&[WA]  
                 , [Geography].[Geography].[City].&[Issaquah]&[WA]  
                 , [Geography].[Geography].[City].&[Redmond]&[WA]  
                 , [Geography].[Geography].[City].&[Seattle]&[WA]  
                 }  
                )    

A continuación, emita la siguiente consulta MDX para ver miembros calculados permitidos en las subselecciones.

Select [Date].[Calendar Year].members on 0,  
       [Geography].[Geography].allmembers on 1  
from (Select {[Geography].[Geography].[State-Province].&[WA]&[US].[Seattle Metro Agg]} on 0 from [Adventure Works])  
Where [Measures].[Reseller Sales Amount]  

Los resultados obtenidos son:

All Periods CY 2011 CY 2012 CY 2013 CY 2014
Seattle Metro Agg $2,383,545.69 1$291,248.93 $763,557.02 $915,832.36 $412,907.37

Tal y como hemos dicho antes, los antecesores de [Seattle Metro] no existen en el subespacio devuelto, cuando SubQueries=1, por lo tanto [Geography].[Geography].allmembers solo contiene el miembro calculado.

Si se ejecuta el ejemplo usando SubQueries=2, en la cadena de conexión los resultados obtenidos son:

All Periods CY 2001 CY 2002 CY 2003 CY 2004
All Geographies (null) (null) (null) (null) (null)
Estados Unidos (null) (null) (null) (null) (null)
Washington (null) (null) (null) (null) (null)
Seattle Metro Agg $2,383,545.69 $291,248.93 $763,557.02 $915,832.36 $412,907.37

Como hemos comentado, al usar SubQueries=2, los antecesores de [Seattle Metro] existen en el subespacio devuelto pero no tienen valores porque no hay ningún miembro normal para suministrar las agregaciones. Por consiguiente, los valores NULL se proporcionan para todos los miembros antecesores del miembro calculado en este ejemplo.

Para entender el comportamiento anterior, es útil entender que los miembros calculados no contribuyen a las agregaciones de sus miembros primarios como lo hacen los miembros normales; lo primero implica que el filtrado realizado solo por miembros calculados generará antecesores vacíos porque no hay miembros normales para contribuir a los valores agregados del subespacio que resulta. Si agrega miembros regulares a la expresión de filtrado, entonces los valores agregados procederán de esos miembros regulares. Siguiendo con el ejemplo anterior, si la ciudad de Portland, en Oregón, y Spokane, en Washington, se agregan al mismo eje en el que aparece el miembro calculado; como se muestra en la expresión MDX siguiente:

Select [Date].[Calendar Year].members on 0,  
       [Geography].[Geography].allmembers on 1  
from (Select {  
               [Seattle Metro Agg]  
             , [Geography].[Geography].[City].&[Portland]&[OR]  
             , [Geography].[Geography].[City].&[Spokane]&[WA]  
             } on 0 from [Adventure Works]  
     )  
Where [Measures].[Reseller Sales Amount]  

Se obtienen los siguientes resultados.

All Periods CY 2001 CY 2002 CY 2003 CY 2004
All Geographies $235,171.62 $419.46 $4,996.25 $131,788.82 $97,967.09
Estados Unidos $235,171.62 $419.46 $4,996.25 $131,788.82 $97,967.09
Oregon $30,968.25 $419.46 $4,996.25 $17,442.97 $8,109.56
Portland $30,968.25 $419.46 $4,996.25 $17,442.97 $8,109.56
97205 $30,968.25 $419.46 $4,996.25 $17,442.97 $8,109.56
Washington $204,203.37 (null) (null) $114,345.85 $89,857.52
Spokane $204,203.37 (null) (null) $114,345.85 $89,857.52
99202 $204,203.37 (null) (null) $114,345.85 $89,857.52
Seattle Metro Agg $2,383,545.69 $291,248.93 $763,557.02 $915,832.36 $412,907.37

En los resultados anteriores, los valores agregados para [All Geographies], [United States], [Oregon] y [Washington] proceden de agregar los descendientes de &[Portland]&[OR] y &[Spokane]&[WA]. Nada procede del miembro calculado.

Comentarios

Solo se permiten miembros calculados globales o de sesión en las expresiones de subselección o subcubo. Si existen miembros calculados de consulta en la expresión MDX, se producirá un error cuando se evalúe la expresión de subselección o subcubo.

Consulte también

ConnectionString
Subselecciones en las consultas
Propiedades XMLA compatibles (XMLA)