昨天我制作了我的第一个立方体。我还是新手,所以请原谅任何滥用术语的行为。我的其中一个维度,我们称之为MyDimension1
有一个层次结构,我们称之为MyHierarchy
,有两个级别,我们称之为Level1
和Level2
。
我似乎可以做类似的事情:
SELECT
{ [Measures].[Whatever] } ON 0,
{ ([MyDimension1].[Level1].[Level1], [MyDimension1].[Level2].[Level2]) } ON 1
FROM MyCube
这给了我想要的结果。如果我理解正确,设置定义轴1包含一个带有两个组件(?)的元组。我已经读过元组的每个组件(?)应该来自不同的维度,但我似乎能够指定相同维度的组件,如上面的查询所示。我希望能够只按名称指定层次结构,然后让服务器为我创建元组。如下所示:
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中):
Original
--------- -- --------
CustomerA 15 306.03
CustomerA 16 754.20
...
CustomerB 17 524.43
...
CustomerC 22 760.42
...
当我展开维度时,它看起来像:
- Customer
- Hierarchy
+ Members
+ Customer
+ Account ID
当我做某事时(我想在语法上做类似的事情):
SELECT [Measures].[Original] ON 0,
([Customer].[Hierarchy].Members) ON 1
我得到以下结果:
Original
---------- --------
All 17638.15
CustomerA 2624.76
15
16
...
CustomerB 3113.67
17 524.43
...
CustomerC 3427.01
22 760.42
...
我希望基本上有3列,而不是2列。
答案 0 :(得分:3)
您可能需要阅读此MDX gentle introduction。
我已经读过元组的每个组件(?)都应该来自a 不同的维度
来自不同的层次结构。在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
答案 1 :(得分:1)
是的,你可以从不同的维度创建一个元组,你可以通过在括号之间放置成员并用逗号分隔来实现。
但在这种情况下,你不需要一个元组,只需要一个集合。集合包含来自单个维度的成员,以逗号分隔并放置在大括号之间:{}。
查看descendants功能。您可以使用此功能从层次结构中创建一个集合。