ADOMD.NET是一套对象架构体系,它包含需要向SSAS数据库做访问的一切支持的对象和方法。很多微软官方以及第三方的SSAS客户端应用都是通过这个对象来操作数据。

多维模式的ADOMD.NET在我以前的随笔中做过介绍,这一片主要看看在Tabular Model模式下这个对象架构是否有什么不同。

在SQL Server 2012的Tabular Model跟传统的多维模式有很大不同,比如它们不能在同一个分析服务实例中,如果抛开Tabular Model的Direct Query和多维数据集的ROLAP模式的话,它们对待数据的方式也不相同,Tabular Model的数据是存储在内容中,而多维数据集是把数据聚合在硬盘上的物理文件中。但是,从用户终端这个角度来说,它们都是相同的。

上图为Tabular Model模式。

上图为多维模式。

那么,在编程模型中,Tabular Model跟多维模式有什么区别呢?

首先我们再次来观察一下Adomd.net Client Object架构。

Adomd.net的架构跟ADO.NET的架构很像,都有对应的Connection和Command对象。由于本身返回的数据结构不同,在ADO.NET下可以选择用DataReader或者DataSet来接收数据,而在Adomd.net下对应DataSet的是CellSet,它的结构相对来说更复杂一些,关于CellSet 也可以参考我的这篇随笔:

重新整理Cellset转Datatable

http://www.cnblogs.com/aspnetx/archive/2010/11/12/1875469.html

在这个架构图中,我们可以看到从AdomdConnection对象下就可以检索到分析服务数据库的结构。

首先从Connection对象的CubeDef对象可以读取到各个Cude的信息,需要注意的是需要用CubeType属性判断一下,因为维度在这里也会作为一个CubeDef出现。还有一点就是如果一个Cube派生出了多个透视,那么在这里也会被看作是一个CubeDef存在。

检索到Cube对象然后就可以继续检索下边的Dimension和Measure。

Measure对象相对比较简单一些,只是,我们在客户端程序里看到Measure会被分类到不同的文件夹中:

但是在Measures属性直接就是Measure对象,Folder是通过Measure实例的DisplayFolder标识的。

比较复杂的是Dimension对象。

提到Dimension对象不得不提的是其下边的Hierarchy和Level对象。如果把它们翻译成中文,恐怕看不出什么区别,所以这也是我当初学习的时候比较迷茫的两个概念。

但是通过上面的Adomd.net对象架构可以看出,Dimension对象包含Hierarchy对象,Hierarchy对象又是包含Level对象的。

关于Hierarchy对象在Adomd.net对象架构下跟我们认识中的Hierarchy对象可能有所不同。

在维度设计界面中,带有层次结构的才被划分到Hierarchy下面,而其它的都归属在Attributes下面。但是在Adomd.net对象的Dimension下,Attributes全部归属到Hierarchy对象,并且只有一个Level。

以上就是关于Adomd.net对象关于SSAS数据库检索的步骤,至于多维模式和Tabular Model是否通用,我们可以写一个简单的程序来做下测试。

这里本打算写一个Console程序来做测试,但是由于检索出的信息会很多不便于浏览,所以写一个简单的ASP.NET程序来做测试。

下面直接贴核心代码:

代码是截屏,此篇结尾会找到这个项目的下载。

代码主要是根据Adomd.net下Connection的对象层次结构依次做枚举,然后添加到ASP.NET页面的TreeView对象之下。

首先修改Connection对象让它连接一个多维模式的SSAS数据库:

AdomdConnection conn = new AdomdConnection(@"Provider=MSOLAP.3;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=AdventureWorksDW2012Multidimensional-EE;Data Source=.");

conn.Open();

运行结果:

除了Adventure Works之外,其它的都是透视或者数据挖掘模型。展开Measures或者Dimensions,可以看到下面的结构:

接下来将Connection对象连接到一个Tabular Model模式的SSAS数据库下:

AdomdConnection conn = new AdomdConnection(@"Provider=MSOLAP.3;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=AdventureWorks Tabular Model SQL 2012;Data Source=.\MSBI");

conn.Open();

以上分析服务实例中,默认的实例是多维模式的SSAS数据库,MSBI实例是Tabular Model模式的SSAS模式数据库。

下面来看运行效果:

在Excel里看到的一样,代码同样能够检索得到Tabular Model模式下的结构。

截至到目前有一样工具比较特殊,就是PowerView,在微软早先发布的SQL Server中,PowerView只支持连接到PowerPivot和Tabular Model数据库,随着后续SQL Server补丁的发布,在Sharepoint下的PowerView也支持了多维模式的SSAS数据库,但是在Excel下的仍不支持。我觉得这个可能还是微软的商业行为或者是开发进度相关,从微软的分析服务官方小组的博客上我们也可以看到,后续的Excel中确实也会支持多维模式的SSAS数据库,然而这只是时间的问题,由于SQL Server 2014就要发布了,所以是否这个在SQL Server 2012中会被支持,目前还无法确定。

以上就是ADOMD.NET对象架构对于Tabular Model的介绍,可以看得出同样的对象架构在多维模式和Tabular Model模式下都是通用的。

