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 ...
随机推荐
- svn提交报错:svn: Aborting commit:XXXXXremains in conflict
Svn服务器上的对应内容,在上次Update后已被别人修改了,而我也做了修改,造成冲突.先备份自己的修改,从SVN上取一份别人的修改覆盖自己的文件,然后合并自己的修改进去,最后Commit.可以先更新 ...
- How to mount a NFS share?
Assume you have a NFS share /data/shares/music, at server: 192.168.1.5 You can mount the NFS share f ...
- css3创建3D场景
浏览器本身是一个2维平面,对于3D的情况,实际上是增加了一个维度(深度),所以我们需要创建一个3D场景.这时浏览器不仅仅是一个平面了,更像是一个窗口,我们透过这个窗口去观察里面的三维世界.所谓的创建3 ...
- history/location操作 /navigator 操作/ screen操作
话说mac真的没广告...就凭这点,mac完胜.ei capitan 好牛畅,分屏很好用啊,回不去了. var hist=window.history; hist.go(param); // para ...
- C# 数据库查询总结
首先创建了一个SQL Server数据库作为测试的数据库,建立表并填入测试数据 数据库:SQL Server 数据库名:Blog 表名:Test 注:数据库的连接可以使用“dbl”文件测试,具体使用百 ...
- mysql grant ,User,revoke
mysql的权限一直都都是很关心的重点,我知道的也只是很少的一部分,对于每个数据库我习惯创建一个一个用户,该用户只对自己从属的数据库产生进行操作,在一部分的程度上可以保护自己的数据库, 比如我有一个数 ...
- c++ macro
C++ Code 12345678910111213141516171819202122232425262728293031 /* version: 1.0 author: hellogise ...
- Java中对List集合内的元素进行顺序、倒序、随机排序的示例代码
import java.util.Collections; import java.util.LinkedList; import java.util.List; public class Test ...
- Redis集群的部署
Redis集群分为主节点Master和从节点Slave,主节点只有1个,而从节点可以有多个,这样从节点和主节点可以进行数据的传输,Redis集群的性能将比单机环境更高,接下来是配置的过程 首先配置Ma ...
- FFMpeg 滤镜中英文对照
FFMpeg ver 20160213-git-588e2e3 滤镜中英文对照 2016.02.17 by 1CM T.. = Timeline support 支持时间轴 .S. = Slice t ...