最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
开启左侧

SQL 2008 SSIS 处理时间维度

[复制链接]
发表于 2014-8-8 15:11:57 | 显示全部楼层 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 乔帮主 于 2014-8-8 15:44 编辑

1.介绍
这是介绍MS SQL Server 2000 Analysis Services系列的第三章。我已经在第一章中介绍了怎么建立我们第一个Cube,并且我们使用Cube Wizard和Dimension Wizard建立第一个初始Cube,包括建立了一个自然年时间维度。在这章节中我们将重新建立自然年时间维度,将关注Dimension Wizard将时间/日期列转换成时间维度,以及他的层次结构和对象。然后我们会建立财年时间维度。
在这章中,我们将:
•简单讨论一下时间维度数据的源
•重新建立我们在第一章中“自动”建立的自然年时间维度。
•检查Dimension Wizard建立时间维度过程中设计的时间维度属性。
•探究Dimension Wizard在通过时间/日期列建立分级层次的显示。
•修改维度属性让客户能够更加容易地使用报表
•定制时间维度层次满足业务需求。
•建立财年时间维度层次。
•探究同一个Cube中多个时间维度的使用。

在我多年的业务只能顾问工作中我碰到了数不清的OLAP Cubes不需要时间维度,但是我很赞同大多数专家和业务用户的观点,时间维度是典型OLAP数据库的固定组成部分。
在我的顾问生涯中,我已经看到了要求建立时间维度的时间/日期数据是从两种主要的数据仓库源得到:事实表和单独的时间维度表。这两种方法是依靠于整个数据仓库体系结构的建设定义的。在我们的例子中,我们将使用第二种方法,通过一个单独的表:time_by_day建立我们的自然年时间维度和财年时间维度。

2.通过Cube Wizard建立Cube
Cube Wizard将首先指导我们选择事实表,我们将按照以下步骤建立我们的Cube:
1.在MyCube2数据库中右击Cubes文件夹
2.在弹出菜单中选择New Cube.
3.点击Wizard,如下图所示。

1.jpg

Cube Wizard将会开始,我们可以看到欢迎界面,如图2所示
2.jpg
4.点击Next
MyFoodMart2数据源中表将全部列出来。
5.在左边Data Sources and Tables窗口选择sales_fact_1997.
右边的Detail窗口将显示出我们所选择的sales_fact_1997表所有的列。如下图所示。
3.jpg
6.点击Next.
7.如下面的需求,通过双击添加Measures.
•Unit_sales
•Store_cost
•Store_sales
所选择的measures列将会移动到Details窗口如下图所示:
4.jpg
8.点击Next.

3.建立和管理自然年时间维度
现在我们到达了建立维度过程,我们将开始探究自然年时间维度。Cube
Wizard现在知道我们选择维度为我们的Cube.这些维度还没有定义我们将先启动Dimension Wizard去开始这些维度的设计。
9.点击New Dimension按钮。
Dimension Wizard的欢迎界面将会显示,如下图所示
5.jpg
10.点击Next.
Dimension Wizard将提示我们将建立什么样的维度,如下图所示。
11.选择Star Schema: A Single Dimension Table,如下图:
6.jpg
12.点击Next.
我们被看到select the dimension table对话框。
13.在Available Tables窗口选择time_by_day表,让右边的Details窗口显示所有列,如图7。
7.jpg
14.点击Next.
在下一个对话框中,我们被提示去选择维度的类型(Type)。
15.在左边选择Time Dimension。
下拉框能够提供多于一个时间列让我们可以选择,当Wizard发现了维度表有多个时间列时。现在这个对话框如下图所示:

如我们在上面所看到的,Dimension Wizard提供两种常用的维度类型。时间维度是我们在Cube中表现时间的特殊维度。时间维度类型选项就不会出现在我们定义多表维度时,这是因为时间维度经常仅仅依赖于一列,所以排除了多表维度作为时间维度的可能。
16.不做任何改变,点击Next.
现在我们被提示选择我们新建立的时间维度的分级层次。Month层经常是大型组织OLAP报表的结构,现在让我们选择更加低层让我们看看Analysis Services对时间维度的处理和应用。
17.在下拉框中选择Year, Quarter, Month, Day(默认),让Year Starts On选择默认
18.点击Next.
19.在Advanced Option对话框中点击Next跳过这个对话框。Finish the Dimension Wizard对话框出现。
20.在Dimension Name中填入Time
21.选择Create a Hierarchy of a Dimension选项。(译者:为了在一个Cube中使用多个时间维度)
22.在Hierarchy Name中填入CalendarTime.
23.让Share this Dimension with Other Cubes选项保持默认。
完成对话框应该如下图所示:
11.jpg
24.可以点击“+”查看一下预览数据。
25.点击Finish
Dimension Wizard完成了我们新的自然年时间维度和CalendarTime层次。我们可以看见Dimension Wizard建立了一个叫Time.CalendarTime的维度如下图所示
12.jpg
名字Time.CalendarTime表示了新的维度名字为Time,层次名字为CalendarTime。
我们将通过下面步骤完成包含自然年时间维度的Cube。
26.点击Next。
一个信息框将显示,说明Fact Table Row Count将开始,告诉我们这个过程可能会花费一些时间,如下图所示。
我们将运行它,因为我们知道我们的表关联很小。
27.点击Yes开始统计过程
28.接着在Finish the Cube Wizard 对话框中用MyCube2填入到Cube Name中来命名新建的Cube,如下图所示:

