2012-05-23 3 views
0

어제 처음으로 큐브를 만들었습니다. 나는 아직이 말을 듣지 않으므로 용어의 오용을 용서해주십시오. 내 치수 중 하나 인 MyDimension1에 계층 구조가 있다고 가정하고 두 단계로 MyHierarchy라고 부르 자. Level1Level2이라고 부르 자.계층 구조의 모든 수준을 MDX의 튜플로 선택

내가 좋아하는 뭔가를 할 수있을 것 : 나에게 내가 원하는 결과를 제공

SELECT 
{ [Measures].[Whatever] } ON 0, 
{ ([MyDimension1].[Level1].[Level1], [MyDimension1].[Level2].[Level2]) } ON 1 
FROM MyCube 

합니다. 내가 올바르게 이해한다면, 정의 축 1은 두 개의 구성 요소 (?)를 가진 튜플을 포함합니다. 터플의 각 구성 요소 (?)는 다른 차원에서 온 것으로 가정되었지만 위 쿼리에서 보여준 것처럼 동일한 차원의 구성 요소를 지정할 수있는 것 같습니다. 이름으로 계층 구조를 지정하고 서버가 나를 위해 튜플을 만들도록하고 싶습니다. 그래서 뭔가가 :

SELECT 
{ [Measures].[Whatever] } ON 0, 
{ AllLevelsToTuple([MyDimension1].[MyHierarchy]) } ON 1 
FROM MyCube 

그러나 나는 이것을하는 방법을 생각할 수 없다. 미리 감사드립니다!

EDIT (내 예를 들어, 회답의 요청에 따라) :

이 내가 기능적으로, 원하는 것을,하지만 난하고 싶은 구문되지 않습니다 :

SELECT [Measures].[Original] ON 0, 
([Customer].[Customer].[Customer], [Customer].[Account ID].[Account ID]) ON 1 

결과 () SSMS에서 : 나는 차원을 확장하면

   Original 
--------- -- -------- 
CustomerA 15 306.03 
CustomerA 16 754.20 
... 
CustomerB 17 524.43 
... 
CustomerC 22 760.42 
... 

, 그것은 같이 보인다 :

0 내가 좋아하는 일을 할 때

(내가 뭔가를 유사한 구문을하고 싶습니다) :

SELECT [Measures].[Original] ON 0, 
([Customer].[Hierarchy].Members) ON 1 

을 나는 다음과 같은 결과를 얻을 :

  Original 
---------- -------- 
All   17638.15 
CustomerA 2624.76 
15 
16 
... 
CustomerB 3113.67 
17   524.43 
... 
CustomerC 3427.01 
22   760.42 
... 

내가 3 열,하지있을 싶어 2, 기본적으로.

+0

일부 샘플 출력을 나열 할 수 있습니까? – Rick

+0

물론, 내가하고있는 것의 요약 된 버전을 사용했다. (물론 쓰레기 데이터). –

답변

1

예, 다른 차원에서 튜플을 만들 수 있으며 괄호 사이에 쉼표로 구분하여 멤버를 배치 할 수 있습니다.

그러나이 경우 튜플은 필요하지 않습니다. 집합에는 쉼표로 구분되고 중괄호 ({}) 사이에 배치 된 단일 차원의 구성원이 포함됩니다.

descendants 기능을 살펴보십시오. 이 함수를 사용하여 계층 구조에서 집합을 만들 수 있습니다.

+0

결과가 원하는 방식으로 보이게하려면 튜플이 필요합니다. 샘플 결과를 편집하십시오 :) –

3

너는 이것을 MDX gentle introduction 읽을 수 있습니다.

나는 각 구성 요소 (?) 튜플의 대신 다른 계층에서을 다른 차원

에서 있어야하는데 읽었습니다.AS에서는 각 레벨마다 해당하는 계층 구조가 있다고 생각합니다. 내가 AS의 전문가가 아니에요

{ ([MyDimension1].[Level1].[Level1], [MyDimension1].[Level2].[Level2]) } ON 1 

그러나 나는 다음과 같은 성명 추측 : 그래서 당신처럼 다음과 같은 외모는 두 개의 서로 다른 계층 구조의 수준을 액세스하는

SELECT [Measures].[Original] ON 0, 
([Customer].[Customer].[Customer], [Customer].[Account ID].[Account ID]) ON 1 

실제로 crossjoin으로 해석됩니다 2 명의 다른 계층의 레벨 구성원들;() 표기 대신 다음 {튜플 표기법과}, {}의() 연산자로 해석하는 것이보다 가능성있는 MDX에 crossjoin이다 : 따라서

SELECT [Measures].[Original] ON 0, 
[Customer].[Customer].[Customer].members * [Customer].[Account ID].[Account ID].members ON 1 

하여 측정 앞의 두 열의 결과.

기본적으로 2가 아닌 3 열이 필요합니다.

계산 된 측정 값을 사용해야합니다. 예 :

with 
MEMBER Measures.HN as [Customer].Currentmember.Hierarchy.Name 
MEMBER Measures.LN as [Customer].Currentmember.Level.Name 
MEMBER Measures.MN as [Customer].Currentmember.Name 

SELECT { Measures.HN, Measures.LN, Measures.MN, [Measures].[Original] } ON 0, 
([Customer].[Hierarchy].Members) ON 1 
관련 문제