2015-10-05 36 views
1

我一直在試圖獲得通過MDX以下查詢的估值師列,而是越來越ValueW爲一體的MDX如何更新多維數據集,以獲得MDX做工精細

select 
exp(Log(sum(MTMROR)+ 1))-1 as ValueW, 
exp(sum(Log(MTMROR + 1)))-1 as ValueR 
from 
Temp_Performance 
where Rundate in ('2015-03-01','2015-03-02') 

MDX的書面輸出以上查詢是

With 
Member [Measures].[LogValuePre] 
as ([Measures].[MTMROR] + 1) 
Member [Measures].[LogValuePre1] 
as VBA![LOG]([Measures].[LogValuePre]) 
Member [Measures].[LogValue] 
as VBA![Exp](Sum([Measures].[LogValuePre1]))-1 

select 
{ 
    [Measures].[LogValuePre], 
    [Measures].[LogValuePre1], 
    [Measures].[LogValue] 
} on 0, 
{ 
    [Dim Company Fund].[Company Fund Id].&[1274] 
    //* {[Dim Time].[Date].&[2015-03-01T00:00:00] : [Dim Time].[Date].&[2015-03-//02T00:00:00]} 

} on 1 
from 
(
    select {[Dim Time].[Date].&[2015-03-01T00:00:00] : [Dim Time].[Date].&[2015-03-02T00:00:00]} on 0 
    from [DSV_Cube] 
) 

[MTMROR] measure具有合計函數Sum。我能從這種行爲中得到什麼是MDX首先彙總結果,默認彙總函數是Sum。當我嘗試通過在行上設置日期維度(取消註釋日期維度)來查看具有更多粒度數據的值時,我會得到正確的日誌和exp日誌值。它顯示的日期維度的正確值在事實表中是最精細的級別。在嘗試以較小的粒度級別(基金級別)獲取數據時,會自動應用求和功能。
如果我在多維數據集結構中將AggregateFunction設置爲none,那麼我會將null作爲輸出。 如何在[MTMROR]度量中的求和函數之前應用對數函數?

感謝

+0

「MTMROR」措施的構建與上述哪些維度相關,以及如何實現? – SouravA

+0

@SouravA:事實MTMROR與兩個維度[Dim Company Fund]和[Dim Time]有關。這兩者都與事實相關,是正常的關係。 – 107

+0

你能告訴我們一些樣品結果嗎? – SouravA

回答

0

保持聚合類型爲None和立方體如下添​​加計算成員:

SCOPE 
    (
    [Dim Time].[Date].[All], 
    [Measures].[MTMROR] 
    ); 


This = 
SUM 
(
NonEmpty 
(
    [Dim Time].[Date].MEMBERS, 
    [Dim Company Fund].[Company Fund Id].CURRENTMEMBER 
) 
* [Dim Company Fund].[Company Fund Id].CURRENTMEMBER, 
[Measures].[MTMROR] 
) 

這樣做是什麼,只要日期級別粒度是不是在上下文(即ALL成員它會查找該基金ID的所有日期以及該基金ID和日期的組合,並將其總結(有效地將AggregationType保留爲SUM)。相反,如果軸上的日期是IS,則它的行爲正常並顯示該值。

希望這會有所幫助。

編輯

如果聚合類型必須是SUM,測量組中增加一個措施,只要保持它的價值LOG(MTMROR + 1)

使用,在你的計算。

+0

我覺得我的話不好說明問題。 AggregationFunction是Sum.While資金和日期都在軸上,大部分細粒度數據都被提取,因此沒有任何東西可以添加。總和工作正常,只有在軸上的日期。只有我需要執行日誌(MTMROR + 1)的軸上的數據。究竟發生了什麼是Log(Sum(MTMROR)+ 1)。具有AggregationFunction的成員具有較低的求解順序,因此在對計算成員執行Log操作之前執行Sum。大多數時候我需要SUM第一行爲,而在少數情況下需要Log行爲。是否可以先執行Log? – 107

+0

所以你的意思是'沒有'聚合類型不是一種可能性,它絕對必須是'總和'? – SouravA

+0

如果我們設置'None'聚合類型,那麼我們必須給出FundId,軸上的日期以顯示MTMROR數字。我認爲在沒有聚合類型的情況下,我們必須確定軸上的所有屬性,它定義了事實的粒度。 – 107