2016-06-09 21 views
1

我試圖總結某個類別及其子類別中所有產品的銷售額,只添加一次具有相同產品維度鍵的產品的銷售額。MDX:總和,忽略名稱重複的成員

每個類別可以有任意數量的子類別,每個子類別可以有自己的任意數量的子類別,最多5個子類別。子類別的數量可能會有所不同。
所以在category_dimensioncategory_hierarchy有以下層次:

main_categorysub_category_1sub_category_2,...,sub_category_5

,可能是這樣的:

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 
... 

在事實表中有每個產品每天的每個產品的銷售數量和每個產品可以屬於多個類別(如果某個產品屬於多個類別,則它們在每個類別中具有相同的銷售數量),例如。

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 
... 

如果我現在運行一個簡單的MDX查詢,以顯示我的銷售每個類別將銷售數量多次總結的號碼,如果該產品是在多個類別:

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]; 

回報

           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 

我想永遠得到產品1產品2的銷售4銷售5 2016年6月30日(但仍然能夠通過聚合本週銷售/月/年):

           2016-06-30 2016-06-29 ... 
CATEGORY     PRODUCT_ID  SALES  SALES 
All Categories    All Products  9   ... 
           1    4 
           2    5 
    Electronics    All Products  9 
           1    4 
           2    5 
    Camera & Photo   All Products  9 
           1    4 
           2    5 
     Digital Cameras  All Products  5 
           2    5 
     Film Photography  All Products  4 
           1    4 
     Film    All Products  4 
           1    4 
+1

如果(產品A /子類別1)= 5和(產品A /子類別2)= 3的銷售情況如何? – whytheq

+0

(ProductA /子類別1)的銷售總是=(ProductA /子類別2) –

+0

編輯該問題以澄清類別結構。 –

回答

0

這還沒有完成或測試 - 這只是最初的想法:一旦我有權訪問它,我就需要對AdvWrk進行測試。

調整所有成員以滿足您的需求是非常重要的。

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

這將返回語法錯誤。另外增加一個新的主類別成員也無濟於事,因爲a)主類別的數量不是固定的,並且可以隨時間變化,並且b)問題可能已經發生在子類別級別。我擴展了我的原始問題以澄清類別結構。 –