2014-02-05 125 views
1

我想多个成员从一个单一的层次结构相结合,尽管这会导致以下错误:MDX结合层次

Query (11, 3) The Jr-Kw-Mnd-Dag hierarchy is used more than once in the Crossjoin function. 

这是查询的基本版本我使用:

SELECT 
    NON EMPTY { 
     [Measures].[Amount] 
    } ON COLUMNS 
    , NON EMPTY { 
     [Realisatiedatum].[Jr-Kw-Mnd-Dag].[Jaar] 
     * [Realisatiedatum].[Jr-Kw-Mnd-Dag].[Maand]) 
    } ON ROWS 

FROM 
    [Cube] 

Jaar等于一年的英文,Maand等于一个月的英语。这就是我要完成的:

... 
november 2013 
december 2013 
januari 2014 
februari 2014 
... 

最后但并非最不重要的,层次结构:

enter image description here

回答

1

我通常会创建日期维度中的多个层级,如日历,金融和其他人仅包含财政年度,历年,宿舍等

如果您有包含月份另一个层次,你可以与你正在使用的那一刻层级的一年CROSSJOIN;那么在crossjoin函数中将不会使用相同的层次结构两次。

E.g.

, NON EMPTY { 
    ([Date Dimension].[Financial].[Financial Year] 
    * [Date Dimension].[Calendar].[Month]) } 
+0

谢谢Danny,幸运的是我有另一个Hierarchy可用。有没有其他的方式来组合这些成员从相同的层次结构? – Aquillo

+0

不幸的是,我不认为有Aquillo。 –

1

如果你想跳过用户层次中的水平,最好是crossjoint其余级别的相应属性的层次结构。

此处我使用属性层次结构([Geography]。[City]。[City],..)来代替用户层次结构([Geography]。[Geography]。[City],..)立方体:

SELECT 
[Measures].[Internet Sales Amount] ON 0, 
[Geography].[State-Province].[State-Province] * [Geography].[City].[City] ON 1 

FROM [Adventure Works公司]

菲利普,

0

这个问题涉及到试图拉使用交叉连接同一层级多层次,你的确不能。正如其他答复中提到的那样,一个很好的解决方法是从相同的层次结构中抽取所需的列。但是,只有立方体设计允许它才有效。

您的具体问题可能与您用于开发查询的工具以及它返回的层次结构中的哪个级别有关。

例如,以下在SQL Server Management Studio中执行的查询(通过版本V12.0.2000.8)只返回城市级别的层次结构。但是,如果从PowerPivot表导入向导中的设计模式内执行,它将返回层次结构中的所有级别,直至包括国家/地区,州/省和城市在内的城市级别。

select 
[Measures].[Internet Order Count] on columns, 
non empty [Customer].[Customer Geography].[City] on rows 
from [Adventure Works]