2012-09-26 4 views
1
select measures.name on 0, 
datediff("d", [Fecha].[Date].currentmember.member_value, [Dim Date].[Date].currentmember.member_value) on 1 
from cube 

Error: Execution of the managed stored procedure datediff failed with the following error: Exception has been thrown by the target of an invocation.Argument 'Date1' cannot be converted to type 'Date'MDX DATEDIFF 오류

는 MDX에 DATEDIFF을 할 수있는 요구 사항이 있습니까? 차원에서이 멤버는 datetime으로 정의되어 있습니다. 결과에 영향을 줄지 확실하지 않은 경우 ...

업데이트 : 데이터 원본 뷰와 큐브에서 계산을 수행하여 문제를 해결했습니다. MDX에서 필자가 필요로하는 지표를 만들 수있었습니다. 물론 결과를 테스트하기 위해 SSAS를 사용하고 구성원을 생성하기 위해 SSDT를 사용합니다. 나는이 접근이 많은 사람들에게 도움이되기를 희망한다. 비록 이것이 최선의 시나리오인지 모른다. Happy MDX)

+0

''[Fecha]. [Date]''에 회원 값의 유형은 무엇입니까? – Benoit

+0

날짜/시간입니다. 두 차원 모두 큐브에서 DimDate 테이블과 "연결"됩니다. –

답변

0

기본적으로 축은 member_value가 아닌 멤버 이름을 표시하며, 항상 문자열입니다. Member_Value는 측정 값입니다.

With Member MyDateDiff as 
    datediff("d", [Fecha].[Date].currentmember.member_value, [Dim Date].[Date].currentmember.member_value) 
Select 
    (Measures.MyDateDiff, Measures.Name) on 0 
    (Fecha.Date.Members, [Dim Date].[Date].Members) on 1 
From cube 

편집

나도 아직이 새로운 해요,하지만 귀하의 의견 후에, 나는 내가 유사한 쿼리를 잘 얻을 겪은 과정에 정교하게해야한다고 생각.

먼저 자신이 생각하는 데이터를 가져오고 있는지 확인하십시오. Column_ 치수로 해당 Member_Value 치수를 가져옵니다.

With 
    Member FechaDate as 
     [Fecha].[Date].currentmember.member_value 
    Member MyDate as 
     [Dim Date].[Date].currentmember.member_value 
Select 
     (Measures.FechaDate, Measures.MyDate) on 0 
     (Fecha.Date.Members, [Dim Date].[Date].Members) on 1 
From cube 

날짜 값을 가져 왔습니까? '예'라고 답한 경우, datediff 기능을 사용해보십시오. 그렇지 않은 경우 차원 정의를 확인하십시오. 속성 중 하나의 ValueColumn이 날짜 값 필드 대신 키 필드로 설정되었거나 그와 같은 것으로 설정되어 있다는 사실에 놀라지 않을 것입니다.

+0

내 무지를 정말 유감스럽게 생각하지만 조금 더 설명해 주시겠습니까? 최근 mdx로 코딩을 시작했습니다. 나는 조금 길다. 고맙습니다. –

+0

그래, 나도. 축에서 보려는 속성 속성을 선택할 수 없다는 것을 배우는 것은 매우 실망 스러웠습니다. ROWS 축에서 사용할 때 항상 쿼리는 member_caption을 반환합니다. 따라서 member_value를 별도의 Member로 가져 와서 Columns 축에 놓아야합니다. 나는 이유를 모른다. – Bill

+0

당신이 나에게 제안한 접근법 덕분에 감사를 느낍니다. 작동하지 않으면 dsv에 계산 된 날짜가있는 열을 추가하고이를 큐브의 측정 값으로 추가합니다. –

0

두 단계가 필요할 수 있지만 날짜 추가 방법이 좋을 것입니다. Bill의 Member 접근법은 훌륭하지만 날짜 객체가 아닌 문자열로 반환합니다. 올바른 형식으로 있다면, 당신은 할 수 있어야한다 :

Member MyDate as 
DATEDADD("d", 1, VBAMDX!CDate([Dim Date].[Date].currentmember.member_value)) 

이 날짜 문자열이 서식 끝나는 방법에 따라 할 수있는 좀 더 많은 작업을 할 수 있습니다.