我刚刚浏览了MDX文档。
我发现有一个条款有点棘手,而我没有清楚地理解它,如下所示
集合中元组的顺序很重要;它影响,例如, 轴维度中的嵌套顺序。第一个元组代表了 第一个或最外面的维度,第二个元组代表下一个 最外层维度,等等
{(时间。[下半场],Route.nonground.air),(Route.nonground.air, 时间。[下半场])}
另外,在元组中使用交叉连接是否可以?
(Time.[2nd half] * Route.nonground.air * Route.nonground.air * Time.[2nd half])
任何人都可以用一个简单的例子来详细阐述这个吗?
谢谢。
答案 0 :(得分:5)
规范指的是集合中元组的顺序,而不是集合元组中层次结构的顺序(顺便说一下,集合的所有元组中的元组顺序必须相同,但这对此不关心规范的一部分)。
这很重要,因为数学集没有任何特定的顺序,i。即以数学方式设置
{a, b, c}
和
{b, a, c}
是平等的。
但是,由于MDX用于报告,报告中的显示顺序可能相关,因此MDX集始终具有特定顺序是很方便的。数学集和MDX集之间的另一个区别是MDX集可以有重复,而在数学意义上,一个元素包含或不包含在集合中,但从不包含多次。
如果将其与SQL进行比较,则SQL结果集按定义(如数学集)排序,但可能包含重复记录。但是,在某些情况下,您可以获取有序的SQL结果集,但必须通过显式ORDER BY
子句请求它。有些SQL方言不允许使用ORDER BY e。 G。在子选择中,因为这些从不直接返回给最终用户。从技术上讲,仅在明确请求时保证结果集的某个顺序的优点是,优化程序可以更自由地构建有效的执行计划,而不是始终传递结果的特定顺序。