29.点击Finish
向导消失了,Cube Editor如下图显示了:
13.jpg
30.在菜单中选择FileSave,保存我们建立的Cube.
31.关闭Cube Editor.
我在我的例子中没有和原著一样出现要求选择Design Storage 对话框。可能是因为我没用重新建立MyCube2 OLAP数据库。

现在让我们看看时间维度的一些在我们的新的维度和层次向导中的特殊属性。
32.右击在MyCube2下的Shared Dimensions文件夹下的Time.CalendarTime维度
33.在弹出菜单里选择Edit,如下图所示
14.jpg
34.在维度树中选择新的时间维度Time.CalendarTime.
35.打开在维度树下的Properties窗口。
36.选择Advanced标签。
我们将看到如下图的属性信息:

注意Type这个存在于时间维度是对应维度和一个维度层次的。它主要是有益于一些客户端的应用,尤其是对于某些MDX功能的默认值。它对Analysis Sever没有直接的影响。(想知道更加多关于此的信息请查阅在线帮住文档)。
37.点击All Caption属性
38.填入Calendar Time,如图16所示。
16.jpg
39.点击Enter.
40.点击Basic标签。
41.在维度树里点击Year层,在Basic属性标签中显示Year对象。
注意当我们通过Dimension Wizard自动地建立对象名字,这些名字将不会包含描述信息。Name属性将在我们显示报表的时候作为连接名出现,我们也能够重新命名它,使它更加让我们了解它所表示的意义。
虽然我们能够通过Name属性很容易地更改层次的名字,但是不能够通过它改变它所对应的对象。让我们看一下怎么可以改变它所对应的对象显示。(记住一个给定的Member Name Column属性默认是等于Member Key Column属性的)
42.按照下面的表改改变Time.CalendarTime每个层次的Member Name Column属性。使其更加容易让别人理解。

修改后,我们将应该看到如下图所示的信息:

修改Member Name Column属性对最终用户的理解有很大的好处。尤其像我们这种既有自然年时间维度又有财年时间维度的例子。
43.选择在菜单中FileSave,保存我们修改的信息。

4.建立和管理财年时间维度
在我们的工作中,我们经常碰到许多公司使用的不是自然年作为时间维度,而是使用财年作为时间维度。Dimension Wizard也能够建立这些财年时间维度和它的层次。
44.在Dimension Editor的菜单中选择File。
45.选择New Dimension。
46.如下图所示点击弹出菜单里的Wizard

47.在Dimension Wizard欢迎界面点击Next.
48.在下一个向导对话框中选择Star Schema: A Single Dimension Table
49.点击Next。
50.在Select Dimension Table对话框中再次选择time_by_day作为维度表。
51.点击Next.
52.在Select Dimension Type对话框再次选择Time Dimension.
53.在Date Column保留the_date。
54.再次点击Next。
55.在Create the Time Dimension Levels对话框再次保留Select Time Levels默认选项Year, Quarter, Month, Day。
56.在Year Starts On选择框中分别选择1和October。
57.点击Next.
58.再次点击Next,跳过Select Advanced Options对话框。
59.在Finish the Dimension Wizard对话框,再次把Time填入到Dimension Name框中。
60.点击Create a Hierarchy of a Dimension。
61.在Hierarchy Name框中填入FiscalTime.
完成对话框应该如下图所示:


62.可以点击“+”查看一下预览数据。
我们可以注意到以前我们看到两年,现在我们看到了三年。这是因为尽管我们从time_by_day维度表中得到的时间数据都是1997和1998年的,但是我们现在定义的时间超过了自然年的范围,添加了格外定义数据到1999财年中,例如October 1, 1998就应该算到1999财年中。
63.点击Finish。
我们再次来到 Dimension Editor,并且已经建立第二个时间维度――财年时间维度。
64.选择Time.FiscalTime维度,点击在维度树下面的Properties窗口的Advanced标签。
65.改变All Caption property属性值为Fiscal Time。
66.修改Type属性为Standard。
Time.FiscalTime维度属性应该如下图所示:

改变Type属性是让我们能够区分Time.CalendarTime和Time.FiscalTime层次在属性层次上的区别。
现在让我们改遍一下Time.FiscalTime层次对象的Member Name Column为了能够让用户更加了解。
67.按照下面的表改改变Time.FiscalTime每个层次的Member Name Column属性。使其更加容易让别人理解。

最终维度数据显示应该如图18所示差不多,有些数据在1999财年中显示,这是个唯一重要的不同点。
在图22中我们可以看到Fisc 1999, Fisc Q1 - 1999 and Fisc October-1999 groups。说明了财年的1999年10月相当于自然年的1998年10月。

68.在菜单里选择FileSave保存我们修改后的财年时间维度。
69.选择FileExit回到Analysis Manager控制台。
70.选择Analysis Manager菜单中的ConsoleExit关闭Analysis Services.





8.jpg
9.jpg
10.jpg
15.jpg
楼主热帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-3-28 16:49

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表