MDX에서 비교적 간단해야한다고 생각되는 부분을 수행하는 데 약간의 문제가 있습니다. 특정 시점에서 지난 2 주 동안 내 측정 값 중 하나의 합계를 제공하는 계산 된 구성원을 만들고 싶습니다. 이 특히 어렵게 무엇MDX의 CurrentMember를 기준으로 차원 필터링
이TimeId TradingDate Day of Week
-----------------------------------
1000 11/1/2012 Thursday
1001 11/2/2012 Friday
1002 11/5/2012 Monday
1003 11/6/2012 Tuesday
... ...
내 시간 차원이 확실히 완료되지 않은 것입니다 : 같은 내 시간 차원 보인다. 내 Time 차원의 멤버는 모든 시간이 아닌 주식 시장의 거래일에만 해당합니다. 즉, 주말, 공휴일 또는 주식 시장이 종결 된 다른 날은 제외됩니다. 이것은 또한 정상적인 이동 시간 (예 : LAG
또는 PARALLELPERIOD
)이 여기서 제대로 작동하지 않음을 의미합니다. 예를 들어, LAG(14)
은 "14 거래일"을 의미하며, 특정 시점에서 실제 시간의 가변 길이를 나타낼 수 있습니다.
계산 된 멤버 내에서 CurrentMember의 지난 2 주 내에 멤버 만 얻으려면 FILTER를 사용하려고합니다. 그러나, 나는 이것을 성취하기위한 적절한 문법 (있는 경우)을 파악할 수 없다. 나는 그것이 다음과 같을 것이라고 상상한다 :
WITH MEMBER [Sum of Price Previous 2 Weeks] AS
SUM(
FILTER(
[Time].[TimeId].Children
, [Time].[TradingDate].MemberValue
>= VBA!DATEADD("ww", -2, [Time].[TradingDate].CurrentMember.MemberValue)
)
, [Price]
)
그러나 이것은 잘 작동하지 않는다. FILTER
함수 내에서 별도의 컨텍스트가 될 것으로부터 계산 된 멤버의 현재 컨텍스트를 분리 할 수 없습니다. 즉, 내가 말을하는 방법을 잘 모르겠어요 : FILTER
의 내부 세트 반복하면
" 에 계산의 범위를 CurrentMember의 값에 대한 각 반복의 현재 회원 비교 회원 "
나는 가능한 것을 달성하기 위해 노력하고 있습니까? 내가 한 일을 성취하기 위해 취할 수있는 다른 접근법이 있습니까?
SSAS에서 시간 차원이 시간 차원으로 올바르게 설정되어 있으며 다른 차원 특성을 해당 시간 구성 요소에 매핑 했습니까? 이렇게하면 MDX에서 사용할 수있는 시간 함수를 사용하는 데 도움이됩니다. – cairnz
시간 차원은 SSAS에서 "시간"차원으로 설정되고 TradingDate 유형은 날짜입니다. 그러나 TimeId는 날짜로 간주 될 수 있는지 확실하지 않으므로 Regular로만 설정됩니다. 그것은 특정 날짜에 비록 대응합니다. 내 Time 차원이 절대로 완전한 시간 표현이 아니라는 점에 유의해야합니다. 그것은 주식 시장이 열려있는 거래 일을 나타냅니다. – mclark1129
이 문제가 반복적으로 발생했습니다. CurrentMember는 차원이 축에 사용되지 않으면 "this iteration"을 참조합니다.그러나 내가 대답하기를 희망하는보다 일반적인 질문은 "어떻게 특성을 차원에 필터링 할 수 있습니까?"입니다. – Bill