为什么在元组中设置的顺序很重要?

时间:2014-05-15 13:50:11

标签: ssas mdx olap olap-cube ssas-2008

我刚刚浏览了MDX文档。

我发现有一个条款有点棘手,而我没有清楚地理解它,如下所示

  
    

集合中元组的顺序很重要;它影响,例如,     轴维度中的嵌套顺序。第一个元组代表了     第一个或最外面的维度,第二个元组代表下一个     最外层维度,等等

  
     

{(时间。[下半场],Route.nonground.air),(Route.nonground.air,   时间。[下半场])}

另外,在元组中使用交叉连接是否可以?

(Time.[2nd half] * Route.nonground.air * Route.nonground.air * Time.[2nd half])

任何人都可以用一个简单的例子来详细阐述这个吗?

谢谢。

1 个答案:

答案 0 :(得分:5)

规范指的是集合中元组的顺序,而不是集合元组中层次结构的顺序(顺便说一下,集合的所有元组中的元组顺序必须相同,但这对此不关心规范的一部分)。

这很重要,因为数学集没有任何特定的顺序,i。即以数学方式设置

{a, b, c}

{b, a, c}

是平等的。

但是,由于MDX用于报告,报告中的显示顺序可能相关,因此MDX集始终具有特定顺序是很方便的。数学集和MDX集之间的另一个区别是MDX集可以有重复,而在数学意义上,一个元素包含或不包含在集合中,但从不包含多次。

如果将其与SQL进行比较,则SQL结果集按定义(如数学集)排序,但可能包含重复记录。但是,在某些情况下,您可以获取有序的SQL结果集,但必须通过显式ORDER BY子句请求它。有些SQL方言不允许使用ORDER BY e。 G。在子选择中,因为这些从不直接返回给最终用户。从技术上讲,仅在明确请求时保证结果集的某个顺序的优点是,优化程序可以更自由地构建有效的执行计划,而不是始终传递结果的特定顺序。