Especificando o conteúdo de um eixo da segmentação de dados (MDX)

O eixo de segmentação de dados filtra os dados retornados pela instrução MDX SELECT, restringindo os dados retornados para que somente os dados da intersecção com os membros especificados sejam retornados. Pode ser considerado como um eixo extra invisível em uma consulta. O eixo da segmentação de dados é definido na cláusula WHERE da instrução SELECT no MDX.

Sintaxe de eixo de segmentação de dados

Para especificar um eixo de segmentação de dados explicitamente, use a <SELECT slicer axis clause> no formato MDX, como descrita na sintaxe a seguir:

<SELECT slicer axis clause> ::=  WHERE Set_Expression

Na sintaxe do eixo de segmentação de dados mostrada, Set_Expression pode assumir a expressão de tupla, que é tratada como um conjunto para a avaliação ou como uma expressão de conjunto. Se for especificada uma expressão de conjunto, a linguagem MDX tentará avaliar o conjunto, agregando as células de resultado a cada tupla do conjunto. Em outras palavras, a linguagem MDX tentará usar a função Aggregate no conjunto, agregando cada medida pela sua função de agregação associada. Além disso, se a expressão de conjunto não puder ser expressa como uma interjunção dos membros da hierarquia do atributo, a linguagem MDX tratará as células que ficarem fora da expressão de conjunto da segmentação de dados como nulas para a avaliação.

Observação importanteImportante

Diferente da cláusula WHERE no SQL, a cláusula WHERE de uma instrução MDX SELECT nunca filtra diretamente o que é retornado no eixo Linhas de uma consulta. Para filtrar o que aparece nos eixos Linhas ou Colunas de uma consulta, você pode usar uma variedade de funções MDX, como FILTER, NONEMPTY e TOPCOUNT.

Eixo de segmentação de dados implícito

Se um membro de uma hierarquia do cubo não for explicitamente incluído em um eixo de consulta, o membro padrão dessa hierarquia será incluído implicitamente no eixo de segmentação de dados. Para obter mais informações sobre membros padrão, consulte Definindo um membro padrão.

Exemplos

A consulta a seguir não inclui uma cláusula WHERE e retorna o valor da medida Internet Sales Amount durante todos os anos civis:

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

Adicionar uma cláusula WHERE, como segue:

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

não altera o que é retornado em Linhas ou Colunas na consulta; altera os valores retornados para cada célula. Neste exemplo, a consulta é dividida para retornar o valor de Internet Sales Amount para todos os anos civis, mas somente para Clientes que moram nos Estados Unidos. Vários membros de diferentes hierarquias podem ser adicionados à cláusula WHERE. A consulta a seguir mostra o valor de Internet Sales Amount para todos os anos civis para clientes que moram nos Estados Unidos e que compraram produtos na categoria 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])

Se você desejar usar vários membros da mesma hierarquia, deverá incluir um conjunto na cláusula WHERE. Por exemplo, a consulta a seguir mostra o valor de Internet Sales Amount para todos os anos civis para clientes que compraram produtos na categoria Bikes e que moram nos Estados Unidos e no 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 mencionado acima, usar um conjunto na cláusula WHERE agregará valores implicitamente para todos os membros no conjunto. Nesse caso, a consulta mostra valores agregados para os Estados Unidos e o Reino Unido em cada célula.