2012-06-07 35 views
1

我想在OLAP立方體中定義「所有時間到日期」的計算成員。我能夠通過計算YTD如下:OLAP/MDX - 定義計算所得成員,總計所有時間到日期的數據

SUM(YTD([Time].[Month].CurrentMember), [Measures].[Suits]) 

我怎麼能包括因爲我的數據開始所有日期?我的時間維度的樣子:

<Dimension type="TimeDimension" visible="true" foreignKey="granularity" highCardinality="false" name="Time"> 
    <Hierarchy name="Time" visible="true" hasAll="true" primaryKey="eom_date"> 
    <Table name="v_months" schema="bizdata"> 
    </Table> 
    <Level name="Year" visible="true" column="year_number" type="String" uniqueMembers="false" levelType="TimeYears" hideMemberIf="Never"> 
    </Level> 
    <Level name="Quarter" visible="true" column="quarter_number" type="String" uniqueMembers="false" levelType="TimeQuarters" hideMemberIf="Never"> 
    </Level> 
    <Level name="Month" visible="true" column="month_number" type="String" uniqueMembers="false" levelType="TimeMonths" hideMemberIf="Never"> 
    </Level> 
    </Hierarchy> 
</Dimension> 

不知道相關:我使用的是蒙德里安OLAP服務器(Tomcat上運行),齋宮的前端,Postgres的數據庫

我已經嘗試了很多組合,但我無法弄清楚。

更新:我已經嘗試過使用語法通過Gonsalu建議:

<CalculatedMember name="YTD Suits" formatString="" formula="SUM(YTD([Time].[Month].CurrentMember), [Measures].[Suits])" dimension="Measures" visible="true"> 
</CalculatedMember> 
<CalculatedMember name="PTD Suits" formatString="" formula="Sum({NULL:[Time].[Month].CurrentMember },[Measures].[Suits])" dimension="Measures" visible="true"> 
</CalculatedMember>  

使用該蒙德里安開始時,我得到了以下錯誤消息(注意,YTD功能運作良好沒有第二個計算成員):

Caused by: mondrian.olap.MondrianException: Mondrian Error:Failed to parse query 
'WITH 
MEMBER [Measures].[Measures].[YTD Suits] 
    AS 'SUM(YTD([Time].[Month].CurrentMember), [Measures].[Suits])', 
    [$member_scope] = 'CUBE', 
MEMBER_ORDINAL = 6 
MEMBER [Measures].[Measures].[PTD Suits] 
    AS 'Sum({NULL:[Time].[Month].CurrentMember },[Measures].[Suits])', 
[$member_scope] = 'CUBE', 
MEMBER_ORDINAL = 7 
SELECT FROM [Project Performance]' 

謝謝你的任何想法。

回答

2

您可以使用PeriodsToDate函數以及allMember。 在你的情況將是:

PeriodsToDate([Time.Time].[all_Time_member_name],[Time.Time].CurrentMember) 
3

我沒有使用過Mondrian,但是在SQL Server Analysis Services(SSAS)中,使用NULL成員會導致範圍從關卡的一端移到指定的成員。

在你的情況,你要尋找的計算成員可能是這樣的:

Sum({ NULL : [Time].[Month].CurrentMember } 
    , [Measures].[Suits] 
    ) 

你也可以做一個到使用NULL成員在其他時間計算成員結束如下所示:

{ [Time].[Month].CurrentMember : NULL } 
+0

謝謝您的回答,遺憾的是它看起來這是不是蒙德里安有效語法:/我已經更新了我的帖子錯誤我收到了。 –

+0

在Pentaho的問題跟蹤器中找到[this issue](http://jira.pentaho.com/browse/MONDRIAN-264);雖然最後一條評論是從2007年開始的,但我不認爲在Mondrian的範圍規範中支持NULL。 – gonsalu