2009-09-23 6 views
1

저는 다 대다 차원에 익숙하지 않지만 해결할 수있는 시나리오가 있습니다. 이로 인해 스스로 해결할 수없는 몇 가지 질문이 제기되었습니다. 매우 높이 평가!많은 차원에서 - MDX 도움말 필요

시나리오는 다음과 같습니다

  1. 가이 NonLeafDataVisible와 재귀 카테고리 계층 구조는
  2. 이 사실 테이블을 조각 일반 제품 치수,이 설정이 부모 - 자식 카테고리 치수입니다 두 가지 사이의 관계를 정의하는 브리지 다 대다 ProductCategory 테이블입니다. 제품이 카테고리 계층 구조의 모든 수준에 속할 수 있다는 점에 유의해야합니다. 즉, 특정 카테고리는 직접 할당 된 제품과 하위 카테고리 모두를 가질 수 있습니다.
  3. FK를 판매 한 제품뿐만 아니라 해당 카테고리로 FK를 보유하는 사실 트랜잭션 테이블이 있습니다.

나는이 모든 것을 BIDS에서 모델링 했으므로 각 차원과 사실 사이에 차원 사용이 설정되어 있으며 Categories와 Transactions 테이블 간의 다 대다 관계는 다음과 같이 설정되어 있습니다. 장소가 제자리에 있습니다.

Lev1 Lev2 Lev3 Prod Count 

-A  
    -AA    6 
     -AA   2 
       P6  1 
       P5  1 
     -AAA   2 
       P1  1 
       P2  1 
     -AAB   2 
       P3  1 
       P4  1 
    +BB 

다음 MDX 거의 내가 필요한 반환 즉 모든

내가 지금은 그런 일을 표시하는 보고서를 작성하는 데 사용할 것 인 MDX를 작성해야

.. 종류의 확인을 보인다 :

SELECT 
[Measures].[SALES Count] ON COLUMNS, 
NONEMPTYCROSSJOIN(
     DESCENDANTS([Category].[PARENTCATEGORY].[Level 01].MEMBERS), 
     [Product].[Prod KEY].[Prod KEY].MEMBERS, 
     [Measures].[Measures].[Bridge Distinct Count], 
     [Measures].[SALES Count], 
     2) ON ROWS 
FROM [Sales] 

내가 가진 잎이없는 범주의 각각에 대해, 십자가 반환은 모든 하위 범주 + 판매되고있어 각 제품에 유효한 교차 조인하는 문제. 따라서 결과 집합에는 너무 많은 중복 데이터가 포함되어 있으며 SSRS 보고서 자체의 중복을 필터링하는 방법을 찾을 수 없습니다.

위의 결과 집합 만 반환하도록 MDX를 다시 작성하는 방법에 대한 아이디어가 있습니까?

또 다른 문제는 트랜잭션 데이터를 직접 슬라이스하도록 설정 한 역할 연기 카테고리 차원을 만든 경우 큐브를 탐색 할 때 얻은 숫자가 완전히 꺼져 있다는 것입니다. SSAS가 처리 중에 뭔가를하는 것처럼 보입니다 (하지만 정확히 똑같은 상태로 남아 있기 때문에 OLTP로 보내는 SQL 문은 아닙니다) 문제를 일으키는 SQL 문은 없지만 무엇이 있는지 전혀 모릅니다. 어떤 아이디어?

건배, 알렉스

답변

0

나는 나는 다음과 같은 쿼리를 사용하여 문제에 대한 해결책을 찾을 생각한다. 다음 보고서에서

WITH 
    MEMBER [Measures].[Visible] AS 
    IsLeaf([DIM Eco Res Category].[PARENTCATEGORY].CurrentMember) 
    MEMBER [Measures].[CurrentProd] AS 
    IIF 
    (
     [Measures].[Visible] 
    ,[DIM Eco Res Product].[Prod KEY].CurrentMember.Name 
    ,"" 
    ) 
SELECT 
    { 
    [Measures].[Visible] 
    ,[Measures].[CurrentProd] 
    ,[Measures].[FACT PRODSALES Count] 
    } ON COLUMNS 
,NonEmptyCrossJoin 
    (
    Descendants 
    (
     [DIM Eco Res Product].[Prod KEY].[(All)], 
    ,Leaves 
    ) 
    ,Descendants([DIM Eco Res Category].[PARENTCATEGORY].[(All)]) 
    ,[Measures].[FACT PRODSALES Count] 
    ,2 
) 
    DIMENSION PROPERTIES 
    MEMBER_CAPTION 
    ,MEMBER_UNIQUE_NAME 
    ,PARENT_UNIQUE_NAME 
    ,LEVEL_NUMBER 
    ON ROWS 
FROM [Sales]; 

나는 [측정]를 사용을 [CurrentProd]을로 제품 열에 대한 소스와 지금까지 잘 작동하는 것 같습니다.