2008-11-05 5 views
3

저는 MDX 전체에 대해 처음 접했지만 다음은 저를 박쥐처럼 몰아 넣고 있습니다. A FILTER 나는 이상하게 행동하고있다. 설명을 다음 코드 샘플 : 나는 (일부 열이 약간 난독 화) 회계 연도의 주에 의해, 특정 판매 채널에 대한 총 단위를 당기려고MDX 필터 문제

SELECT 
    { 
     FILTER(
      MEMBERS([Time].[5-4-4 Week Year]), 
      [Measures].[Ship Gross Units] > 0 
     ) 
    } 
    ON COLUMNS, 
    { 
     FILTER(
      MEMBERS([Group].[Alternate Hierarchies]), 
      [Measures].[Ship Gross Units] > 0 
     ) 
    } 
    ON ROWS 
FROM SBD.SBD 
WHERE 
    (
     [FiscalYear].[FY09], 
     [Scenario].[Actuals Total], 
     [Measures].[Ship Gross Units], 
     [Channel].[FOS] 
    ) 

. 이러한 모든 필터는 SKU 수준에서 자주 발생하는 이러한 필터가 필요하기 때문에 필요합니다. 내 컴퓨터에서 잘라낸 데이터 집합을 처리하는 것이 더 간단합니다 (DB에서 작업을 수행하도록하십시오!).

문제는이며,이 쿼리는 FOS 채널에서 0 개의 매출을 반환합니다. 이상하게 보였으므로 행 필터를 제거했습니다.

SELECT 
    { 
     FILTER(
      MEMBERS([Time].[5-4-4 Week Year]), 
      [Measures].[Ship Gross Units] > 0 
     ) 
    } 
    ON COLUMNS, 
    MEMBERS([Group].[Alternate Hierarchies]) 
    ON ROWS 
FROM SBD.SBD 
WHERE 
    (
     [FiscalYear].[FY09], 
     [Scenario].[Actuals Total], 
     [Measures].[Ship Gross Units], 
     [Channel].[FOS] 
    ) 

갑자기 매출액이 FOS 채널에 나타납니다. 이것은 내 마음을 아프게한다. 이전에는 판매를 보여주는 행만 필터링한다고 가정했는데 아무 것도 얻지 못했습니다. 이제는 모든 것을 보여 주면서 판매 행이 있습니다. Perl 등에서이 문제를 해결하기는 쉽지만, "올바르게"해결할 수 있습니다.

저는 약간의 웃기는 부분을 오해하고있는 것이 확실 합니다만, 책상에서 머리를 두드리는 것에 지쳤습니다.

감사합니다.

답변

2

일반적으로 Microsoft Analysis Services에서 작동하지만 MDX는 일반적으로 Essbase에서 사용되는 것과 매우 유사합니다.

축이 독립적으로 평가되므로 Group의 필터 명령문은 where 절의 멤버 만 찾습니다. 따라서 총 총액 중 일부가 네거티브를 가지며 FY09의 경우 0보다 작거나 같을 수 있습니까? 또는 단위 수가 잠재적으로 데이터 형식을 오버플로하고 음수로 줄 바꿈 할만큼 충분히 크습니까?

비어 있지 않은 셀을 찾고있는 경우 가능한 한 가지 방법은 축에서 NON EMPTY 키워드를 사용하는 것입니다. 예.

SELECT  
    NON EMPTY MEMBERS([Time].[5-4-4 Week Year]), 
    ON COLUMNS, 
    NON EMPTY MEMBERS([Group].[Alternate Hierarchies]) 
    ON ROWS 
FROM SBD.SBD 
WHERE 
    (
     [FiscalYear].[FY09], 
     [Scenario].[Actuals Total], 
     [Measures].[Ship Gross Units], 
     [Channel].[FOS] 
    )