2014-04-22 3 views
1

나는 MDX에서이 스크립트가이 다음과 같이 사용되는 :CURRENTMEMBER 날짜의 집합을 포함하지

WITH 
MEMBER [Measures].[FirstDay] as 
HEAD (
    DESCENDANTS ( 
    [Date].[Date - Calendar Month].CURRENTMEMBER, 
    [Date].[Date - Calendar Month].[Calendar Day]) 
    , 1 
).ITEM(0).member_value 
MEMBER [Measures].[LastDay] as 
TAIL (
    DESCENDANTS ( 
    [Date].[Date - Calendar Month].CURRENTMEMBER, 
    [Date].[Date - Calendar Month].[Calendar Day]) 
    , 1 
).ITEM(0).member_value 
SELECT 
    { 
    [Measures].[FirstDay], 
    [Measures].[LastDay] 
    } ON COLUMNS 
FROM [OurCube] 
WHERE 
    ({[Date].[Date - Calendar Month].[Calendar Year].&[2012], 
    [Date].[Date - Calendar Month].[Calendar Year].&[2013]}) 

문제는 내가 세트로 WHERE 절에 2012 년과 2013 년을 결합하는 시도하고 있다는 것입니다 사용자 지정 측정 값에서 CURRENTMEMBER 함수의 평가를위한 컨텍스트 -이 함수는 멤버가 아니라 집합을 필요로합니다. 이 치수 중 하나를 행이나 열에 [Date] 포함하지 않고 01 Jan 201231 Dec 2013를 반환 작동하도록

어떻게 스크립트를 변경할 수 있습니까?

답변

1
WITH 
MEMBER [Measures].[FirstDay] as 
(
    EXISTING [Date].[Date - Calendar Month].[Calendar Day].Members 
).ITEM(0).member_value 
MEMBER [Measures].[LastDay] as 
TAIL (
    EXISTING [Date].[Date - Calendar Month].[Calendar Day].Members 
    , 1 
).ITEM(0).member_value 
SELECT 
    { 
    [Measures].[FirstDay], 
    [Measures].[LastDay] 
    } ON COLUMNS 
FROM [OurCube] 
WHERE 
    ({[Date].[Date - Calendar Month].[Calendar Year].&[2012], 
    [Date].[Date - Calendar Month].[Calendar Year].&[2013]}) 

을 제공해야합니다. 첫 번째 계산을 약간 단순화했습니다. ITEM(0)이 이미 첫 번째 튜플을 사용하므로 HEAD(..., 1)을 사용할 필요가 없습니다.

SSAS 개발자 중 한 명이 "multiselect friendly MDX"에 대한 제안 사항에 대해 http://sqlblog.com/blogs/mosha/archive/2007/01/13/multiselect-friendly-mdx-for-calculations-looking-at-current-coordinate.aspx과 첫 번째 문장에서 언급 한 전신 기사를 참조하십시오.

+0

+1 우수한 추가 참조 자료. 나는 item과 head를 모두 포함하는 것에 대해 지나치게 복잡했다. 프랭크 고마워. – whytheq

관련 문제