再使用Businees Intelligence Development Studio分析Case Analysis 时遇到了一个比较复杂的显示报表。 这样使用原有Cubes 就不能实现这个复杂的报表了。于是只能另辟蹊径了。
分析该报表得出一个结论,这张报表可以由两个原有的cubes组成,Work Item Processing Time 和Work Load。于是乎找这两个Cubes的table。把这两个报表组成一个视图。当然组成视图需要在SQL Server数据库中组成。view成功的组成了,查看一下数据,Ok ,该报表需要的数据都在这个视图里面。
视图虽然搞定了,但是离成功还有真的一大步,创建一个Cubes,在创建Cubes的时候需要用到一个时间维度(dimension)原来两个cubes的时间维度都创建好了,于是乎打算借用一下。借用完成以后,展现数据发现数据不正确,经过多次观察,发现只是一部分不正确,使用Work Item Processing Time 的Time dimension 关于这一部分的就正确,使用Work Load 的Time Dimension关于Work Load 部分的数据就正确。 天啊~~,这怎么办,尝试了N次以后 发现还是那样,于是准备开始第N+1次,而这次我使用自己创建的Time Dimension。
关于Time的Dimension创建,不是我想象的那么容易,首先他们存在这一个关系
这个关系如何搞啊?头痛没有搞过。不过Work Item Processing Time 和Work Load 都有Time Dimension 于是来个仿造的吧"made in China".
时间维度自然与时间有关系,包括Year,Quarter,Month,Day,Hour,Minute这些时间数据,我们在数据库中保存的时候不可能把这些拆开保存,只会保存成2012-08-09 12:32:09这样的形式,这与我们想要的还有差距,所以我们要把2012-08-09 12:32:09 计算成我们需要的形式。
找到对应的View创建Calculation
按照上图所示办法创建如下Dimension
Time_Quarter_key DatePart(quarter,"TimeInterval")
Time_Quarter 'Quarter ' + convert(CHAR, DatePart(quarter,"TimeInterval"))
Time_Month_key DatePart(month,"TimeInterval")
Time_Month convert(CHAR, DateName(month,"TimeInterval"))
Time_Day_key DatePart(day,"TimeInterval")
Time_Day convert(CHAR, DateName(day,"TimeInterval"))
Time_Hour_key DatePart(hour,"TimeInterval")
Time_Hour convert(CHAR, DateName(hour,"TimeInterval"))
Time_Minute convert(CHAR, DateName(minute,"TimeInterval"))
最后结果是这样子滴:
在Businees Intelligence Development Studio 中 创建New Dimension
弹出页面选择Next,然后选择新建的视图EX_DMWorkLoad
修改为
修改所有与时间有关的属性名称:
结果如下图
最后点击Finish。
时间维度就这样完成了吗?那就太简单了,还有很多呢……
选择新建好的Dimensions
修改属性day
选择KeyColumns
点击OK
包括Year,Month的属性,按照原有的时间维度修改,此处不再一一贴出来了。
都修改完成以后还需要修改Dimension的属性
设置完成以后还需要在Attribute RelationShips中看一下它们之间的RelationShip ,
如果不能设计成这样的Relationship 不要着急,看看那两个不能设计关系的Attribute 属性是否正确哈。
属于自己的Dimension设计完成了,然后在添加到相应的Cubes上最后晒一下结果吧。
这些都是在Businees Intelligence Development Studio创建的,如果展现给客户还要导出到excel中。当初创建Dimension费了很长的时间,幸好出来数据了,回顾一下,努力没有白费!