Compartir a través de


Especificar el contenido de un eje de división en sectores (MDX)

El eje de segmentación de datos filtra los datos devueltos por la instrucción SELECT de Expresiones multidimensionales (MDX) y restringe los datos devueltos de forma que solamente se devuelvan los datos de intersección entre los miembros especificados. Se puede considerar como un eje adicional invisible en una consulta. El eje de segmentación de datos se define en la cláusula WHERE de la instrucción SELECT de MDX.

Sintaxis del eje segmentador

Para especificar explícitamente un eje segmentador, debe usar <SELECT slicer axis clause> en MDX, según se describe en la siguiente sintaxis:

<SELECT slicer axis clause> ::=  WHERE Set_Expression

En la sintaxis del eje segmentador que se muestra, Set_Expression puede tomar una expresión de tupla, que se trata como un conjunto en cuanto a la evaluación de la cláusula, o como una expresión de conjunto. Si se especifica una expresión de conjunto, MDX intentará evaluar el conjunto, sumando las celdas de resultado en cada tupla del conjunto. En otras palabras, MDX intentará usar la función Aggregate en el conjunto, agregando cada medida por su función de agregación asociada. Asimismo, si la expresión de conjunto no puede expresarse como un cruce de miembros de la jerarquía de atributos, MDX trata las celdas que quedan fuera de la expresión de conjunto para el segmentador como valores nulos (NULL) para fines de evaluación.

Nota importanteImportante

A diferencia de la cláusula WHERE de SQL, la de una instrucción MDX SELECT nunca filtra directamente lo que se devuelve en el eje de las filas de una consulta. Para filtrar lo que aparece en el eje de las filas o de las columnas de una consulta, puede usar diversas funciones MDX, por ejemplo FILTER, NONEMPTY y TOPCOUNT.

Eje de segmentación de datos implícito

Si un miembro de una jerarquía del cubo no está explícitamente incluido en un eje de consulta, el miembro predeterminado de esa jerarquía se incluye implícitamente en el eje de segmentación de datos. Para obtener más información acerca de los miembros predeterminados, vea Definir un miembro predeterminado.

Ejemplos

La siguiente consulta no incluye una cláusula WHERE y devuelve el valor de la medida Internet Sales Amount para todos los años naturales:

SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]

Agregando una cláusula WHERE, como sigue:

SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]
WHERE([Customer].[Customer Geography].[Country].&[United States])

no cambia lo que se devuelve en las filas o columnas en la consulta; cambian los valores devueltos para cada celda. En este ejemplo, la consulta se divide para que devuelva el valor de Internet Sales Amount para todos los años naturales, pero solo para los clientes que viven en los Estados Unidos. Varios miembros de jerarquías diferentes se puede agregar a la cláusula WHERE. La siguiente consulta muestra el valor de Internet Sales Amount para todos los años naturales y para los clientes que viven en los Estados Unidos y compraron productos de la categoría Bikes:

SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]
WHERE([Customer].[Customer Geography].[Country].&[United States], [Product].[Category].&[1])

Si desea usar varios miembros de la misma jerarquía, necesita incluir un conjunto en la cláusula WHERE. Por ejemplo, la siguiente consulta muestra el valor de Internet Sales Amount para todos los años naturales para los clientes que compraron productos de la categoría Bikes y que viven en los Estados Unidos o en el Reino Unido:

SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]
WHERE(
{[Customer].[Customer Geography].[Country].&[United States]
, [Customer].[Customer Geography].[Country].&[United Kingdom]}
, [Product].[Category].&[1])

Como se ha mencionado arriba, si se usa un conjunto en la cláusula WHERE, se agregarán implícitamente valores para todos los miembros del conjunto. En este caso, la consulta muestra los valores agregados para los Estados Unidos y el Reino Unido en cada celda.