내가 마지막으로 함께 절에서 ... 기본적으로 모든 계산 된 구성원 "을 얻을 수있는 방법을 발견 :
WITH MEMBER [Measures].[LastYear] AS
'(Tail(
nonempty(
[Anno].[Anno]
,([Autore].[Nome].CurrentMember, [Measures].[Unita (Libri)])
)
).item(0).item(0).MEMBERVALUE)'
SELECT
{[Measures].[Unita (Libri)],[Measures].[LastYear]} ON COLUMNS,
NON EMPTY
[Autore].[Nome].Members ON ROWS
FROM [Pubblicazioni]
하는 대신 하나의 시도 MEMBER "는 큐브의 정보로 취급됩니다. 내 경우, 내가 최대 ("저자가 일한 년의"xpression) 일 경우 상대 최대 연도에 쓴 책의 수를 줄 것이다. 이를 피하기 위해 Year를 String으로 인쇄하는 SetToStr()이라는 구조체가 있습니다 ([Hyerarchie]. [Level]. [Value]와 유사 함). 문자열은 왼쪽() 및 오른쪽() 조건으로 간단하게자를 수 있습니다. 다음은 결과입니다
WITH MEMBER [Measures].[Anno prima pubblicazione] AS 'left(right(settostr(head(extract(nonemptycrossjoin([Anno].[Anno].Members, nonemptycrossjoin([Libro].[Titolo].Members,[Autore].[Nome].CurrentMember)),[Anno]),1)),6),4)'
MEMBER [Measures].[Anno ultima pubblicazione] AS 'left(right(settostr(tail(extract(nonemptycrossjoin([Anno].[Anno].Members, nonemptycrossjoin([Libro].[Titolo].Members,[Autore].[Nome].CurrentMember)),[Anno]),1)),6),4)'
SELECT {[Measures].[Anno prima pubblicazione],[Measures].[Anno ultima pubblicazione]} ON COLUMNS,
[Autore].[Nome].Members ON ROWS
FROM [Pubblicazioni]
이 방법이 쿼리 작업 :.
1) nonemptycrossjoin와 현재의 저자에 대한 책을 추출 ([리브로] [Titolo] .Members, [Autore] [놈. ] .CurrentMember) 그래서 튜플을 얻을;
2) 올해는 nonemptycrossjoin ([Anno]. [Anno])와 함께 이전 튜플에 가입하게했습니다.회원들);
3) 내 경우에는 DM이 아직 주문되어 있지만 다른 경우에는 함수 순서도 사용해야합니다.
4) 우리는 모든 것을 필요로하지 않으므로 extract (, [Anno])를 사용하여 필요하지 않은 것을 휴지통으로 만듭니다. 이것은 계층 [Anno]의 값만 유지한다는 것을 의미합니다.
5) 우리는 단지 년차 순차 목록의 첫 번째 항목이 필요하며 head() 함수를 사용합니다.
6) 아직 값을 사용할 수 없거나 MDX가 선택한 [Anno] 값에 대해 사실 테이블의 항목을 계산하므로 setToStr();로 문자열로 변환합니다.
7) 값이 여전히 더러 우며 문자열에 hiearchy도 발생하므로 left() 및 right() 함수를 사용하여 정리합니다 (연도는 항상 4 자로 구성됩니다).
그것은 조금 큰 기능입니다, 그러나 이것은 단지 하나의 나를 :)
무엇 최대 년 (즉 교사 즉, 가장 최근 년)을 찾기 위해 MAX() 집계를 사용하는 방법에 대한 대신 근무하다 SUM() 집계? –
[WITHY MEMBER [Measures]와 같은 것을 사용하려고했습니다. [TopYear] 최대 ([Anno]. [Anno] .Members) '이고 3, 4, 5와 같은 값을 제공합니다 ... 잘 모르겠습니다. 왜 – Neo87
AGGREGATE() 함수에 대해 읽고 싶을 수도 있습니다.이 함수는 사용자가 수행 한 것과 약간 다릅니다. http://msdn.microsoft.com/en-us/library/ms145524.aspx –