【问题标题】:mondrian mdx filter a set on year level in a date dimensionmondrian mdx 过滤日期维度中年份级别的集合
【发布时间】: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')

【问题讨论】:

    标签: mdx mondrian


    【解决方案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] 的行
    猜你喜欢
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多