2016-07-29 31 views
0

Ich versuche, eine MDX-berechnete Measure zu verwenden, um eine Case-Anweisung für eine Spalte auszuführen.MDX Case-Anweisung

ich diesen Code verwende:

Case [hist].[title] when "Mr" then "Test1 "Else "Test2"end 

, wenn ich es speichern Sie es, alles zu Test2 setzt in der neuen Spalte, obwohl Herr im Titelfeld ist für einen Teil der Platte. Irgendwelche Ideen, wo ich falsch liegen könnte?

Dank

Antwort

0

In mdx kann man sagen:

CASE 
WHEN [hist].[title].CURRENTMEMBER.MEMBER_CAPTION = "Mr" 
    THEN "Test1" 
ELSE "Test2" 
END 

oder

CASE 
WHEN [hist].[title].CURRENTMEMBER 
    IS [hist].[title].[title].&[Mr] 
    THEN "Test1" 
ELSE "Test2" 
END 

'IIF' besser ist als Standard zu verwenden:

IIF( 
[hist].[title].CURRENTMEMBER.MEMBER_CAPTION = "Mr" 
,"Test1" 
,"Test2" 
) 

oder

IIF( 
[hist].[title].CURRENTMEMBER 
    IS [hist].[title].[title].&[Mr] 
,"Test1" 
,"Test2" 
) 

note

In Bezug auf Leistung: - IS Operator ist vorzuziehen .MEMBER_CAPTION = "Mr"
zu verwenden - IIF im Allgemeinen eine bessere Leistung als CASE - Wenn Sie mit einem der Zweige weg erhalten können IIF wird NULL dann Chancen Ihre Berechnung wird im schnelleren Blockmodus ausgeführt werden.

So würde dies am besten:

IIF( 
[hist].[title].CURRENTMEMBER 
    IS [hist].[title].[title].&[Mr] 
,"Test1" 
,NULL 
) 
+0

Danke, aber wenn ich versuche, dass ich das gleiche Ergebnis alle Datensätze zeigen Test 2 – rory83

+0

@ rory83 ok bekommen - mein Fehler - Sie müssen entweder die 'MEMBER_CAPTION' Eigenschaft verwenden oder besser für uns den "IS" Operator und ziehen Sie das genaue Mitglied für "Mr" rechts vom Operator - ich werde den vollen Namen erraten. – whytheq