2016-04-15 7 views
3

Ich muss MDX schreiben, das in der Spalte angezeigt wird und Zeilen in drei Gruppen unterteilt. Die erste Gruppe wird durch wenige Zahlen unterschieden, die zweite Gruppe ist durch Attribut, und die dritte Gruppe ist, wo die Ruhe nicht passt.Mehrere Anweisungen für den Fall MDX

Mein Code sieht so aus, dass so weit:

case 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "4254255527" then "ABC" 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "2752637520" then "ABC" 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "5637839739" then "ABC" 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "9378793737" then "ABC" 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "3789789397" then "ABC" 
    when [Document].[Document series].CURRENTMEMBER.MEMBERVALUE = "XYZ" then "XYZ" 
    else "Rest" 
end 

Aber ich bin immer "Rest" jedes Mal.

Wie soll ich das korrigieren?

Edit: Eine andere versuchen, aber immer noch nicht funktioniert:

case 
    when [Customer].[Customer's Document].[&5196189651] then "ABC" 
    when [Customer].[Customer's Document].[&7885181585] then "ABC" 
    when [Customer].[Customer's Document].[&7511535861] then "ABC" 
    when [Customer].[Customer's Document].[&4742575277] then "ABC" 
    when [Customer].[Customer's Document].[&7272727272] then "ABC" 
    when [Customer's Document].[Document Series].[&CHP] then "XYZ" 
    else "Rest" 
end 
+0

Was ist der Wert, Schlüssel und den Namen Eigenschaften für Kunden Dokument?. Wie ist die Struktur der Customer Dimension? Wie fragen Sie diese Maßnahme ab und sehen Sie den Rest als Ihr Endergebnis? Fügen Sie die Frage bitte zu Ihrer Frage hinzu, damit wir Ihnen helfen können. – BICube

+0

@Dodzik - ist die Dimension '[Customer]' in den Zeilen der eventuellen SELECT-Klausel ?! wenn es nicht in Zeilen ist, dann ist Currentmember das All-Mitglied .... Currentmember funktioniert nur, wenn die Dimension tatsächlich _current_ ist, d.h. im Kontext. Dies ist wahrscheinlich der Grund, warum Sie die ganze Zeit Ruhe bekommen. Kannst du bitte den Rest deines mdx-Skripts hinzufügen? – whytheq

Antwort

1

ich das Gefühl bekommen Sie etwas tun wollen mehr wie folgt aus:

WITH 
    SET [ABC] AS 
    { 
     [Customer].[Customer's Document].&[5196189651] 
    ,[Customer].[Customer's Document].&[7885181585] 
    ,[Customer].[Customer's Document].&[7511535861] 
    ,[Customer].[Customer's Document].&[4742575277] 
    ,[Customer].[Customer's Document].&[7272727272] 
    } 
    MEMBER [Customer].[All].[ABC] AS 
    Aggregate([ABC]) 
    MEMBER [Customer].[All].[XYZ] AS 
    [Customer].[Customer's Document].[Document Series].&[CHP] 
    SET [REST] AS 
    Except 
    (
     [Customer].[Customer's Document].MEMBERS 
    ,[ABC] 
    ) 
    MEMBER [Customer].[All].[Rest] AS 
    Aggregate([REST]) 
    SET [FINAL] AS 
    { 
     [Customer].[All].[ABC] 
    ,[Customer].[All].[XYZ] 
    ,[Customer].[All].[Rest] 
    } 
SELECT 
    [FINAL] ON 1 
,{[Measures].[Amount]} ON 0 
FROM [YourCube]; 

Oder vielleicht die folgenden:

WITH 
    SET [ABC] AS 
    { 
     [Customer].[Customer's Document].&[5196189651] 
    ,[Customer].[Customer's Document].&[7885181585] 
    ,[Customer].[Customer's Document].&[7511535861] 
    ,[Customer].[Customer's Document].&[4742575277] 
    ,[Customer].[Customer's Document].&[7272727272] 
    } 
    MEMBER [Customer].[All].[ABC] AS 
    Aggregate([ABC]) 
    MEMBER [Customer].[All].[XYZ] AS 
    [Customer].[Customer's Document].[Document Series].&[CHP] 
    SET [REST] AS 
    Except 
    (
     [Customer].[Customer's Document].MEMBERS 
    ,{ 
     [ABC] 
     ,[Customer].[Customer's Document].[Document Series].&[CHP] 
     } 
    ) 
    MEMBER [Customer].[All].[Rest] AS 
    Aggregate([REST]) 
    SET [FINAL] AS 
    { 
     [Customer].[All].[ABC] 
    ,[Customer].[All].[XYZ] 
    ,[Customer].[All].[Rest] 
    } 
SELECT 
    [FINAL] ON 1 
,{[Measures].[Amount]} ON 0 
FROM [YourCube]; 

bearbeiten

Nur eine Warnung - in der akzeptierte Antwort gibt es folgende mdx:

case 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "4254255527" then "ABC" 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "2752637520" then "ABC" 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "5637839739" then "ABC" 
... 
... 

Dies als Lösung markiert werden könnte, aber es ist nicht so toll mdx. In diesem Fall sollte der IS Operator verwendet werden:

case 
    when [Customer].[Customer's Document].CURRENTMEMBER IS 
      [Customer].[Customer's Document].[Customer's Document].&[4254255527] then "ABC" 
    when [Customer].[Customer's Document].CURRENTMEMBER IS 
      [Customer].[Customer's Document].[Customer's Document].&[2752637520] then "ABC" 
    when [Customer].[Customer's Document].CURRENTMEMBER IS 
      [Customer].[Customer's Document].[Customer's Document].&[5637839739] then "ABC" 
... 
... 
+0

Meinst du, das '&' außerhalb der Klammern zu haben [Kunde]. [Kundendokument]. & [7272727272] – BICube

+0

@Ala Ich habe nur die Mitgliedsnamen aus der ursprünglichen Frage kopiert, aber ja, du hast das '&' würde normalerweise außerhalb der Zahnspange. – whytheq

+0

@Dodzik - Ich hatte das Gefühl, dass dies falsch markiert wurde, da die allgemeine mdx in Prophesores Antwort nicht großartig ist - es ist eine schlechte Alternative zur Verwendung des 'IS'-Operators, diese 't] .CURRENTMEMBER.MEMBERVALUE =" 4254255527 "zu machen – whytheq

0

Welche BI-Tool verwenden Sie; Sie können dies einer neuen Spalte als Namensberechnung zur Datenquellensicht hinzufügen (Rechtsklick auf Kundentabelle-> Neue benannte Berechnung-> Spaltenname: XXX). Beispiel:

CASE 
    WHEN ACOLUMN BETWEEN 0 AND 10 THEN 'ABC' 
    WHEN ACOLUMN BETWEEN 10 AND 20 THEN 'ABC' 
    ELSE 'REST' 
END 

Ich glaube, dass in dem Fall müssen Sie die gleiche hierarchy.Alternative verwenden Sie den Code 2 Teile brechen können:

case 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "4254255527" then "ABC" 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "2752637520" then "ABC" 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "5637839739" then "ABC" 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "9378793737" then "ABC" 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "3789789397" then "ABC" 
    when [Document].[Document series].CURRENTMEMBER.MEMBERVALUE = "XYZ" then "XYZ" 
    else "Rest" 
end 

CASE 
when [Document].[Document series].CURRENTMEMBER.MEMBERVALUE = "XYZ" then "XYZ" 
    else "Rest" 
end 
Verwandte Themen