BI项目相关建议和说明
1,编写目的
根据自己这一个月来对数据仓库、.net、相关数据访问技术以及图表组件的学习,写的一个对bi项目建设的简单思路,在此抛砖引玉,希望bi项目能做的很完美。
2,系统预计牵涉到的相关技术。
开发环境:sql server 2000+asp.net。
其他主要相关技术:
Mdx:多维数据集查询语言。
Adomd:olap数据源的编程接口。
Owc:office10的数据透视组件。
Reporting service:微软的报表组件。可以生成各式报表,相对与水晶报表相比,可以得到比较完整的中文开发文档。
DSO:用于决策分析和olap数据库管理的编程接口(暂时还没做相关测试,不知以后是否会有决策分析)。
3,系统的主要构架:
说明:
l cs通过adomd取得共享维的相关数据准备查询条件,并按选择的条件生成mdx语句。
l ReportViewer访问定制的reporting service报表。
l 3,owc的数据透视组件通过webservice来取得olap数据库的数据。这样确保数据的安全。当然这里也可以把他放在.cs中。
4,建议用来做统计打印的报表可以通过reporting service来做,而用来做透视分析的则用owc来做。
4,系统目录结构(如图)
如图所示analysis为系统主目录,对每个olap数据库(如Animal)在主目录下建立一个子目录,然后每个olap数据库下可针对自己的报表做自己的分类,主要公用文件说明:
l Web.config:系统配置文件,olap数据库连接的配置放于此文件中。
l Fram.htm:系统主页面
l Left.htm:为左面菜单
l Right.htm:为右面默认页
l Top.aspx:为上面页,显示用户信息
l Logout.aspx:登出系统
l Checkright.aspx:验证用户权限,在每个报表中加入如下代码验证用户权限:
MDX基础介绍
SELECT 语句的语法
以下语法显示了一个包括 SELECT、FROM 和 WHERE 子句的基本 SELECT 语句用法:
[ WITH ]
SELECT
<set > on rows,
<set > on columns
FROM <cube>
where ([])
一个简单的SELECT 语句示例,此查询将返回2005年十月份世界各地的活跃用户情况。
select {[Measures].members} on columns,
{[地域].[所有 地域].children} on rows
from [活跃用户分析]
where ([时间].[所有 时间].[2005].[Quarter 4].[10])
在此示例中,查询定义了以下单元集信息:
* SELECT 子句将查询轴设置为 Measures 维度的 所有度量值,以及 地域 纬度的所有一级成员。
* FROM 子句指明数据源为 [活跃用户分析] 多维数据集。
* WHERE 子句将切片器轴定义为 [时间] 维度的 10月。
请注意,此查询示例还使用了 COLUMNS 和 ROWS 轴别名。也可以使用这些轴的序号位置。以下示例显示了如何编写 MDX 查询以使用每个轴的序号位置:
select {[Measures].members} on 0,
{[地域].[所有 地域].children} on 1
from [活跃用户分析]
where ([时间].[所有 时间].[2005].[Quarter 4].[10])
sql server 2000带的mdx示例应用程序,可以方便的来写mdx以及测试。
ADOMD数据库结构视图
该视图显示了对象和集合的层次体系。
说明:
Catalog对象定义了用户连接的服务器和数据库的标识符,用以建立与olap服务的连接。比如在Animal中,Catalog就代表Animal数据库。
CubeRef定义了单个多维数据集,CubeRefs集合包含了Catalog中的所有CubeRef对象,也就是数据库中的所有立方。
Dimension代表多维数据集的维度,任何多维数据集中的维度都保存在Dimension集合中。
Hierarchy对象定义了维度中的层次体系。维度中的所有层次体系列表都保存在Dimension集合中。
Level对象提供了层次体系中的级别信息。Levels集合保存了它的父对象hierarchy中的所有级别。
Member即level对象的成员属性。Members保存levels下面的所有属性。
在试用ADOMD之前需安装ADOMD.相关下载:
添加对Microsoft.AnalysisServices.AdomdClient.dll的引用;
安装了Adomd.net SDK后,该dll文件位于x::\Program Files\Microsoft.NET\Adomd.NET\80目录下(x为盘符)。
添加对Microsoft ActiveX Data Objects(Multi-dimensional) Library的引用。
using Microsoft.AnalysisServices.AdomdClient;
这样就可以进行adomd的编程了。
下面是一个简单的Adomd的示例:
Owc组件和Reporting service
这两个在这里就只简要提以下:
对于OWC可以参见上的一些例子。OWC本身支持查询OLAP数据库,但在我们的BI系统中我想它的数据来源主要是WEBSERVICE传过来的XMLSring,剩下的主要是在页面中设置OWC的参数,当然对现在来说设置OWC的参数有时有些困难。
关于怎样来使用OLAP,参见:
Reporting service 我在本机写过一些例子,但以前哪个的立方给删掉了,现在无法运行,在开发时我会写一些例子来共享。它连接 OLAP 数据库用的是 OLE 的方式连接。
俯:
http://www.dwway.com/vbbs/index.php? 论坛上有许多不错的帖子,值得一看。