选择层次结构中的所有级别作为MDX中的元组

选择层次结构中的所有级别作为MDX中的元组,mdx,Mdx,我昨天做了第一个立方体。我对这个还是新手,所以请原谅任何误用术语的行为。我的一个维度,我们称之为MyDimension1有一个层次结构,我们称之为MyHierarchy,有两个层次,我们称之为Level1和Level2 我似乎能做一些事情,比如: SELECT { [Measures].[Whatever] } ON 0, { ([MyDimension1].[Level1].[Level1], [MyDimension1].[Level2].[Level2]) } ON 1 FROM MyC

我昨天做了第一个立方体。我对这个还是新手,所以请原谅任何误用术语的行为。我的一个维度,我们称之为
MyDimension1
有一个层次结构,我们称之为
MyHierarchy
,有两个层次,我们称之为
Level1
Level2

我似乎能做一些事情,比如:

SELECT 
{ [Measures].[Whatever] } ON 0,
{ ([MyDimension1].[Level1].[Level1], [MyDimension1].[Level2].[Level2]) } ON 1
FROM MyCube
SELECT 
{ [Measures].[Whatever] } ON 0,
{ AllLevelsToTuple([MyDimension1].[MyHierarchy]) } ON 1
FROM MyCube
这给了我想要的结果。如果我理解正确,定义轴1的集合包含一个包含两个组件(?)的元组。我已经读到元组的每个组件(?)应该来自不同的维度,但是我似乎能够指定相同维度的组件,如上面的查询所示。不过,我希望能够通过名称指定层次结构,然后让服务器为我创建元组。比如:

SELECT 
{ [Measures].[Whatever] } ON 0,
{ ([MyDimension1].[Level1].[Level1], [MyDimension1].[Level2].[Level2]) } ON 1
FROM MyCube
SELECT 
{ [Measures].[Whatever] } ON 0,
{ AllLevelsToTuple([MyDimension1].[MyHierarchy]) } ON 1
FROM MyCube
但我似乎不知道该怎么做。提前谢谢

编辑(我的示例,应回答者的要求):

这在功能上符合我的要求,但不是我想要的语法:

SELECT [Measures].[Original] ON 0,
([Customer].[Customer].[Customer], [Customer].[Account ID].[Account ID]) ON 1
结果(以SSMS为单位):

当我展开维度时,它看起来像:

- Customer
    - Hierarchy
        + Members
        + Customer
        + Account ID
当我做类似的事情时(我想做一些语法上类似的事情):

我得到以下结果:

            Original
----------  --------
All         17638.15
CustomerA    2624.76
15
16
...
CustomerB    3113.67
17            524.43
...
CustomerC    3427.01
22            760.42
...

基本上,我希望有3列,而不是2列。

是的,可以从不同维度创建元组,方法是将成员放在括号之间,并用逗号分隔

但在这种情况下,不需要元组,只需要一个集合。集合包含单个维度的成员,由逗号分隔,并放在大括号{}之间


看看这个函数。您可以使用此函数从层次结构创建一个集合。

是的,您可以从不同维度创建一个元组,方法是将成员放在括号之间并用逗号分隔

但在这种情况下,不需要元组,只需要一个集合。集合包含单个维度的成员,由逗号分隔,并放在大括号{}之间


看看这个函数。您可以使用此函数从层次结构创建一个集合。

您可能需要阅读此函数

我读过,元组的每个成分(?)都应该来自 不同维度

而是从不同的层次结构中。在AS中,我猜对于每个级别,都有相应的平面层次结构;因此,下面看起来您正在访问两个不同层次的级别:

{ ([MyDimension1].[Level1].[Level1], [MyDimension1].[Level2].[Level2]) } ON 1
我不是AS的专家,但我猜以下陈述:

SELECT [Measures].[Original] ON 0,
([Customer].[Customer].[Customer], [Customer].[Account ID].[Account ID]) ON 1
实际上被解释为来自2个不同层次结构的级别成员的交叉连接;更可能的情况是()表示法被解释为()运算符而不是元组表示法,然后{},{}是MDX中的交叉连接:

SELECT [Measures].[Original] ON 0,
[Customer].[Customer].[Customer].members * [Customer].[Account ID].[Account ID].members ON 1
因此,在结果中度量值前面的两列

我希望有3列,基本上不是2列

您需要使用计算的度量值;比如:

with 
MEMBER Measures.HN as [Customer].Currentmember.Hierarchy.Name 
MEMBER Measures.LN as [Customer].Currentmember.Level.Name 
MEMBER Measures.MN as [Customer].Currentmember.Name 

SELECT { Measures.HN, Measures.LN, Measures.MN, [Measures].[Original] } ON 0,
([Customer].[Hierarchy].Members) ON 1

你可能想看看这个

我读过,元组的每个成分(?)都应该来自 不同维度

而是从不同的层次结构中。在AS中,我猜对于每个级别,都有相应的平面层次结构;因此,下面看起来您正在访问两个不同层次的级别:

{ ([MyDimension1].[Level1].[Level1], [MyDimension1].[Level2].[Level2]) } ON 1
我不是AS的专家,但我猜以下陈述:

SELECT [Measures].[Original] ON 0,
([Customer].[Customer].[Customer], [Customer].[Account ID].[Account ID]) ON 1
实际上被解释为来自2个不同层次结构的级别成员的交叉连接;更可能的情况是()表示法被解释为()运算符而不是元组表示法,然后{},{}是MDX中的交叉连接:

SELECT [Measures].[Original] ON 0,
[Customer].[Customer].[Customer].members * [Customer].[Account ID].[Account ID].members ON 1
因此,在结果中度量值前面的两列

我希望有3列,基本上不是2列

您需要使用计算的度量值;比如:

with 
MEMBER Measures.HN as [Customer].Currentmember.Hierarchy.Name 
MEMBER Measures.LN as [Customer].Currentmember.Level.Name 
MEMBER Measures.MN as [Customer].Currentmember.Name 

SELECT { Measures.HN, Measures.LN, Measures.MN, [Measures].[Original] } ON 0,
([Customer].[Hierarchy].Members) ON 1

你能列出一些样本输出吗?当然,只是用了我正在做的事情的一个节略版本(当然是垃圾数据)。你能列出一些样本输出吗?当然,只是用了我正在做的事情的一个节略版本(当然是垃圾数据)。我需要一个元组,而不是一个集合,让结果看起来像我想要的那样,我相信。请参阅我的编辑以获得示例结果:)我需要一个元组,而不是一个集合,我相信,要让结果看起来像我想要的那样。有关示例结果,请参见我的编辑:)