2012-10-24 2 views
2

그래서 나는이 같은 데이터를 가지고 :MDX를 사용하여 고유 한 합계를 수행하는 방법?

Date  EMPLOYEE_ID HEADCOUNT TERMINATIONS 
1/31/2011  1   1    0 
2/28/2011  1   1    0 
3/31/2011  1   1    0 
4/30/2011  1   1    0 
... 
1/31/2012  1   1    0 
2/28/2012  1   1    0 
3/31/2012  1   1    0 

1/31/2012  2   1    0 
2/28/2011  2   1    0 
3/31/2011  2   1    0 
4/30/2011  2   0    1  

1/31/2012  3   1    0 
2/28/2011  3   1    0 
3/31/2011  3   1    0 
4/30/2011  3   1    0 
... 
1/31/2012  3   1    0 
2/28/2012  3   1    0 
3/31/2012  3   1    0 

그리고 나는 인원을 요약하고 싶지만, 나는 employee_id입니다 의해 합계에서 중복 항목을 제거해야합니다. 데이터에서 employee_id 1이 여러 번 테이블에 나타나지만 한 번만 인원 계수 열을 추가하려고합니다.

with member [Measures].[Distinct HeadCount] as 
      ??? how do I define this??? 
select { [Date].[YEAR].children } on ROWS, 
     { [Measures].[Distinct HeadCount] } on COLUMNS 
     from [someCube] 

제품이 출력을 것 그것은 : 나는 올해에 겹쳐서 예를 들어 나는이 쿼리를 사용하여 보고서를 얻을 수 있습니다

YEAR Distinct HeadCount 
2011   3 
2012   2 

모든 아이디어를 어떻게 MDX이 작업을 수행하는 방법? 각 직원의 합계에 사용되는 행을 제어하는 ​​방법이 있습니까?

답변

1

당신은 이런 식 사용할 수 있습니다

WITH MEMBER [Measures].[Distinct HeadCount] AS 
    Sum(NonEmpty('the set of the employee ids', 
       Descendants(Axis(0).Item(0).Item(0).Hierarchy.CurrentMember, Axis(0).Item(0).Item(0).Hierarchy.CurrentMember.Level, LEAVES)), 
     IIf(IsLeaf(Axis(0).Item(0).Item(0).Hierarchy.CurrentMember), 
      [Measures].[HeadCount], 
      NULL)) 
+1

이이 employee_id입니다 간단한 별개의 카운트 집계하지 않을까요 : 당신이 더 일반적인 표현이 사용할 수 있습니다 원하는 경우

WITH MEMBER [Measures].[Distinct HeadCount] AS Sum(NonEmpty('the set of the employee ids', 'all the dates of the current year (ie [Date].[YEAR].CurrentMember)'), [Measures].[HeadCount]) 

을 기둥? 중복 항목을 무시하고 고유 한 각 직원 ID에 대한 인원수 필드의 값을 합산하려고합니다. 나는 이것이 정확히 어떻게 그렇게 할지를 따라 가지 않습니다. 또한 일년 내내 어루 만져 보아라. 내 계산 된 측정 값을 어떤 차원으로 가져 가야 내가 원하는 모든 쿼리에서 사용할 수 있습니다. – chubbsondubs

+0

설명해 주시겠습니까? 이것이 진정한 해결책이라면 제가 포상하고 싶은 현상금이 있습니다. 그러나 첫 번째 제안은 별개의 계산과 전혀 다른 것으로 보이지 않습니다. 왜이 두 가지가 작동하는지 설명 할 수 있습니까? – chubbsondubs

관련 문제