mondrian mdx 过滤日期维度中年份级别的集合
Posted
技术标签:
【中文标题】mondrian mdx 过滤日期维度中年份级别的集合【英文标题】:mondrian mdx filter a set on year level in a date dimension 【发布时间】:2014-06-15 06:53:46 【问题描述】:mdx 新手。 我有一个具有日期维度的查询。年份是整数并且在级别 CalYear 中。 我正在使用蒙德里安(通过 Pentaho)
如何显示 2012 年之后的年份?整数值为 2012、2013、2014 的数据年份。 它是一个时间维度;这个级别是一年。
如果我从这个查询开始:
SELECT
[Measures].[SalesMonth] ON COLUMNS,
[YearMonth.CalYearMonth].CalYear.members ON ROWS
FROM [mt_report]
我得到三行的结果。
我试试这个:
SELECT
[Measures].[SalesMonth] ON COLUMNS,
Filter([YearMonth.CalYearMonth].CalYear.members,
[YearMonth.CalYearMonth].CalYear.CurrentMember.Value > 0) ON ROWS
FROM [mt_report]
它返回所有数据(与第一个查询相同)
但是
SELECT
[Measures].[SalesMonth] ON COLUMNS,
Filter([YearMonth.CalYearMonth].CalYear.members,
[YearMonth.CalYearMonth].CalYear.CurrentMember.Value > 9999) ON ROWS
FROM [mt_report]
但这也返回相同的结果。
这行得通...
Filter([YearMonth.CalYearMonth].[CalYear].Members,
[YearMonth.CalYearMonth].[CalYear].CurrentMember.name > '2012')
【问题讨论】:
【参考方案1】:在 MDX 中,您可以使用 range operator,并将 NULL 作为第二个参数:
如果 [年月].[2012]是 2012 年的成员:
SELECT
[YearMonth].[Year].[2013]:NULL on 0
...
使用 2012 和使用 nextMember MDX 函数也是如此。
SELECT
[YearMonth].[Year].[2012].nextMember:NULL on 0
...
【讨论】:
在蒙德里安,它什么也不返回。这被报告为一个错误,但基本上标记为“不会修复”。 jira.pentaho.com/browse/MONDRIAN-264。但是使用您的想法,这适用于蒙德里安: SELECT [Measures].[SalesMonth] ON COLUMNS, [YearMonth.CalYearMonth].[CalYear].[2013] :[YearMonth.CalYearMonth].[CalYear].[2013].LastSibling 来自 [mt_report] 的行以上是关于mondrian mdx 过滤日期维度中年份级别的集合的主要内容,如果未能解决你的问题,请参考以下文章