Pergunta

Eu não sei se isso é possível ou não, ou se o meu conhecimento limitado de MDX está me empurrando para a direção errada ...

O cubo estou lidando tem duas dimensões diferentes para datas, [Statement Dates] e [Premium Dates]. Além disso na hierarquia de cada parecido com este:

[Statement Dates].[Statement Year].[2008]  
[Payment Dates].[Payment Year].[2008]

Para a lógica de negócios Estou implementando eu preciso fazer algo como:

select
  ({ [Measures].[Commission] }) on columns,
  ({[Products].[Product Category]}) on rows
from [Cube]
where
(
  IIF( [Products].[Product Category].CurrentMember.Name = "Some Category",
       [Statement Dates].[Statement Year].[2008], 
       [Payment Dates].[Payment Year].[2008] )
)

Então, eu preciso dele para discriminar o que dimensão para uso para filtrar o ano com base no que categoria de produto está sendo usado.

Este parses ok e a consulta é executada, mas os números parecem sugerir que a declaração IIF é sempre retornar false.

Foi útil?

Solução

Como a cláusula WHERE fica avaliada em primeiro lugar a função .CurrentMember no IIF só vai estar vendo "Todos os Cateogories do produto". Caso em que os [os produtos]. [Categoria do produto] .CurrentMember.Name nunca será igual a "Alguns Categoria" como a única categoria de produto no contexto é "Todos Cateogories do produto".

Um em torno do trabalho possível seria fazer um cálculo como o seguinte:

WITH MEMBER Measures.Commission2 as 
SUM(
{[Products].[Product Category].[Product Category].Members}
, IIF( [Products].[Product Category].CurrentMember.Name = "Some Category"
   , ([Statement Dates].[Statement Year].[2008],[Measures].[Commission])
   , ([Payment Dates].[Payment Year].[2008].[Measures].[Commission]) )
)
select  
   ({ [Measures].[Commission2] }) on columns
,  ({[Products].[Product Category]}) on rows
from [Cube]

Você também pode fazer um assignement escopo no script de cálculo em seu cubo para fazer esse tipo de coisa.

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