使用 olap4j Api 获取 Mdx 中维度的根级别

Posted

技术标签:

【中文标题】使用 olap4j Api 获取 Mdx 中维度的根级别【英文标题】:Get the root level of dimension in Mdx using olap4j Api 【发布时间】:2012-07-16 12:23:09 【问题描述】:

我有一个问题真的要死我了。顺便说一句,我是 Mdx 的新手,并且使用 olap4j Api 来构建 MDX 查询。我的问题是根元素,以下是代码 sn-p:

     Query myQuery = new Query("Generated Query", sales); // where sales is an object of type cube.
QueryDimension productDimension = myQuery.getDimension("Product");

所以现在我有一个具有 Product 维度的对象可以使用。当我将 productDimension 添加到轴时,我希望像 [Product].[All Products] 这样的东西成为 MdxQuery 的一部分。我可以对[All Products] 进行硬编码,但如果传递的维度名称不是产品,比如商店,这将是一个问题。所以我想要的是,是否可以使用 olap4j 动态获取一些名称,例如 [All Products] 或 [All Stores] 或 [definedmeasures] 相当于 [Allmeasures]?

PS:这是一种方法,它接受维度名称并返回维度的第一个成员,如 [Product].[All Products] 如果产品通过或 [Measures].[AllMeasure/someMeasure] 如果测量通过了。

【问题讨论】:

【参考方案1】:

我能够弄清楚如何获取根元素要获取诸如所有产品或基本上所有成员名称之类的东西,那么我需要做一些如下所示的事情:

说,我想要productDimension[产品维度类型的对象]的所有成员名称,

   Member allMember = productDimension.getDimension().getDefaultHierarchy().getRootMembers().get(0);

   productDimension.include(Selection.Operator.MEMBER, allMember);

这样做 allMember 将成为 Mdx 查询的一部分。

【讨论】:

以上是关于使用 olap4j Api 获取 Mdx 中维度的根级别的主要内容,如果未能解决你的问题,请参考以下文章

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

Mondrian MDX 中的最后日期和时间

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

MDX 查询:如果与其他维度无关,如何在查询结果中显示虚拟集?

如何使用 MDX 获取不可见属性和用户定义的层次结构的名称?

如何在 MDX 中基于维度属性定义计算度量?