ADOMD.net使用笔记(2)对多维数据的提取
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个数据集,他仍然会提出多个元数据集合,都是带有$标志的一些源数据表,其意义就不清楚。有代研究。