顺便提一下,ADOMD.NET跟ADO.NET不同的是,ADOMD.NET还有一个对应的AMO的概念,AMO对象架构下也可以检索出SSAS数据库的结构,但是AMO下主要是对架构的枚举,在每一个对象下都有比如Process这样对架构进行处理的方法。而在ADO.NET下这些操作比如检索数据库下有哪些表和视图,都是通过SQL语句查询系统表实现的。

附:示例代码下载

Tabular Model下的ADOMD.NET的更多相关文章

  1. 【转载】Analysis Service Tabular Model #003 Multidimensional Model VS Tabular Model 我们该如何选择?

    由于Multidimensional Model 和 Tabular Model 并不能互相转换, 所以在项目之初就应该要考虑好选择哪一种模型进行开发. 以下只是一些建议: Licensing 许可和 ...

  2. 【转载】Analysis Service Tabular Model #002 Analysis services 的结构:一种产品 两个模型

    Analysis Service 2012 Architecture – One Product, Two Models 在之前SQL Server 2008 R2 版本中的分析服务实际上只有一个版本 ...

  3. tensorflow/model下的各个参数的理解

    首先,这个对应的proto就是 然后config里面的image_resizer等等 就是proto里面的image_resizer 等等,对应的参数可以在proto里面寻找解释和默认值以及类型 再比 ...

  4. Azure ARM (10) ARM模式下的虚拟机和Classic Model虚拟机的区别

    <Windows Azure Platform 系列文章目录> 本文内容比较多,请大家仔细阅读,谢谢! 请读者注意,在Azure ARM平台,有两种虚拟机模式:经典虚拟机和ARM虚拟机 A ...

  5. SQL Server 2014新特性:五个关键点带你了解Excel下的Data Explorer

    SQL Server 2014新特性:五个关键点带你了解Excel下的Data Explorer Data Explorer是即将发布的SQL Server 2014里的一个新特性,借助这个特性讲使企 ...

  6. 微软BI 之SSAS 系列 - 在 SQL Server 2012 下查看 SSAS 分析服务的模型以及几个模型的简单介绍

    在SSDT中部署一个 SSAS 项目到本地服务器上出现错误. You cannot deploy the model because the localhost deployment server i ...

  7. Caffe框架下的图像回归测试

    Caffe框架下的图像回归测试 参考资料: 1. http://stackoverflow.com/questions/33766689/caffe-hdf5-pre-processing 2. ht ...

  8. MVC项目实践,在三层架构下实现SportsStore-01,EF Code First建模、DAL层等

    SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...

  9. sencha touch之模型(model)

    模型的实例相当于数据库中表的一条记录. 一般模型在\app\model下创建,而且必须遵守类的命名规则,也就是可以根据类名找到模型的定义文件. 所有模型类都要从Ext.data.Model或Ext.d ...

随机推荐

  1. BZOJ 3364: [Usaco2004 Feb]Distance Queries 距离咨询

    Description 一棵树,询问两点间距离. Sol 倍增. 方向没用. 没有然后了. Code /************************************************ ...

  2. 2.AngularJS MVC

    AngularJs的MVC全部借助于$scope(作用域)实现 1.ng指令 <!doctype html> <html ng-app> <head> <me ...

  3. 9.9---n皇后问题(CC150)

    思路:首先写一个检查能不能摆的函数.boolean checkValid(int[] columns,int row1, int column1);意思是row1行摆在column1列可不可以. 然后 ...

  4. Apache和PHP的安装

    最近看了一些教科书,可能是印刷的缘故,只是一个空格没有打印,再加上网上的很多博客文章只是顺手转载,并没有仔细的检查,还有php和apache之间的版本问题,害得我花了4,5小时的时间才搞定环境的搭配. ...

  5. 介绍 .Net工具Code Snippet 与 Sql Server2008工具SSMS Tools Pack

    不久前,某某在微软写了一个很酷的工具:Visual Stuido2008可视化代码片断工具,这个工具可以在http://www.codeplex.com/SnippetDesigner上免费下载,用它 ...

  6. 常见的MYSQL高可用解决方案

    MySQL 是一种关系数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL 软件采用了双授权政策(本词条"授权政策& ...

  7. Struts2学习笔记《一》

    (一)struts2中JSP页面数据与Action对应的三种方式 1.属性驱动,及页面中带有name属性的值传递过来action中,struts2会将值直接映射到getter.setter接收器中 此 ...

  8. (转)利用eclipse external tool 执行mvn jetty:run

    一.如果这个工程是标准的maven-webapp那么基本上不用修改,直接运行jetty:run就可以执行. 但是有时候会报错说 [ERROR] No plugin found for prefix ' ...

  9. poj1155

    题意:给定一个树形图,节点数量3000.叶子节点是用户,每个用户如果能看上电视会交一定的电视费.看上电视的条件是从根到该用户的路径全部被修好,修每条边有一个费用.在不亏损(用户交钱总额>=修路总 ...

  10. win7 ubuntu10.04双系统,重装win7后,修复双启动项

    进入ubuntu的liveCD(即在试用ubuntu里),在终端里操作 首先要找到自己的ubuntu系统挂载在那个sda下面.可以用sudo fdisk -l 这个命令.然后: 1. sudo -i ...