上篇文章主要介绍了BI的一些概念,主要是原始库、数据仓库数据库、维度表、事实表和相关的导入工作。数据导入之后,就是分析、统计和挖掘,这是这些底层的工作全部是由微软的Analysis Service帮我们做好了,我们学会如何使用,便能做到“看起来很厉害的样子”了。
打开SQLSERVER Data Tools,就可以新建Analysis项目。如图1:
主要分为Data Sources,Data Source Views,Cubes,Dimensions,Mining Structures等。
Data Sources 主要是数据库源,也就是我使用了哪些数据库作为仓库数据库。我连接的事DemoDB。
Data Source Views 是从数据源里,使用了哪些表。我这个库中也没什么表,把三个表全部导入。如图2:
Cubes:是数据立方体。何为数据立方体?这主要是和维度的概念一起理解,我们现实是分三维,x,y,z三个坐标决定的空间。而数据库,可能会包含很多维度,只是在我们的认知中无法想像超越三维的事物,这只是个概念。可见,Cube是依赖于维度的。所以在我们建立Cube的时候,需要理解下面的Dimension是什么。
Dimensions:Cube的维度,每个Cube依赖哪些维度来做统计,就需要在这里建。虽然在创建立方的时候会自动帮我们创建维度,但是有时候他创建的维度并不能达到我们的目的。所以,我们先建Dimension,再建Cube。
Mining structures:数据挖掘用的东西,咱这里就不说了,因为我还没用过,只是看了下Webcast的视频,里面介绍了集成了大量的现有挖掘算法,很方便的可以做出相应的分析趋势。 还是看似厉啊。
创建Dimension
那现在就创建一个时间维度,为我们的UserActionCube做准备工作。
右键点击Dimensions->New Dimension -> Use an existing table ->Main table(DimDate)->Available attributes(全选,因为我们年月日都作为统计条件),结束。这个维度是初步建好了。
现在可以看到DimDate的编辑界面,如图
左侧为属性,中间是层次结构,右侧是表。
因为我们的统计需求可能会对 月份、年份做统计,所以如果统计某个月,则需要把所有当月的天数的事实做统计,这如果写程序来统计会很慢很复杂,而维度却有层级的概念,所以我们可以在中间一栏建立一个层次关系,这样系统就可以帮我们做好层次的统计。
建立层次结果如图:
但是上面有感叹号,鼠标移上去发现说是属性之间并不存在这种关系。所以我们还要修改Attribute的Relationships(在上面一幅图的红色圈中的选项卡界面里)。如图:
现在默认的关系是平级的,他们没有层级关系,所以我们要按照年月日建立好关系。
调整为这样黄色的感叹号就不存在了。ID属性Day,Day属于Month,Month属于Year。操作方法:先删除现有的线条,然后右键点击一个项,创建新关系。
现在你可以Processing DimDate (处理维度),然后点击browser看看最终得到的数据,我的如下图:
现在维度已经创建好了,那么我就创建一个Cube。
只需要选择事实表即可,相关的维度是蓝色的。在创建过程中,我们可以选择已经创建好的DimDate维度,也可以让系统帮我们自动创建DimAction维度,因为这个维度不需要我们特熟处理。
在Processing FactUserAction Cube之前,别忘了先处Processing DimAction,假如你也有的话。然后就可以Browser这个Cube的具体报表了。我这边出现了异常,所以就不贴图了,贴一个其他机器上Cube的图让大家看看。
可以看到左侧的提示都是直接拖拽事实表的字段为统计,维度表的字段为属性。生成一个报表,还算不错,呵呵。不过这种拖拽也只能我们自己看,要想让运维和产品人员看,就不能让他们拖拽了,而是我们要开发一套报表展现系统,把Cube里的数据查询出来。这个下一节再说吧。
【PS】如果有动手做的朋友碰到问题或者有疑惑可以在评论里给我留言,或加QQ群,在页面的左上角。我们共同探讨。谢谢。