6.10、提取【extract】、与聚合【sum、aggregate、avg】

提取【extract】、与聚合【sum、aggregate、avg】

1Extract(set,hierarchy[,hierarchy])

从set中抽取轴(层次结构)形成新的局部元组

select
         [Measures].[In Count] on 0,//([Date].[Year Num].&[2016],[Date].[Month Num Of Year].members)
         extract(
                   ([Date].[YearNum].&[2016],[Date].[Month Num Of Year].members),[Date].[Year Num]
         )
          on 1
from
         [Park]
         注意,抽取后的新元组与被抽取的元组没有限制关系,以上的抽取等于如下:
select
         [Measures].[In Count] on 0,[Date].[Year Num].&[2016] on 1
from
         [Park]

2Sum(set [,expression])

汇总集合中每个元组的度量值,如下

with
member[Date].[Year Num].[total] as
         sum(
                   [Date].[Year Num].members
         )
 
select
         [Measures].[In Count] on 0,(
                   [Date].[Year Num].allmembers
         )on 1
from
         [Park]

计算[Date].[Year Num]层次结构下,所有的成员的构成的元组的度量值的和。

3Aggregate(set [,expression])

与sum类型,但是度量值中如果使用了distinct、max、min等时,sum会出错,因为sum只汇总每个元组的度量值,但是aggregate会根据具体的情况来汇总,所以正常情况下一直使用aggregate会更好,用法同sum一样

4Avg(set [,expression])

计算set内所有元组的度量值的平均值,如下

with
member[Date].[Year Num].[avg] as
         avg(
                   [Date].[Year Num].members
         )
 
select
         [Measures].[In Count] on 0,(
                   [Date].[Year Num].allmembers
         )on 1
from
         [Park]

5Existing与聚合函数

Exising可以引入上下文,例:

with
member [avg] as
         avg(
                   [Date].[Year Num].[YearNum].members,[Measures].[In Count]
         )
member[avg-existing] as
         avg(
                   existing
                   [Date].[Year Num].[YearNum].members,[Measures].[In Count]
         )
 
select
         {
                   [Measures].[In Count],[avg],[avg-existing]
         }on 0,(
                   [Date].[YearNum].&[2014]:[Date].[Year Num].&[2017]
         )on 1
from
         [Park] 

Existing关键字会引入上下文,也就是select中的条件与关系来进行技术,如果没有existing的话,计算成员是独立的完成度量值的计算的。

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...