2016-06-09 17 views
1

Ich versuche, die Verkaufsmenge aller Produkte in einer Kategorie und deren Unterkategorien zu summieren und den Umsatzbetrag für Produkte mit demselben Produktdimensionsschlüssel nur einmal hinzuzufügen.MDX: Summe, Mitglieder mit doppeltem Namen ignorierend

Jede Kategorie kann eine beliebige Anzahl von Unterkategorien haben und jede Unterkategorie kann eine beliebige Anzahl von Unterkategorien haben, bis zu fünf Unterkategorien. Die Anzahl der Unterkategorien kann variieren.
So ist die category_hierarchy im category_dimension hat diese Ebenen:

main_category, sub_category_1, sub_category_2, ..., sub_category_5

und könnte wie folgt aussehen:

id main_category  sub_category_1 sub_category_2  sub_category_3 ... 
1  Electronics 
2  Electronics  Camera & Photo 
3  Electronics  Camera & Photo Accessories 
4  Electronics  Camera & Photo Digital Cameras 
5  Electronics  Camera & Photo Film Photography Film Cameras 
6  Electronics  Camera & Photo Film Photography Film 
7  Electronics  Headphones 
8  Home & Kitchen 
... 

In der Faktentabelle gibt es Verkaufszahlen für jedes Produkt pro Kategorie pro Tag und jedes Produkt kann zu mehr als einer Kategorie gehören (wenn ein Produkt zu mehr als einer Kategorie gehört, hat es in jeder dieser Kategorien die gleichen Verkaufszahlen), z .

id product_id category_id date_id  sales other_information 
1  1    1    2016-06-30 4  AAA 
2  1    2    2016-06-30 4  BBB 
3  1    6    2016-06-30 4  CCC 
4  2    2    2016-06-30 5  DDD 
5  2    4    2016-06-30 5  EEE 
... 

Wenn ich jetzt eine einfache MDX-Abfrage ausführen mir die Anzahl der Verkäufe für jede Kategorie zeigen sie die Verkaufsnummer mehrfach summieren werden, wenn das Produkt in mehreren Kategorien ist:

SELECT 
    {[DATE_DIMENSION].[DATE_HIERARCHY].ALLMEMBERS} ON COLUMNS 
,NON EMPTY 
     {[CATEGORY_DIMENSION].[CATEGORY_HIERARCHY].ALLMEMBERS} 
    * 
     {[PRODUCT_DIMENSION].[PRODUCT_HIERARCHY].ALLMEMBERS} ON ROWS 
FROM [Cube] 
WHERE [MEASURES].[SALES]; 

kehrt

           2016-06-30 2016-06-29 ... 
CATEGORY     PRODUCT_ID  SALES  SALES 
All Categories    All Products  22   ... 
           1    12 
           2    10 
    Electronics    All Products  22 
           1    12 
           2    10 
    Camera & Photo   All Products  18 
           1    8 
           2    10 
     Digital Cameras  All Products  5 
           2    5 
     Film Photography  All Products  4 
           1    4 
     Film    All Products  4 
           1    4 

I Umsatz 4 für das Produkt 1 und den Umsatz um 5 immer möchte erhalten für das Produkt 2 auf 2016.06.30 (aber noch in der Lage sein, die Verkäufe von Woche/Monat/Jahr zu aggregieren):

+1

Was ist, wenn Verkauf für (ProductA/Subcategory 1) = 5 und (ProductA/Subcategory 2) = 3? – whytheq

+0

Der Umsatz für (ProduktA/Unterkategorie 1) ist immer = (ProduktA/Unterkategorie 2) –

+0

Bearbeitet die Frage, um die Kategoriestruktur zu verdeutlichen. –

Antwort

0

Dies ist nicht fertig oder getestet - es ist nur die erste Idee: Ich muss gegen AdvWrks testen, sobald ich darauf zugreifen kann.

Um das gesamte Mitglied an Ihre Bedürfnisse anzupassen, ist ziemlich beteiligt.

WITH 
SET [All_tuples] AS 
    ORDER(
     {[CATEGORY_DIMENSION].[CATEGORY_HIERARCHY].[CATEGORY_HIERARCHY].MEMBERS} 
    * {[PRODUCT_DIMENSION].[PRODUCT_HIERARCHY].MEMBERS} 
    , [PRODUCT_DIMENSION].CURRENTMEMBER.MEMBER_CAPTION 
    , BDESC 
    ) 
SET [NoDupes] AS 
    FILTER(
    [All_tuples] AS X, 
    X.CURRENT.ITEM(1) NOT IS X.CURRENT.LAG(1).ITEM(1) 
) 
MEMBER [CATEGORY_DIMENSION].[CATEGORY_HIERARCHY].[All].[Category I NEW] AS 
    AGGREGATE(
    [NoDupes] 
) 
SELECT 
    {[Measures].[Sales]} ON COLUMNS 
,NON EMPTY 
    [CATEGORY_DIMENSION].[CATEGORY_HIERARCHY].[All].[Category I NEW] ON ROWS 
FROM [Cube]; 
+0

Dies gibt einen Syntaxfehler zurück. Auch das Hinzufügen eines neuen Hauptkategorie-Members würde nicht helfen, da a) die Anzahl der Hauptkategorien nicht festgelegt ist und sich im Laufe der Zeit ändern kann und b) das Problem bereits auf der Sub-Kategorie-Ebene auftreten kann. Ich habe meine ursprüngliche Frage erweitert, um die Kategoriestruktur zu verdeutlichen. –