Pregunta

No sé si esto es posible o no, o si mi conocimiento limitado de MDX me está empujando en la dirección equivocada ...

El cubo con el que estoy tratando tiene dos dimensiones diferentes para las fechas, [Statement Dates] y [Premium Fates] . Más adelante en la jerarquía de cada uno se ve así:

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

Para la lógica de negocios que estoy implementando, necesito hacer 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] )
)

Así que lo necesito para discriminar qué dimensión usar para filtrar el año en función de qué categoría de producto se está utilizando.

Este análisis es correcto y la consulta se ejecuta, pero los números parecen sugerir que la declaración IIF siempre devuelve false.

¿Fue útil?

Solución

Debido a que la cláusula WHERE se evalúa primero, la función .CurrentMember en IIF solo verá "Todas las categorías de productos". En cuyo caso, [Productos]. [Categoría de producto] .Mensaje actualMiembro.nunca será igual a " Categoría alguna " como la única categoría de producto en contexto es " Todos los catálogos de productos " ;.

Una solución alternativa posible sería realizar un cálculo como el siguiente:

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]

También puedes hacer una asignación de ámbito en el script de cálculo en tu cubo para hacer este tipo de cosas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top