mdx中元组和集之间的区别

时间:2012-03-01 14:00:36

标签: sql ssas mdx

MDX中tupleset之间的区别是什么?我们如何区分这两者以及何时使用它们。

4 个答案:

答案 0 :(得分:16)

从更多的数学角度来看MDX,这是我对这个问题的看法:

想象一下你的3D立方体的尺寸是X,Y和Z。立方体中的单元格数是X中的成员数乘以Y的成员数乘以成员数Z.

每个单元格在立方体中都有一个基于X,Y和Z值的坐标。该坐标是一个元组

所以我们说:

  • X是措施
  • Y
  • Z 产品

然后单个单元格可能是1999年的笔记本电脑销售。单元格坐标将是: 逻辑上(X, Y, Z),物理上这是一个元组,如

(Measures.Sales, Years.[1999], Products.[Laptop])  

现在假设我们想要多个单元格,那么我们需要多个元组,对吗?是的,一个Set基本上是多个元组。实际上,通过多个我包括0和1.因此扩展我们的例子,我们可以拥有1999年的笔记本电脑和2001年的台式机:

{ 
    (Measures.Sales, Years.[1999], Products.[Laptop]) ,
    (Measures.Sales, Years.[2001], Products.[Desktop]) 
}

所以你可以看到你最终得到了一个带有一个集合的多个项目,以及一个带有元组的单个项目......

答案 1 :(得分:13)

元组是从所有维度中获取的单个层次结构成员。 假设Time.[2nd half]是时间维度的元组。同样,我们可以有多个元组,我们用'(',')'括号表示它们。 例如:

(Time.[2nd half], Color.Dark.Red).

这只是节点的数学交集。我们可以将数学中的节点表示为(2,1),就像上面的表达式一样。

现在开始设置它只不过是元组的组成。 set包含一个或多个元组,它也可能为零。我们用{,}括号代表它们。 例如:

{ (Time.[1st half], Color.Dark.Red), (Time.[2nd half], Color.Dark.Blue) }

答案 2 :(得分:5)

This article详细介绍了会员元组 Set 这两个词。

我会尝试以简单的方式解释它。

简单地说,元组是维度中的原子数据片段,集合是元组的集合。例如,您可以拥有Books维度,其中包含元组Sherlock HolmesTom SawyerCLR via C#Code CompleteQuantum Physics for Dummies
之后,您可以将这些元组组织为命名集,例如ProgrammingFictionNatural Sciences

[Books].&[Sherlock Holmes]                          -- Tuple
[Books].&[CLR via C#]                               -- Tuple
{ [Books].&[CLR via C#], [Books].&[Code Complete] } -- Set

MDX中有某些functions返回集合或元组,知道如何将元组转换为集合通常很有帮助,反之亦然。例如,Item(...)函数从集合中获取特定元组。在{ , , }中包含多个元组将创建一个包含这些元组的集合。

我所描述的例子非常局部,并未涵盖整个理论,但它可能会让您对这些概念如何运作有一个很好的基本理解。

答案 3 :(得分:2)

以下是另一个很好的解释:http://www.onlineexpert.com/elearning/user/pdf/APPLICATIONDEVELOPMENT/SQL2KOLAP/Ch08.pdf

这与Preet Sangha的回答相似。