2014-02-27 3 views
1

mdx 표현식에 인공 (더미) 열을 삽입해야하는 이유가 있습니다.mdx 쿼리에 인공 열 삽입

SELECT {[Measures].[AFR],[Measures].[IB],[Measures].[IC All],[Measures].[IC_without_material],[Measures].[Nonconformance_PO],[Measures].[Nonconformance_GPT],[Measures].[PM_GPT_Weighted_Targets],[Measures].[PM_PO_Weighted_Targets], [Measures].[AVG_LC_Costs],[Measures].[AVG_MC_Costs]} ON COLUMNS, 
([dim_ProductModel].[PLA].&[SME]) 
* ORDER( {([dim_ProductModel].[Warranty Group].children)} , ([Measures].[Nonconformance_GPT],[Dim_Date].[Date Full].&[2014-01-01]) ,desc) 
* ([dim_ProductModel].[PLA Text].members - [dim_ProductModel].[PLA Text].[All]) 
* {[Dim_Date].[Date Full].&[2013-01-01]:[Dim_Date].[Date Full].&[2014-01-01]} ON ROWS 
FROM [cub_dashboard_spares] 

그냥 몇 가지 조치 및 crossjoined 크기, 매우 중요하지 않다 :

이 ilustrate하기 (이유는 내가 열 특정 수의 쿼리를 얻을 필요가있다),이 내 샘플 쿼리입니다. 이제 f.e를 추가해야합니다. 2 여분의 열, null/0 값 또는 다른 crossjoined 차원을 가진 측정 값이 될 것이라고 나는 상관 없어. 내 큐브에 데이터를 삽입하지 않고 쉬운 방법으로이 작업을 수행 할 수 있습니까?

SQL에서는 Select 0을 쓰거나 "dummy1"을 선택할 수 있지만 여기에서는 ON ROWS 나 ON COLUMNS 부분에서 쿼리를 수행 할 수 없습니다.

, 당신의 도움을 당신에게

감사합니다,

피터

PS 대단히 감사합니다 : 지금까지 난 그냥 어느 정도 더 많은 시간을 삽입 할 수,하지만 나는 가능성에가 있는지 관심 실제로 "더미"열을 삽입하십시오.

답변

1

귀하의 질의는 단지 열에 측정 치수를 가지고 있습니다. 일부 열을 기준으로 확장하는 가장 쉬운 방법은 마지막 계수를 올바른 횟수만큼 반복하여 반복하는 것입니다. 마지막 측정 값은

WITH member Measures.dummy as NULL 
SELECT {[Measures].[AFR],[Measures].[IB],[Measures].[IC All],[Measures].[IC_without_material],[Measures].[Nonconformance_PO],[Measures].[Nonconformance_GPT],[Measures].[PM_GPT_Weighted_Targets],[Measures].[PM_PO_Weighted_Targets], [Measures].[AVG_LC_Costs],[Measures].[AVG_MC_Costs], 
Measures.dummy, Measures.dummy, Measures.dummy 
} 
ON COLUMNS, 

([dim_ProductModel].[PLA].&[SME]) 
* ORDER( {([dim_ProductModel].[Warranty Group].children)} , ([Measures].[Nonconformance_GPT],[Dim_Date].[Date Full].&[2014-01-01]) ,desc) 
* ([dim_ProductModel].[PLA Text].members - [dim_ProductModel].[PLA Text].[All]) 
* {[Dim_Date].[Date Full].&[2013-01-01]:[Dim_Date].[Date Full].&[2014-01-01]} 
ON ROWS 

FROM [cub_dashboard_spares] 

에게 I를 사용하는 것이 계산하는 복잡한 경우에 더 효율적일 수있다

다른 가능성. 이자형. 열의 끝에 필요한만큼 많은 계산을 필요로하지 않는 더미 측정을 추가합니다.

+0

완벽! 내가 필요한 것. 나는 반복적 인 측정으로 이전에는 해결책을 가졌지 만, 이것은 계산상의 복잡성이 적고 복잡성이 더 적었습니다. 2. 반복적 인 측정이 다른 프로그래머에게 버그/더 혼란스러워 보일 수있는 반면, 추가 열이 거기에 있다는 것이 더 분명합니다. 한 번 더 고마워. – Peter

+0

@FrankPI 제발, 반복 또는 더미 변수를이 내 경우에 행에 삽입하는 방법이 있습니까? 내가 어떤 차원을 반복하려고하면 "hierarhy는 Crossjoin 함수에서 두 번 이상 사용됩니다." ? 감사합니다, 더 나은 "nulls"inbetween 내 행을 것입니다. (불행히도 Excel에서 vlookup을 사용하기 쉽게하려면 열에 불필요한 구조가 필요함) – Peter

+0

지금까지 데이터 뷰에 "계산 된 열"을 삽입하여 해결했습니다.이 뷰에서는 리터럴을 0으로 설정 했으므로이 열을 사용할 수 있습니다. crossjoin .. 조금 더럽긴하지만 성능은 낮아 보이지 않습니다. – Peter