치수

2014-10-20 7 views
1
여기

내 스크립트 닫 모의 인 측정 부재에 의존 :치수

(0)

SELECT 
    { 
    [Measures].[Revenue], 
    [Measures].[NumSignups] 
    } ON COLUMNS 
,NON EMPTY 
    { 
     [Date].[Calendar Year].[Calendar Year].MEMBERS* 
     [Date].[Calendar Month].[Calendar Month].MEMBERS* 
     { 
      [Location active].[Shop Name].MEMBERS 
     //[Location signup].[Shop Name].MEMBERS 
     } 
    } ON ROWS 
FROM [OurCube] 

[Revenue]가 측정 부재 [NumSignups] 반면 Dimension[Location active] 관련된 대책 부재 Dimension[Location signup]과 관련됩니다. 각 측정 값은 대체 위치 측정 기준과 관련이 없습니다. 그래서

다음의 두 논리적으로 잘못이며, (로 예상되는) 모든 셀에 같은 수를 반환 :

(1)

SELECT 
    { 
    [Measures].[Revenue] 
    } ON COLUMNS 
,NON EMPTY 
    { 
     [Date].[Calendar Year].[Calendar Year].MEMBERS* 
     [Date].[Calendar Month].[Calendar Month].MEMBERS* 
     { 
      [Location signup].[Shop Name].MEMBERS 
     } 
    } ON ROWS 
FROM [OurCube] 

(2)

SELECT 
    { 
    [Measures].[NumSignups] 
    } ON COLUMNS 
,NON EMPTY 
    { 
     [Date].[Calendar Year].[Calendar Year].MEMBERS* 
     [Date].[Calendar Month].[Calendar Month].MEMBERS* 
     { 
      [Location active].[Shop Name].MEMBERS 
     } 
    } ON ROWS 
FROM [OurCube] 

하나의 스크립트를 사용하여 두 측정 값을 모두 표시 할 수 있도록 일부 조건부 로직을 스크립트 (0)에 추가 할 수 있습니까?

답변

2

MDX에서는 불가능합니다. 모든 축의 구조는 MDX 문에 맞게 수정되어야합니다. 이것은 SQL과 유사합니다. 요도 서로 다른 열을 가지기 위해 결과의 다른 행을 가질 수 없습니다. 하나의 SQL select 문에는 모든 레코드에서 수정 된 열 목록이 있어야합니다. E. g. 1, 2 행에는 A, B, C 열이 있지만 3, 4 행에는 C, D, E 열이있는 SQL 문을 사용할 수 없습니다. 지. SQL 결과 세트가 직사각형 구조로 정의되므로 A, B, C, D, E 열이 네 개의 모든 행에 대해 존재할 수 있습니다 (어쨌든 공백이지만 어쨌든 존재 함). 각 행에 다른 열 집합이있는 프로그래밍 언어에서는 "비정형 배열"과 같은 것이 없습니다.

마찬가지로 MDX에서는 몇 가지 행에 기존 계층이없고 다른 행에 계층이 존재하지 않을 수 있습니다.

대신 두 개의 MDX 문을 작성하고 일부 사용자 선택에 따라 클라이언트 소프트웨어로 전환합니다.

+1

+1 감사합니다. Frank. 'SQL'에서 가능하지만 CTE의 결과를 FULL OUTRE JOINS하는 SELECT 문이 뒤 따르는 두 개의 CTE 문을 수행 할 수 있습니다. 아니면 하나의'CTE'와'UNION' 명령문 만 있으면됩니다. – whytheq

+0

@whytheq 나는 나의 대답을 분명히했다. – FrankPl