2017-05-06 8 views
0

일부 큐브 데이터를 SQL 데이터베이스에 업로드하는 데 사용할 MDX 쿼리가 있습니다. 이 목적을 위해 모든 행에 헤더가 있어야하며 MDX에서는 기본적으로 수행되지 않습니다.MDX에 행 머리글을 추가하려면 어떻게합니까?

다음 MDX 쿼리를 수정하여 결과 테이블의 가장 왼쪽 두 열에 대한 헤더를 추가 할 수 있습니까?

검색어 :

SELECT                     
NON EMPTY                     
{                                   
    [Measures].[Internet Order Quantity], 
    [Measures].[Internet Sales Amount]             
} ON COLUMNS,  
NON EMPTY                     
{ (                      
    [Customer].[Education].[Education].ALLMEMBERS * 
    [Customer].[Home Owner].[Home Owner].ALLMEMBERS 
) } ON ROWS                                    
FROM [Adventure Works] 

결과 테이블 :

Query result

감사

+0

않는 한을 SSMS는 최종 사용자 클라이언트 도구입니다. 결과를 렌더링하는 방법에 대해 걱정하지 않아도됩니다. 진정한 고객 도구는 무엇입니까? 같은 행동을 보입니까? – GregGalloway

+0

최종 목표는 큐브 데이터를 주기적으로 쿼리하여 SQL 데이터베이스에 삽입하는 것입니다. 올바른 헤더를 갖는 것이 더 쉬울까요? – user2348684

답변

1

결과를 삽입하여 시나리오에 대한 논리적 인 선택이 될 것 SQL 서버 linked server connected to SSAS를 통해 쿼리를 읽기 큐브에 대한 쿼리를 SQL Server로 가져옵니다. 정확한 쿼리는 연결된 서버를 통해 읽을 때 열 헤더를 갖습니다. 따라서 SSMS MDX 쿼리 창에 대한 쿼리 결과는 Rowset이 아닌 Cellset으로 렌더링되므로 걱정하지 않아도됩니다.

0

그렉의 대답은 정확합니다. 우리가 발견 한 문제 SSAS에 연결된 서버에 (속도 & 차단 재) 다음과 같은 CLR 솔루션을 사용 :

https://olapextensions.codeplex.com/

당신하여 저장 프로 시저로 다음을 수행 한 후 수 있습니다

CREATE TABLE #results(
    Education  VARCHAR(250), 
    Owner   VARCHAR(250), 
    OrderQuantity FLOAT, 
    SalesAmount FLOAT 
); 

DECLARE @Server NVARCHAR(30) = 'localhost' 
DECLARE @Database NVARCHAR(50) = 'AdventureWorksDW2012Multidimensional-EE'; 
DECLARE @MDX NVARCHAR(MAX) = 
' 
SELECT                     
NON EMPTY                     
{                                   
    [Measures].[Internet Order Quantity], 
    [Measures].[Internet Sales Amount]             
} ON COLUMNS,  
NON EMPTY                     
{ (                      
    [Customer].[Education].[Education].ALLMEMBERS * 
    [Customer].[Home Owner].[Home Owner].ALLMEMBERS 
) } ON ROWS                                    
FROM [Adventure Works] 
' 

INSERT INTO #results 
EXEC ExecuteOLAP @Server, @Database, @MDX; 

SELECT * 
FROM #results;