2016-03-30 7 views
0

Ich muss zwei Hierarchien, Region und Country verbinden. Aus unserem Cube muss ich ein Ergebnis erhalten, das aus 1 Region und 2 Ländern besteht. Dies ist, was ich bisher getan habe:MDX Crossjoin Region und Land und Gesamtsumme

SET [RegionSet] AS 
    { 
    [Stores].[Region].&[EUROPE] 
    } 

SET [CountrySet] AS 
    { 
    [Stores].[Country].&[Japan]&[APAC] 
    ,[Stores].[Country].&[China]&[APAC] 
    } 


NON EMPTY 
    (
    { 
    [RegionSet] 
    , [Stores].[Region].[All] 
    } 
) 
* (
    { 
    [CountrySet] 
    , [Stores].[Country].[All] 
    } 
) 
    ON ROWS 

Das MSD Ergebnis folgt:

Resulting table

Aber ich will die Region und Länder in einer Spalte aufzulisten, ohne dass die Alle Einträge und fügen Sie der letzten Zeile eine Gesamtsumme hinzu. Wie kann ich das machen?

Antwort

0

Ich denke, wenn Sie eine Multi-Level-Benutzerhierarchie haben [Geography] als Teil der Dimension [Stores] genannt dann denke ich, es trivial sein würde:

SET [RegionCountrySet] AS 
    { 
    [Stores].[Geography].[Region].&[EUROPE] 
    ,[Stores].[Geography].[Country].&[Japan]&[APAC] 
    ,[Stores].[Geography].[Country].&[China]&[APAC] 
    } 

... aber Sie können benutzerdefinierten aggregierte Mitglieder erstellen. Dann nutzen Sie die erstellten Elemente auf Zeilen:

  1. eine nicht verwendete Hierarchie Wählen Sie auf „Host“ Ihre neue Mitglieder in Ich nehme an, Sie haben eine [Languages] Dimension.. Die neuen Mitglieder werden dem [All] Mitglied Ihrer ausgewählten Hierarchie als untergeordnete Elemente hinzugefügt.

  2. Erstellen Sie Tupel von den Zielen, einschließlich der Hosts [All] Mitglied in jedem der Tupel.

Gefallen Sie diesen

MEMBER [Languages].[Language].[All].[EUROPE] AS 
    (
     [Languages].[Language].[All] 
     ,[Stores].[Region].&[EUROPE] 
    ) 
MEMBER [Languages].[Language].[All].[Japan] AS 
    (
     [Languages].[Language].[All] 
     ,[Stores].[Country].&[Japan]&[APAC] 
    ) 
MEMBER [Languages].[Language].[All].[China] AS 
    (
     [Languages].[Language].[All] 
     ,[Stores].[Country].&[China]&[APAC] 
    ) 
SET [S1] AS 
    { 
    [Languages].[Language].[All].[EUROPE] 
    ,[Languages].[Language].[All].[Japan] 
    ,[Languages].[Language].[All].[China] 
    } 
MEMBER [Languages].[Language].[All].[Grand Total] AS 
    Aggregate([S1]) 
SET [S2] AS 
    { 
    [Languages].[Language].[All].[EUROPE] 
    ,[Languages].[Language].[All].[Japan] 
    ,[Languages].[Language].[All].[China] 
    ,[Languages].[Language].[All].[Grand Total] 
    } 

Dann im Skript versuchen, diesen

[S2] ON ROWS 
+0

Dank. Funktioniert gut! –

+0

Kein Problem. Gute Nachrichten (Sie können es als die Antwort markieren, wenn Sie mögen ... Sie gewinnen auch Reputation, wenn Sie Antworten als richtig markieren) – whytheq