使用 Mondrian 在 MDX 查询中获取每个轴的级别

Posted

技术标签:

【中文标题】使用 Mondrian 在 MDX 查询中获取每个轴的级别【英文标题】:Get Level in MDX Query for each axis with Mondrian 【发布时间】:2013-03-31 07:18:57 【问题描述】:

使用 Mondrian,我想在 MDX 查询中为每个轴获取 Level。

例如:

在列上选择非空 Hierarchize([Product].[Product Family].Members)

NON EMPTY CrossJoin([Time].[Quarter].Members, [Store].[Store Name].Members) ON ROWS

来自 [销售]

WHERE Hierarchize([Measures].[Unit Sales])

预期结果是:

列:[产品].[产品系列]

ROWS : [时间].[季度], [商店].[商店名称]

最近我使用了这个代码:

axes[i].getSet().getType().getLevel()

它适用于 COLUMNS 轴,但不适用于 ROWS 轴。 我想这是由 ROWS 轴中的 arity 超过 1 引起的。

有没有什么方法可以在一个轴上获得超过 1 的水平?

谢谢。

【问题讨论】:

【参考方案1】:

这个怎么样:

with
member [Product].[Product Family].[Row current member] as
[Time].[Quarter].currentmember.name + ', ' +
[Store].[Store Name].currentmember.name

然后在 select 子句中包含列轴中的成员:

SELECT NON EMPTY Hierarchize([Product].[Product Family].Members,
                 [Product].[Product Family].[Row current member]) ON COLUMNS

NON EMPTY CrossJoin([Time].[Quarter].Members, [Store].[Store Name].Members) ON ROWS

FROM [Sales]

WHERE Hierarchize([Measures].[Unit Sales])

【讨论】:

感谢您的回复!无论如何,查询已经给出,所以我不应该修改它。我只需要提取每个轴中每个元素的级别信息。

以上是关于使用 Mondrian 在 MDX 查询中获取每个轴的级别的主要内容,如果未能解决你的问题,请参考以下文章

Mondrian MDX 中的最后日期和时间

mondrian mdx 过滤日期维度中年份级别的集合

聚合最后一个值和聚合总和 mdx mondrian

如何在 Mondrian OLAP 中使用 DRILLTHROUGH?

如何在 mdx 查询中更改列或行的名称

添加 where 条件使 MDX 查询变慢(olap4j)