postgresql - OLAP/MDX - 定义计算成员,对所有时间数据求和

标签 postgresql mdx olap

我想在 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/

相关文章:

postgresql - 使用 Anorm 在 PostgreSQL 中插入图像文件

python - postgres 和 pg8000 python 的连接问题 - 清除密码问题?

MDX 'is not equal to' 在 where 子句中

postgresql - 在聚合数据和记录级数据之间快速移动

java - 从 Java 访问 infobright

version-control - 计算的尺寸/尺寸

postgresql - 无法使用带有复制命令的平面文件将数据插入到 postgresql 表中

arrays - 从 postgres 表中提取 json 数组给出错误 : cannot extract elements from a scalar

mdx - 访问SSAS的不同方法

sql-server - SQL Server SSAS MDX 查询