MDX中tuple
和set
之间的区别是什么?我们如何区分这两者以及何时使用它们。
答案 0 :(得分:16)
从更多的数学角度来看MDX,这是我对这个问题的看法:
想象一下你的3D立方体的尺寸是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 Holmes
,Tom Sawyer
,CLR via C#
,Code Complete
和Quantum Physics for Dummies
。
之后,您可以将这些元组组织为命名集,例如Programming
,Fiction
和Natural 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的回答相似。