我想在 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 函数在没有第二个计算成员的情况下运行良好):
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]'
感谢您的任何想法。
最佳答案
我没有使用过 Mondrian,但在 SQL Server Analysis Services (SSAS) 中,使用 NULL 成员会导致范围从级别的一端到指定的成员。
在您的情况下,您正在寻找的计算成员可能是这样的:
Sum( { NULL : [Time].[Month].CurrentMember }
, [Measures].[Suits]
)
您还可以在另一端使用 NULL 成员执行到时间结束计算成员,如下所示:
{ [Time].[Month].CurrentMember : NULL }
关于postgresql - OLAP/MDX - 定义计算成员,对所有时间数据求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10933420/