2013-08-27 3 views
3

큐브를 기반으로하는 MDX 보고서에서 날짜 입력 도움말은 달력이어야하므로 매개 변수의 날짜/시간 유형이 필수입니다. 데이터를 필터링하는 시간 차원 필드는 정수입니다. 예제 값 : 20130827.이SSAS - MDX DataSet 쿼리에 MDX 보고서 매개 변수 전달

내 데이터 집합 쿼리는 다음과 같습니다는 다음과 같이 내가 나에게 보여 주었다 텍스트 필드를 사용

SELECT NON EMPTY { [Measures].[Hours In Track] } ON COLUMNS, NON EMPTY { 
([Dim Date].[Date ID].[Date ID].ALLMEMBERS * [Dim Division].[Hierarchy].[Division ID].ALLMEMBERS) } 
DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM 
(SELECT (STRTOSET(@DimDivisionHierarchy, CONSTRAINED)) ON COLUMNS FROM 
(SELECT (STRTOMEMBER(@FromDimDateDateID, CONSTRAINED) : STRTOMEMBER(@ToDimDateDateID, CONSTRAINED)) ON COLUMNS FROM [BicepsArveCube])) 
CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS 

, 날짜/시간 형식 매개 변수의 값은 같습니다 2013년 8월 5일 00:00:00, DateID는 정수 유형이므로 변환해야합니다. 데이터 세트 매개 변수 탭에서 내가 표현으로 매개 변수 값을 지정하면

는 :

="[Dim Date].[Date ID].&[" 
& Replace(Replace("2013-08-05 00:00:00", "-", ""), " 00:00:00", "") 
& "]" 

을 나는 예상대로 데이터, 모든 것이 잘 작동 얻을. 내가 매개 변수 값 (유형 날짜/시간) 하드 코딩 된 날짜/시간 값을 변경할 때 :

="[Dim Date].[Date ID].&[" 
& Replace(Replace(Parameters!FromDimDateDateID.Value, "-", ""), " 00:00:00", "") 
& "]" 

을 나는 제약 조건 위반 오류가 발생합니다. 이유는 모르겠다. 위에서 쓴 것처럼, Parameters!FromDimDateDateID.Value은 내가 사용한 하드 코드 된 값과 정확히 똑같이 보인다.

나는 두 경우 모두 변환 (하드 코딩 날짜와 같은 날짜 달력에서 선택 및 매개 변수 값으로 전달) 후 무엇을 얻을 발현 확인 텍스트 필드를 사용하고 정확하게 같은 같습니다

[Dim Date].[Date ID].&[20130805] 

답변

3

시도를

MDX에서
STRTOMEMBER(
    "[Dim Date].[Date ID].&[" 
+ Replace(Replace(@FromDimDateDateID, "-", ""), " 00:00:00", "") 
+ "]", 
CONSTRAINED) 

- 분석 서비스에 의해 해석된다 - 당신이 액세스 할 수 없습니다보고 서비스는 Parameters 같은 객체. 대신 해당 값은 @ 표기법을 사용하여 참조 할 수있는 MDX 문과 함께 Analysis Services 서버로 보내집니다.

+0

안녕하세요, 감사합니다,하지만 귀하의 아이디어를 구현 한 후, 쿼리를 실행하는 동안 오류 메시지 "다음 시스템 오류가 발생했습니다 : 액세스가 거부되었습니다". –

+0

메시지가 SSRS 또는 SSAS의 메시지인지 확인할 수 있습니까? 큐브의 모든 부분에 대한 전체 액세스 권한이 있거나 큐브의 액세스 제한이 있습니까? – FrankPl

+0

이 오류는 Microsoft SQL Server 2012 Analysis Services에서 발생합니다. 액세스 제한이 설정되어 있지 않으며 가능한 모든 역할, 개인 정보 등을 확인했습니다. 여전히 동일한 오류가 발생했습니다. ( –