Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Consulta MDX condicional

104 views
Skip to first unread message

knet

unread,
Mar 11, 2010, 11:36:10 AM3/11/10
to
Buenos dias,
Como puedo hacer una consulta MDX que pueda seleccionar entre un miembro
calculado u otro segun la fecha seleccionada en la misma consulta, es dicr,
algo como:
SELECT {[Fecha].[All Fecha].[2010].[March].[10]} ON columns,
{
Si Fecha < '9/3/2010' [Indicador_1] else [Indicador_2]
} ON rows FROM Cubo1

Salu2.

Roque Salde

unread,
Mar 12, 2010, 9:10:19 AM3/12/10
to

Estimado, buenos dias.
Existe una función MDX llamada Immediate IF o IIF() que tiene el
comportamiento que estas buscando.
IIf(Logical_Expression, Expression1, Expression2)

Si la expresión lógica es TRUE devuelve Expression1, de lo contrario
Expression2

Espero haber sido de ayuda.

Saludos

Roque

knet

unread,
Mar 12, 2010, 1:40:01 PM3/12/10
to
Hola, gracias x la respuesta, estaba viendolo por eso lado, el tema es como
puedo cortar o hacer la condicion por dado un mes?, es decir, ante de tal mes
un calculo (Expression1) o despues de tal mes el otro Expression2?.
IIF([Fecha].CurrentMember IS [Fecha].[Year].&[2010], [calc1], [calc2] )'
pero no logror llegar al mes?
Salu2
"Roque Salde" wrote:

> .
>

Miguel Egea

unread,
Mar 15, 2010, 7:26:42 AM3/15/10
to
¿Te vale esto?

with member condicional as
case when
[Date].[Calendar].currentmember.member_key <20030101
then [Measures].[Tax Amount]
else [Measures].[Sales Amount]
end
select
[Date].[Calendar].[Date].members on rows,
measures.condicional on columns
from [Adventure Works]

--
Saludos Cordiales
Miguel Egea
Solid Quality Mentos
http://www.portalsql.com

"knet" <kn...@discussions.microsoft.com> escribió en el mensaje de
noticias:AB85771D-03DD-4B3B...@microsoft.com...

knet

unread,
Mar 15, 2010, 1:07:01 PM3/15/10
to
Gracias Miguel x tu respuesta, el tema es que estoy trabajando sobre OLAP
2000 y no soporta el CASE, lo estoy intentando con el IF pero la condicion es
por fecha a nivel de dia, por ejemplo:
currentmember IS [Fecha].[Year].[2010].[February] pero en el select no llego
a filtar por dia, es decir, me da bien con:
SELECT {[Fecha].[All Fecha].[2009].[December]
Pero mal con:
SELECT {[Fecha].[All Fecha].[2009].[December].[10]
Como llego a filtrar x dia?

Miguel Egea

unread,
Mar 17, 2010, 5:51:49 AM3/17/10
to
es la tercera vez que intento contestar a este mensaje.. pero no llega :S
¿me cuentas el detalle? Al final el truco es usar el member_key para la
comparación, pero si quieres mostrar el dato a nivel de mes y calcular a
nivel de dia... la historia cambia.

--
Saludos Cordiales
Miguel Egea
Solid Quality Mentos
http://www.portalsql.com

"knet" <kn...@discussions.microsoft.com> escribió en el mensaje de

noticias:137E0778-99D3-4DF9...@microsoft.com...

knet

unread,
Mar 17, 2010, 7:21:01 AM3/17/10
to
Gracias x tu respuesta.
Con que pueda filtrar a nivel mes esta ok, el tema es que con el IF
condicionando con CurrentMember.Parent respecto a un mes no me funciona el
"<" (menor q) solo con el "IS", entonces si quiero la condicion para un mes
anterior solo se me ocurre ir haciendo una "OR" incluyendo todos los meses...
Salu2.

Miguel Egea

unread,
Mar 17, 2010, 11:52:33 AM3/17/10
to
no hombre... currentmember.parent.member_key puedes compararla con menor,
aunque depende de la defición que hayas hecho de la dimensión tiempo.
Si eso no te funciona puedes probar adaptando esto que te paso que funciona
en Adventure works. Y a las malas si puedes crear un backup de tu bbdd
multimensional y mandarmela al mail (sin datos o con muy poquitos) te puedo
escribir la consulta


with member condicional as
case when

VBAMDX!right(ancestor(
[Date].[Calendar].currentmember,
[Date].[Calendar].[Month]).member_caption,4) <'2003'
then 0
else 1
end
member cond2 as
ancestor(
[Date].[Calendar].currentmember,
[Date].[Calendar].[Month]).member_caption


select
[Date].[Calendar].[Date].members on rows,

{measures.condicional,measures.cond2} on columns
from [Adventure Works]


--
Saludos Cordiales
Miguel Egea
Solid Quality Mentos
http://www.portalsql.com

"knet" <kn...@discussions.microsoft.com> escribió en el mensaje de

noticias:5214C252-0668-401B...@microsoft.com...

0 new messages