OLAPキューブで「これまでのすべての」計算メンバーを定義したいと思います。次を使用してYTDを計算できます。
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>
関連するかどうかわからない:私はmondrian olapサーバー(tomcatで実行)、フロントエンドとしてSaiku、データベースとして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>
これを使用すると、mondrianを起動するときに次のエラーメッセージが表示されます(YTD関数は2番目の計算されたメンバーがなくても正常に機能することに注意してください)。
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]'
アイデアありがとうございます。