元组:
可以直接理解为元素,或者可以理解为EXCEL中的单元格,而这个单元格一般来讲是两个或者两个以上的维度crosstab出来的。
例如
select [Measures].[Dollar Sales] on 0 from sales where ([Time].[2004],[Product].[Tools])
就是统计2004年Tools产品类的数据。
个人理解的流程是,先把2004年Tools产品类的数据拿出来,配上各种维度(但是不含Time和Product维度了)。
相当于是提取了整个多维数据的一个子集出来进行统计,而这个子集也是一个多维数据。个人理解这个就是切片的概念。
Filter()
select filter( [Time].[Year].members, ([Time].[2004], [Measures].[Sales Count])>=10000 ) on 0, [Product].[Category].children on 1 from sales where [Measures].[Sales Count]
filter第二个参数是个布尔表达式,是(元组)>=value的形式,所以可以是由多个维度组合的元组。
从([Time].[2004], [Measures].[Sales Count])>=10000也可以更进一步加深理解元组的概念:元组实际上是有多个条件crosstab出来的一个单元格数值。
([Time].[2004], [Measures].[Sales Count])是04年全年的sales count
([Time].[Q1, 2004], [Measures].[Sales Count])是04年Q1的sales count
Order()
select [Time].[Year].members on 0, order( {[Product].[Category].Members}, ([Time].[2004], [Measures].[Sales Count]), DESC ) on 1 from sales where [Measures].[Sales Count]
Order()第二个参数实际上是一个元组,相当于给第一个参数所指定的集合中增加了一列用于排序的字段,而这个排序字段是用第二个参数指定的元组的公式计算出来的。