Tabular Model下的ADOMD.NET
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的更多相关文章
- 【转载】Analysis Service Tabular Model #003 Multidimensional Model VS Tabular Model 我们该如何选择?
由于Multidimensional Model 和 Tabular Model 并不能互相转换, 所以在项目之初就应该要考虑好选择哪一种模型进行开发. 以下只是一些建议: Licensing 许可和 ...
- 【转载】Analysis Service Tabular Model #002 Analysis services 的结构:一种产品 两个模型
Analysis Service 2012 Architecture – One Product, Two Models 在之前SQL Server 2008 R2 版本中的分析服务实际上只有一个版本 ...
- tensorflow/model下的各个参数的理解
首先,这个对应的proto就是 然后config里面的image_resizer等等 就是proto里面的image_resizer 等等,对应的参数可以在proto里面寻找解释和默认值以及类型 再比 ...
- Azure ARM (10) ARM模式下的虚拟机和Classic Model虚拟机的区别
<Windows Azure Platform 系列文章目录> 本文内容比较多,请大家仔细阅读,谢谢! 请读者注意,在Azure ARM平台,有两种虚拟机模式:经典虚拟机和ARM虚拟机 A ...
- SQL Server 2014新特性:五个关键点带你了解Excel下的Data Explorer
SQL Server 2014新特性:五个关键点带你了解Excel下的Data Explorer Data Explorer是即将发布的SQL Server 2014里的一个新特性,借助这个特性讲使企 ...
- 微软BI 之SSAS 系列 - 在 SQL Server 2012 下查看 SSAS 分析服务的模型以及几个模型的简单介绍
在SSDT中部署一个 SSAS 项目到本地服务器上出现错误. You cannot deploy the model because the localhost deployment server i ...
- Caffe框架下的图像回归测试
Caffe框架下的图像回归测试 参考资料: 1. http://stackoverflow.com/questions/33766689/caffe-hdf5-pre-processing 2. ht ...
- MVC项目实践,在三层架构下实现SportsStore-01,EF Code First建模、DAL层等
SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...
- sencha touch之模型(model)
模型的实例相当于数据库中表的一条记录. 一般模型在\app\model下创建,而且必须遵守类的命名规则,也就是可以根据类名找到模型的定义文件. 所有模型类都要从Ext.data.Model或Ext.d ...
随机推荐
- centos python2.6升级到2.7 还有单独的python3.5环境
查看python版本 #python -V Python 1.下载Python-2.7.3 #wget http://python.org/ftp/python/2.7.3/Python-2.7.3. ...
- python 正则表达式点号与'\n'符号的问题
遇到了一个小虫,特记录之. 1.正则表达式及英文的处理如下: >>> import re >>> b='adfasdfasf<1safadsaf>23w ...
- C#的is和as操作符来进行强制类型转换&&值类型的拆箱、装箱
if(o is Employee) { Employee e=(Employee)o; //在if语句剩余的部分中使用e; } Employee e=o as Employee; if(e!=null ...
- SolrCloud的官方配置方式
前面写过生产过程中的SolrCloud集群配置,实际上官方给出的是免安装配置,启动时采用命令行参数的方式启动,这样相对简单,并且官方文档也给出了外部Zookeeper的配置,和前面说的基本一致,这个不 ...
- java基础学习04(数组与方法)
数组与方法 一.完成的目标 1. 掌握数组的定义.使用方法.引用传递 2. 掌握方法及其方法的重载 3. 使用方法接收和返回一个数组 4. java新特性对数组的操作支持 二.数组的定义和使用 数组是 ...
- nyoj130 相同的雪花
相同的雪花 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 You may have heard that no two snowflakes are alike. ...
- HTML 表单 选择器
表单元素 每个表单都对应一个<form></form>标签 表单内所有元素都写在 <form></form>里面: 1.最重要的属性 <fo ...
- 复习sqldataread
public static DataTable ConvertDataReaderToDataTable(SqlDataReader dataReader) { ///定义DataTable Data ...
- You know元音字母吗?
所谓元音字母,或者母音字母,就是语言里起着发声作用的字母.在英语中,A.E.I.O.U属于元音字母,其中U是半元音开音节和闭音节为数不多的5个元音字母看似简单,他们却能像变戏子一样跟辅音组合拼读成不同 ...
- iOS 发送请求时获取cookie
Cookie: 记录者用户信息的保存在本地的用户数据,如果有会被自动附上 值得一提的是,在iOS中当你发送一个任意请求时,不管你愿不愿意,NSURLRequest都会自动帮你记录你所访问的URL上设置 ...