例子
就以下面这个航班项目为例,分别进行切片、切块、钻取、旋转、移动和与移动平均值的计算
(图中有个错误,事实表没有主键的标识,是我一开始忘了设置组合键)
一、切片(Slice)
切片如下图所示:
1、点它,在excel中进行分析(因为在SSAS的浏览器中,它仅显示单维数据,excel可以显示多维数据)
2、拖拽“到达城市”到“行”(这里根据你的需求拖你的属性),左边出现城市的列
3、拖拽“航空公司”到“列”
4、拖拽“...计数”到“值”
5、拖拽“飞行日期”到“筛选”
6、筛选一个时间,即完成切片
7、(可忽略)如果在在SSAS浏览器中做,是这样的
二、切块
1、参考切片,切块是选择更多的时间
2、在SSAS浏览器中的体现如下
三、下钻
我的理解是,在excel里面设置多个行。也就是让它有多层的结构可以展开,展开的过程就是细化的过程,下钻大概是这个意思。
这里我的时间维表没有设置好,如果把时间维设置成分开的年月日,则“行”里面就是“年”、“月”、“日”
四、上卷
上卷是相对于下钻的,下钻是添加多行,那么上卷就是删掉一行或多行。这样就是泛化的过程,不想下钻能看到更多的细节。
五、旋转
就是把行列互换
六、移动和
上面5个操作,我们看到的都是某一时间点的状态,现在我们想看到表在不同时间点的变化趋势,就要用到移动和。这是要写MDX代码的。所以我们从“浏览器”切换到“计算”,在右边灰色的方框内写代码。
教材上已经有了示例,这里我改了一下分析的行和值。
CALCULATE;
CREATE MEMBER CURRENTCUBE.[MEASURES].[sum of three days]
AS sum(
[Time Dim].[Filght Date].currentMember.Lag(2):
[Time Dim].[Filght Date].currentMember,
[Measures].[Frequent-flyer Flight Segment Fact Table 计数]
),
FORMAT_STRING="CURRENCY",
NON_EMPTY_BEHAVIOR={[Measures].[Frequent-flyer Flight Segment Fact Table 计数]},VISIBLE=1
这个代码的意思:
第一句是固定的,不管。
第二句是创建一个成员,也可以说是一列属性,它叫sum of three days(也就是移动和)。
第三句到第六句,我们抽象成这样:sum(A:B,C),其中A是 [Time Dim].[Filght Date].CurrentMember.Lag(2) ,B是 [Time Dim].[Filght Date].CurrentMember,这就代表 A是B的前两行,Lag(2)方法就是获取前两行的意思。A和B之间的冒号就是代表从A到B的意思,求和的列是C(也就是[Measures].[Frequent-flyer Flight Segment Fact Table 计数] )。所以,sum(A,B,C)代表着求从当前行到前一行关于列 [Frequent-flyer Flight Segment Fact Table 计数](乘车人次)的和。
后面两句不是很懂,但是并不影响程序执行。
运行过程是这样的:
把代码放进去,注意结尾不能有分号,不然报错。然后保存。右键项目部署,成功后直接打开excel。
excel里面多了“数值”这一项,行的选择必须是代码中设置的日期。这样就有移动和了。
七、移动平均
移动平均只用把sum改成avg
CALCULATE;
CREATE MEMBER CURRENTCUBE.[MEASURES].[sum of three days]
AS avg(
[Time Dim].[Filght Date].currentMember.Lag(2):
[Time Dim].[Filght Date].currentMember,
[Measures].[Frequent-flyer Flight Segment Fact Table 计数]
),
FORMAT_STRING="CURRENCY",
NON_EMPTY_BEHAVIOR={[Measures].[Frequent-flyer Flight Segment Fact Table 计数]},VISIBLE=1
其他操作如六所示。