ADOMD.net将多维数据集的数据分做两个地方存放。一个叫做CellSet,另一个就是CubeDef了。
其中CellSet主要存放维度的成员以及度量值表,而CubeDef存放的则是多维数集的元数据,也就是比如集合名称、维度名称等等。
有些地方说CellSet有点类似DataSet,其实2者差的非常远。通常DataSet我们会通过数据适配器的Fill方法来填充,但CellSet不行,它必须通过连接类的执行方法成员来返回。不能直接实例化。
例如:
adomdconn.Open();
CellSet cs = AdomdCom.ExecuteCellSet();
adomdconn.Close();
CellSet的成员结构很复杂,就维度说,CellSet包括轴集合Axes,轴包括不同维度成员集合Positions、维度成员集合又包括级别成员集合members。CellSet还有一个度量数据的集合Cells。但如果对多维数据查询了解的话这些应该不难理解,他们在查询后分别会被填充不同的值。
CubeDef存放的是数据集的元数据,可以直接从连接对象的属性中提取。提取出来的是一个CubeDef集合。
adomdconn.Open();
CubeCollection Cubes = adomdconn.Cubes;
adomdconn.Close();
这个集合按理来说应该是对应同一个数据源上的多个数据集的,但实际上并非如此,即使你的数据源上只有1个数据集,他仍然会提出多个元数据集合,都是带有$标志的一些源数据表,其意义就不清楚。有代研究。
对于习惯了关系数据库,刚接触多维数据集的人来说,概念的对比是最容易糊涂的了。
2个简单的表。
主表Table1 ,从表Table2,他们之间为一对多的关系。
Table1的字段有2个,date1和keyid
Table2的字段为key,date2.
两表的连接依靠的是Table1.keyid = Table2.key
现在我们把他们转为多维数据集,看看结果变成如何。
Table1:事实表,date1的数据称之为度量值,keyid是作为和Table2连接的键。
Table2:维度表,key,date2都称呼为table2的属性。而他们所代表的数据的分类称之为成员。
事实表其实不是一张表,而是很很多张表的集合。每个维度表的属性都会在事实表中映射出一张表。
例如:Table1和2数据如下:
date1 keyid key date2
A a a m
B a b m
C b c n
D c
那么在多维度数据集中,事实表就还存在着这样两张表。
date1 key date1 date2
A+B a A+B+C m
C b D n
D c
第一张表是table2的key字段通过在table1中相同的数据直接映射出来的,所以key属性是table2维度表的第一层。
第二张表是table2的date2字段,不过这个字段的数据在table1并没有对应的数据,所以他是通过key字段才能在Table1中映射,所以date2属性是从属于key属性的第二层。这个就是维度表所谓的“层次结构”了。
成员这样也好理解了,原本date2的数据是m,m,n。但其实他只有2个成员,m,n。属性成员来自于相应的字段数据,但是是对数据结果的分类。
Microsoft SQL Server 2005 Analysis Services (SSAS) 中,多维数据集是基于在数据源视图中建模的表和视图开发的。多维数据集是度量值(事实数据)和维度(可涵盖感兴趣的各个方面,例如时间、产品和客户)组成的集合。多维数据集在计算、关键性能指标 (KPI)、操作、分区、透视和转换方面得到了增强。多维数据集实质上与 UDM 等效。
但这专业的解释之中,无奈又增加了新的概念。我自己使用之后,觉得可以用一个比较无赖的方法来形象的描述一下。
我们假设普通的关系数据库中有以下3个表。
A:只有1个字段 x 数据为连续自然数1,2,3,4...
B:只有1个字段 y 数据为连续负整数-1,-2,-3,-4...
M:3个字段,x,y,m xy同上,m为{x,y}的结构。
现在就用这3个表组建多维数据集,A,B为维度表,M为事实表。关系为A.x=M.x,B.y=M.y。
部署之后,浏览这个多维数据集,M.m做数据,把A.x字段放做columns,B.y字段放做rows,怎么样,结果就是一个标准的解析几何的第三象限了。A.x就是X轴,B.y就是Y轴,M.m则是空间坐标。只要初中文化过关的,应该都可以做反向联想了把。可以把数据关系表上的各种概念一一放到这里来看看究竟代表空间上的什么几何意义。还可以自己增加Z轴。
当然,一般多维数据集通常都有10个以上的轴,而我们只有3维的空间。以上的方式只能作为入门了解的方式而已。
1、什么是商业智能?
商业智能也称作BI,是英文单词Business Intelligence的缩写。
从广义上来说,我们都接触过商业智能。统计报表就可以看作早期的商业智能。而现代的商业智能包括了更多的需求,最常见就是功能就是分析及预测。(例子)
商业智能的技术实际上是一种原有的技术的综合运用。其中包括了数据仓库、OLAP和数据挖掘。
2、什么是数据仓库、数据挖掘以及OLAP(联机分析处理系统)?
数据仓库:
在现代的一些信息化非常集中的企业,都必须要用到数据仓库。数据仓库是一种对原有数据重新结构化设计的方案,其主要目的就是利用空间换取性能。摆脱关系数据库的二维设计方案,采用多维的角度来衡量数据。
OLAP:
即联机分析处理系统,这种系统是相对于OLTP(联机事务处理系统)来说的。我们通常设计的关系数据库的主要功能就是增加数据、更新数据,属于OLTP。而OLAP的则是用于统计数据、分析数据。
数据挖掘:
数据挖掘从广义上来解释,其实就是BI的最终实现。普通的关系数据库回答不了“那些人更容易购买我们的电脑产品?”这样的问题,而数据挖掘就是为了回答这类问题而设计的。
最早的数据库只能回答“我们去年的营业总额是多少?”这类问题。
关系数据库可以回答“上个月我们的营业额达到了多少?”。
而数据挖掘可以回答“明年我们的销售额预计可以达到多少?”
3、如何实现这些功能?
以上的功能的实现涉及到各种功能上的数据转换、数据算法。而使用sql2005的Analysis Services系列工具可以很方便的实现以及测试效果。Analysis Services设计的是一种基于UDM的模型方案,他包含了多维数据集、数据挖掘模型以及其他应用程序的创建
。
4、什么是UDM?
UDM既“统一维度模型/统一空间模型”,这种结构设计的目的在于可以让用户直接访问数据源去寻找他们需要的数据。
5、如何理解多维数据集?
多维数据集的结构把关系数据库的2维扩展 任意的维度,维度是多维数集的核心概念。每个维度都代表对度量值的一种观察角度。
例如常见的销售业绩作为度量值的话,就可以把销售人员、客户、产品等等信息都做为维度。通常多维数据集合都有几十个到几百个维度。通过多维表达式 (MDX)的查询,任意几个维度都可以互相组合以快速查询到需要的统计数据。