6.2、set、select、members、crossJoin

来源:互联网 发布:淘宝上好的古着店 编辑:程序博客网 时间:2024/05/16 11:29

Set【集合】

 

1          Set【集合】由tuple【元组】组成,是一个或多个元组的集合,由【大括号】括起,逗号分隔,如:

{

         (tupleA),

         (tupleB),

         ………

}

 

2          Set中每一个元组的成员都对应相同的层次结构,和相同的排列顺序,否则将出错,如:

         {        //正确

                   ([Date].[YearNum].&[2015], [Date].[Month Num Of Year].&[5]),

                   ([Date].[YearNum].&[2016], [Date].[Month Num Of Year].&[6])

         }

{        //错误,两个元组中成员顺序不一致

                   ([Date].[YearNum].&[2015], [Date].[Month Num Of Year].&[5]),

                   ([Date].[Month Num OfYear].&[6], [Date].[Year Num].&[2016])

         }

{        //错误,两个元组中层次结构不一致

                   ([Date].[YearNum].&[2015], [Date].[Month Num Of Year].&[5]),

                   ([Date].[YearNum].&[20156], [Date].[Day Num Of Month].&[6])

         }

 

3          使用distinct函数过滤重复的元组

Distinct({set})

         Set中允许重复的元组存在,通过distinct可以过滤掉集合中重复的元组

 

4          理解select

4.1         Select的目的是获取cube中一组tuple【元组】,也即set集合

4.2         Select实际上是定义了一个新的cube空间,而这空间内的点也就是返回的set集合

4.3         每一个set可以成为select的一个轴,select最多可有128个轴,但一般只用两个轴,例:

Select

      Seton 0,

      Seton 1,

      ………

From cube

 

5          Where条件

5.1         切片轴,当where中只有一条轴时,称为切片分析

5.2         切块轴,当where中有多条轴时,成为切块分析

 

6          Members函数的使用

6.1         获取【层次结构】或者【层级】下的所有成员,例:

[dimension].[hierarchy].members

[dimension].[hierarchy].[level].members

Select [date].[year].members on 0

From cube

6.2         在select语句中,members返回的成员默认的成为一个个的局部元组,局部元组自动补齐后成为完整元组,多个完整元组组成set,所以,select中members返回的相当于是一个set

 

7          CrossJoin函数

7.1         可以让一个集合中的所有【元组】与另一个集合中的所有【元组】形成一个交叉组合:corssJoin(set1, set2, set3, ……)

7.2         crossJoin可以使用*【星号】代替,以上可改为:set1*set2*set3

7.3         交叉举例

select         {                   [Date].[YearNum].&[2016],                   [Date].[Year Num].&[2015]         }*{                   [Date].[Month Num OfYear].&[5],                   [Date].[Month Num OfYear].&[6]         }on 0from         [Park]

等同于如下:

select         {                   ([Date].[YearNum].&[2016], [Date].[Month Num Of Year].&[5]),                   ([Date].[YearNum].&[2016], [Date].[Month Num Of Year].&[6]),                   ([Date].[YearNum].&[2015], [Date].[Month Num Of Year].&[5]),                   ([Date].[YearNum].&[2015], [Date].[Month Num Of Year].&[6])                           }on 0from         [Park]

 

 

0 0