2014-10-13 7 views
0

MDX에는 CROSS JOIN 두 명의 측정 단위와 한 명의 측정 단위가 있지만 두 개의 측정 단위는 아닙니다. 이게 왜 그렇게? 그것이 의미하는 바는 무엇입니까?MDX - 측정 값 간 교차 결합이 작동하지 않는 이유는 무엇입니까?

SELECT 
    [Measures].[xyz] * [DimTable1].[SomeHierarchy].[Level] on 0, 
    [DimTable2].[SomeOtherHierarchy].&[Value] on 1 
FROM [MyCube] 
// WORKS 

SELECT 
    [Measures].[xyz] on 0, 
    [DimTable2].[SomeOtherHierarchy].&[Value] * [DimTable1].[SomeHierarchy].[Level] on 1 
FROM [MyCube] 
// OF COURSE IT WORKS 

SELECT 
    [Measures].[xyz] * [Measures].[ABC] on 0, 
    [DimTable1].[SomeHierarchy].&[Value] on 1 
FROM [MyCube] 
// DOES NOT WORK!! 
+0

왜 두 측정 값을 교차 결합 하시겠습니까? 최종 결과는 무엇입니까? 측정 기준의 경우 차원 속성의 가능한 조합을 가져 오지만 측정 기준을 사용하여이 작업을 수행하려는 이유는 무엇입니까? – mmarie

+0

두 측정 값이 교차 결합 될 때 배경에서 어떤 일이 일어나고 있는지 이해하려고합니다. crossjoin이 다양한 가능한 조건을 내포하고 있음을 잘 알고 있습니다. 하지만 제 질문은 측정 값이 교차 조인 될 때 ​​발생하는 것이고 오류가있는 이유는 무엇입니까? 내가하고 싶은 것이 아니라 내가 이해하고 싶은 것. – SouravA

+0

@Sourav_Agasti 교차 결합은 한 집합의 모든 구성원과 다른 집합의 모든 구성원의 데카르트 곱을 수행합니다 ... 두 개의 구성원 튜플 세트로 끝난다고 가정합니다. 이 튜플의 대부분은 큐브의 빈 공간에 있습니다. 즉, 결과가 없습니다. 교차 조인의 autexists 등록 정보는 이러한 빈 튜플이 삭제됨을 의미합니다. – whytheq

답변

1

난 당신이 잊어 믿습니다....

선택 [DD] [HH] [MM1] * [DD] [HH] [MM2]에 0, [ DimTable1]. [SomeHierarchy]. & [값] on 1 FROM [MyCube]

도 작동하지 않았습니다. 내 견본에서 [Measures]는 [dd]와 다르지 않습니다. MDX에서는 동일한 계층 구조 _의 여러 멤버 _와 함께 튜플을 정의 할 수 없습니다. 이 gentle introduction의 주요 개념을 설명해주십시오.

+0

감사합니다. 튜플의 개념을 이해합니다. 동일한 계층 구조의 2 명의 멤버가 크로스 조인 될 때 ​​나타나는 오류 메시지 (** Crossjoin 함수에서 xyz 계층 구조가 두 번 이상 사용됩니다. **)는 동일한 튜플 (** 'xyz'계층 구조는 튜플에 두 번 이상 나타납니다. **). 그러나 놀랍게도 두 가지 조치를 결합 할 때 오류 메시지는 다른 방식입니다. ** Axis0 함수는 인수에 대한 튜플 세트 표현식을 필요로합니다. 문자열 또는 숫자식이 사용되었습니다. ** – SouravA

+0

SSAS에 대해 자세히 알지 못합니다. 가능하면 구현 세부 사항. –

0

편집
세 번째 쿼리는 작동하지 않습니다, 다음과 같습니다 행복하지 않은 것을 이해할 수 있도록

enter image description here

노란색 영역은 비어 있습니다.

enter image description here

:

편집
다음은 행에 조치 A와 B의 crossjoin를 넣을 경우이 같은 것을 얻을 OLAP 기술

를 사용하는 엑셀의 피벗 테이블을 사용하는 비유이다

그런 다음 매우 작은 수준 (4 명의 구성원이있는)을 열에 추가하면 다음과 같이 표시됩니다.

enter image description here

그럼이 테이블의 본체에는 무엇이 들어 갈까요?
count이 가능하고 맞춤 측정 값을 만들면 MDX 일 것입니다 (이 명령문을 테스트 할 서버가없는 경우). Excel은 count으로 기본 설정되지만 그 결과는 무의미한가?

enter image description here

+0

당신의 비유는 정확하지 않습니다. 명시 적으로 (모든 계층 구조를 보유하고있는) 튜플을 완료하지 않으면, 그 계층 구조에서 기본 멤버를 선택합니다. 우리가 ** CROSS JOIN **을 단순히 회피했다면, 그것은 [default member] (http://www.bp-msbi.com/2011/01/default-measure-in-ssas-cubes/) (일반적으로 ** ALL **)을 모든 계층에서 가져와 가능한 최대 값을 반환합니다. 여기이 경우에, 나는 비슷한 것을 기대했을 것입니다, 그러나 그것은 오류입니다. – SouravA