2014-07-24 2 views
2

현재 계산 된 멤버를 사용하여 고객이 처음 판매 한 판매 금액을 반환하려고합니다. 나는 약간의 코드를 사용하여 다양한 블로그를 살펴 보았지만 찾고있는 결과 세트와 일치하는 방식으로이를 적용하는 데 몇 가지 문제가 발생했습니다.첫 번째 판매 금액을 얻는 MDX

계산 된 여러 멤버를 만들려고합니다. 하나는 특정 제품의 첫 주문 날짜를 반환하는 것입니다. 나는 지금 그 날짜를 가져 와서 그 날의 그 제품의 판매만을 돌려주고 싶습니다. 이것은 현재 날짜 축을 방정식에 넣을 때마다 문제가 발생하는 곳입니다. 계층 구조의 요일 수준에 있지 않으면 CurrentMember 함수가 어떤 수준으로 집계되어 일부 불일치가 발생합니다.

여기에 내가 (우리의 마지막 처리 시간입니다) 전날의 일 수준에서의 WHERE 절을 넣을 경우이 코드는 작동 현재

WITH 
MEMBER [Measures].[DaysToDate] AS 
COUNT(NULL:[Date].[Fiscal].CURRENTMEMBER) 


MEMBER [Measures].[HadSale] AS 
IIF([Measures].[Product Sales]=0,NULL,[Measures].[DaysToDate]) 


MEMBER [Measures].[MinDate] AS 
MIN(NULL:[Date].[Fiscal].CURRENTMEMBER, [Measures].[HadSale]) 


MEMBER [Measures].[FirstSaleDay] AS 
IIF(ISEMPTY([Measures].[MinDate]), NULL, 

    [Date].[Fiscal].[Day].MEMBERS.ITEM([Measures].[MinDate]).NAME) 


SELECT { 
    [Measures].[DaysToDate] 
    ,[Measures].[HadSale] 
    ,[Measures].[MinDate] 
    ,[Measures].[FirstSaleDay] 
    } ON 0, 
[Sales Team].[Sales Team].[Customer].MEMBERS ON 1 
FROM [Sales and Marketing] 

무슨의 일반입니다. 그러나 제가 회계 연도라고 말하면, 일보다 높은 레벨 인 칼럼에 배치하면 Days 대신 Quarters를 기준으로 CurrentMembers를 계산하고 내부의 통과로 인해 잘못된 일을 반환합니다. [FirstSaleDay]의 ITEM().

저는 대부분이 계층 구조의 어떤 레벨이 최종 쿼리에 전달되는 것과 대조적으로 이러한 계산이 하루 수준에서 작동하도록하는 방법을 찾고 있습니다.

도움을 주시면 감사하겠습니다.

답변

0

전체 질문에 답변하지는 못했지만 계산 된 회원이 계층 구조의 "하루"수준을 사용하도록 강제하는 방법을 찾고 있다고 말한 이후로이 방법을 사용해야한다고 생각합니다. 너를 위해서. 나는 과거에 사용한 기술입니다.

MEMBER x As Descendants([Date].[Fiscal].CurrentMember,4,SELF).Item(0).Value 

이 공식은 먼저 달력을보고, 계층 구조의 맨 (즉, 식의 SELF이다)로 이동합니다. 그런 다음 지정된 수의 단계를 탐색합니다. 내 캘린더에는 네 가지 레벨이 있지만 네가 다를 수 있으므로 그럴 경우 조정해야합니다. 이것은 집합이지만, 달력이 일반적인 방식으로 정렬되었다고 가정하면 .Item (0)을 사용하여 첫 번째 멤버를 가져올 수 있습니다. .Value은 필수는 아니지만이 수식을 회원으로 자체 정의 할 수 있으므로 테스트에 도움이됩니다.

관련 문제