2016-06-09 2 views
1

동일한 제품 차원 키가있는 제품의 판매 금액을 한 번만 추가하여 범주 및 하위 범주의 모든 제품 판매량을 합산하려고합니다.MDX : 합계 이름이 중복 된 멤버를 무시합니다.

각 카테고리는 임의의 수의 하위 카테고리를 가질 수 있으며 각 하위 카테고리는 최대 5 개의 하위 카테고리 수준의 임의의 수의 하위 카테고리를 가질 수 있습니다. 하위 카테고리의 수는 다를 수 있습니다.
그래서 category_dimensioncategory_hierarchy이있다 이러한 수준 :

main_category, sub_category_1, sub_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 
난 항상 (/ 월/년 여전히 일주일에 의해 판매를 집계 할 수) 2016년 6월 30일에 제품 2 제품 1 판매 4 판매 5를 좀하고 싶습니다

:

           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

(ProductA/Subcategory 1) = 5 및 (ProductA/Subcategory 2) = 3 인 경우 어떻게됩니까? – whytheq

+0

(ProductA/Subcategory 1)에 대한 Sales는 항상 = (ProductA/Subcategory 2) –

+0

카테고리 구조를 명확히하기 위해 질문을 편집했습니다. –

답변

0

이것은 아직 완료되지 않았거나 테스트되었습니다. 초기 아이디어 일 수 있습니다. 액세스 권한이 있으면 AdvWrks에 대해 테스트해야합니다.

모든 회원을 필요에 맞게 조정하려면 상당히 복잡합니다.

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) 문제가 이미 sub_category 레벨에서 발생할 수 있기 때문입니다. 범주 구조를 명확히하기 위해 본래의 질문을 확장했습니다. –