Pergunta

As estruturas relevantes do meu cubo é que eu tenho uma hierarquia com "classe" e "SubClass". Eu também tenho uma medida chamada "Valor" que é o que estou tentando obter.

Uma consulta simples pode ser parecido com:

SELECT
 NON EMPTY ([Measures].[Value]) ON COLUMNS,
 NON EMPTY ([Some Dimension].[Class Hierarchy].[Class]) ON ROWS
FROM [MyCube]

E eu posso, obviamente, ler a subclasse usando a hierarquia que seja devolvido a ADOMD.

Meu problema é duplo, em primeiro lugar como eu "achatar" essa hierarquia, de modo a receber tanto a classe e subclasse como membros discretos no CellSet? Isso não funciona:

SELECT
 NON EMPTY ([Measures].[Value]) ON COLUMNS,
 NON EMPTY (
   [Some Dimension].[Class Hierarchy].[Class], 
   [Some Dimension].[Class Hierarchy].[Sub Class]
) ON ROWS
FROM [MyCube]

A hierarquia Hierarquia de classes é usado mais de uma vez na função Crossjoin

Segundo questão, o que eu actuually precisa fazer é filtro acima em classes particulares, novamente este não vai funcionar pela mesma razão que acima.

SELECT
 NON EMPTY ([Measures].[Value]) ON COLUMNS,
 NON EMPTY (
   {[Some Dimension].[Class Hierarchy].[Class].&[ClassA],[Some Dimension].[Class Hierarchy].[Class].&[ClassB]}, 
   [Some Dimension].[Class Hierarchy].[Sub Class]
) ON ROWS
FROM [MyCube]

Qualquer ajuda muito apreciada. MDX está me deixando louco!

Foi útil?

Solução

Está faltando a propriedade MEMBROS em sua dimensão.

Para o seu primeiro exemplo tente o seguinte:

SELECT 
    NON EMPTY ([Measures].[Value]) ON COLUMNS,
    NON EMPTY {(
            [Some Dimension].[Class Hierarchy].[Class].MEMBERS,
            [Some Dimension].[Class Hierarchy].[Sub Class].MEMBERS)} ON ROWS
FROM [MyCube]

Para o seu segundo exemplo tente o seguinte:

SELECT 
    NON EMPTY ([Measures].[Value]) ON COLUMNS, 
    NON EMPTY {(
            [Some Dimension].[Class Hierarchy].[Class].&[ClassA],
            [Some Dimension].[Class Hierarchy].[Class].&[ClassB],
            [Some Dimension].[Class Hierarchy].[Sub Class].MEMBERS)} ON ROWS
FROM [MyCube]

Outras dicas

Use Subqueries em sua cláusula WHERE. MDX sempre restringir o uso de uma dimensão em um único eixo.

Sub consulta é uma maneira de contornar isso. Eu aprendi recentemente este truque após MDX me deixou louco, bem ..

Hi esta consulta funcionou para mim.

 SELECT NON EMPTY { [Measures].[App Count] }
 ON COLUMNS, 
 NON EMPTY 
 {(
 EXISTING 
 (
 [MART TIME DIM].[Date].[Date] .MEMBERS) * 
 [New Ren DIM].[New Ren CODE].[New Ren CODE].ALLMEMBERS
 )}
 ON ROWS FROM [SubmissionCube]  
 where
({
[MART BROKER DIM].[BROKER ID].&[10812]},{[MART TIME DIM].[Year].&[2015],
{[MARTTIME DIM].[Year].&[2016]}
})  

Por favor, tenha cuidado com o '}' na cláusula onde, como a consulta tem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top