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 0
from
[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 0
from
[Park]