MDX组合层次结构

时间:2014-02-05 09:49:44

标签: mdx hierarchy cross-join

我正在尝试组合来自单个层次结构的多个成员,但这会导致以下错误:

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

3 个答案:

答案 0 :(得分:1)

我通常会在日期维度中创建多个层次结构,例如日历,财务和其他仅包含财务年度,日历年度,季度等的层次结构。

如果您有另一个包含月份的层次结构,则可以与当前使用的层次结构年份交叉连接;那么你不会在交叉连接函数中两次使用相同的层次结构。

E.g。

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

答案 1 :(得分:1)

如果要跳过用户层次结构中的某些级别,最好是CrossJoin其余级别的相应属性层次结构。

这里我使用属性层次结构([地理]。[城市]。[城市],..)而不是用户层次([地理]。[地理]。[城市],..)形成AW立方体:

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

菲利普,

答案 2 :(得分:0)

此问题与尝试使用交叉连接从同一层次结构中提取多个级别有关,实际上您不能。正如其他回复中所提到的,一个好的方法是从同一层次结构以外的位置拉出所需的列。但这只有在立方体设计允许的情况下才有效。

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

例如,在SQL Server Management Studio(V12.0.2000.8版本)中执行时,以下查询仅返回层次结构的City级别。但是,当在PowerPivot表导入向导中从设计模式执行时,它会将层次结构中的所有级别返回到城市级别,包括Country,State-Province和City。

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