BI笔记之---SSAS库Process的几种方案
来源:互联网 发布:兄弟连it教育靠谱吗 编辑:程序博客网 时间:2024/05/02 03:02
本文综合描述SSAS库的处理的几种方案,并简单介绍各种方案的应用场景。
环境约定:SQL Server 2008
示例库:Adventure Works DW
方式一:直接在项目中Process
这种方法在开发阶段和测试阶段是经常使用的。
如图这种处理方式通常是第一次的全量处理,如果SSAS库犹更新的话会提示先部署。
可以看到在出现的Process界面中处理的级别是Database。
同时也可以直接点击cube(或者是挖掘结构)单独处理它们:
如果是处理Cube的话也会有很多种方式:
同时维度也是可以单独处理的:
还有,分区也是可以单独处理的(如果存在分区的话),不过就不是在Solution界面了,而是得打开Cube设计视图,然后点分区:
关于处理增量的选项,在SSAS库刚部署好的时候是没有的,只有在处理过一次SSAS库之后这个处理选项才会存在。
这个方法是最基本的方法,毕竟SSAS库本身诞生于此。适用于开发和测试阶段及生产和开发不是隔离,对安全要求不是很高的情况。
方式二:在SSIS包中Process
这个方法的优点是定义很方便。
在BIDS中直接新建项目,选择商业智能下的集成服务项目:
里面有一个模块式专门用来处理SSAS库。
可以看到在每一个模块中可以分别定义都处理什么内容。
通常,都是先处理维度,然后再处理Cube的。
同样,在这里可以自己设计增量方案。如果定义好了增量方案的话,按照这种方案走的BI方案就成型了。最后需要做的就是,将SSIS包部署到集成服务上,然后设置好Job和Schedule。
关于如何部署和发布SSIS包,可以参考下面两个链接:
http://msdn.microsoft.com/zh-cn/library/ms137592.aspx
http://msdn.microsoft.com/zh-cn/library/ms365338.aspx
关于Cube的增量处理方案,可以参考我的这篇文章:BI笔记之---增量方式处理多维数据集
这种方法应该算是微软产品线中最标准的方法。适用范围很广。
方式三:代码中Process
代码的处理方式虽然比较复杂,但还是比较灵活的,主要还是调用AMO对象来实现。
这里只简单介绍如何处理Database级别的逻辑。(通过枚举AMO下的Server对象的各子对象可以很简单的定义每个SSAS对象的处理)
Server _server = new Server();
_server.Connect("localhost");
Database _db = _server.Databases["Adventure Works DW 2008"];
//generate xmla command.
_server.CaptureXml = true;
//process command.
_db.Process();
_server.CaptureXml = false;
//out put xmla.
foreach (string item in _server.CaptureLog)
{
Console.WriteLine(item);
}
Console.WriteLine("Processing");
//execute
XmlaResultCollection _result = _server.ExecuteCaptureLog(true,true);
Console.WriteLine("Process finished");
//out put result
foreach (XmlaResult r in _result)
{
foreach (XmlaMessage m in r.Messages)
{
Console.WriteLine(m.Description);
}
}
Console.WriteLine("Finished");
Console.ReadLine();
留意代码的_server.CaptureXml部分,由于我们要处理的是Database,所以直接枚举到Database的时候直接调用Process方法,其相关的XMLA指令就会保存在_Server的CaptureLog属性中。代码的第一个foreach就是现实生成的XMLA命令的部分。
另:也可以通过ASCMD来处理Cube,关于如何操作ASCMD,请参考上一篇:
BI笔记之--- SSAS部署的几种方式
中关于如何以ascmd.exe部署SSAS库的描述。
通过代码能处理的SSAS粒度很细,参看本文中截图中的Add Analysis Services Object可以看到能枚举到的都有哪些对象,另外通过下列代码,也可以把这些对象都枚举出来:
Server _server = new Server();
_server.Connect("localhost");
foreach (Database _db in _server.Databases)
{
Console.WriteLine("Database:" + _db.Name);
foreach (Cube _cube in _db.Cubes)
{
Console.WriteLine("--Cube:" + _cube.Name);
foreach (MeasureGroup _mg in _cube.MeasureGroups)
{
Console.WriteLine("----Measure Group:" + _mg.Name);
foreach (Partition _pt in _mg.Partitions)
{
Console.WriteLine("------Partition:" + _pt.Name);
}
}
foreach (CubeDimension _dm in _cube.Dimensions)
{
Console.WriteLine("----Dimension:" + _dm.Name);
}
}
}
以下是运行结果:
可以看出一个SSAS库基本上是这样一个结构:
上图省略了挖掘结构中的相应部分。
实际处理 cube的时候,就可以在枚举的过程中,加入自己的逻辑来判断这个SSAS对象是否需要被处理,如果需要被处理的话,调用其Process方法就可以。
通过这种方法也可以间接的实现一种增量方案,不过需要数据仓库端实体设计上的一些配合,具体方案已经超出本文范围,但将在后续内容提到。
---------------------------------------------------------------
aspnetx的BI笔记系列索引:
BI笔记之---增量方式处理多维数据集
BI笔记之---BI通用流程
BI笔记之---SSAS部署的几种方式
BI笔记之---SSAS库Process的几种方案
---------------------------------------------------------------
来自博客园的aspnetx
- BI笔记之---SSAS库Process的几种方案
- BI笔记之--- SSAS部署的几种方式
- BI笔记之--- SSAS部署的几种方式
- BI笔记之---合理处理SSAS数据库的几点建议
- BI笔记之---合理处理SSAS数据库的几点建议
- BI笔记之---合理处理SSAS数据库的几点建议
- 微软BI 之SSAS 系列
- 微软BI 之SSAS 系列
- BI笔记之---SSAS中关于某一度量需要先后根据不通维度的不同聚合方法的解决
- BI笔记之---Cube增量处理的一个场景的处理方案
- 微软BI SSAS渐悟之构建数据仓库五步法
- SQL Server 2008的BI组件SSAS使用详解
- SQL Server 2008的BI组件SSAS使用详解
- SQL Server 2008的BI组件SSAS使用详解
- BI学习笔记之四 - BI的选型
- 几种主流bi工具的对比
- SSAS不同环境几种部署方式
- BI-SSAS简介篇
- 大家好
- SecureCRT中文乱码问题的解决方法
- 创建Oracle数据库步骤
- 网卡驱动实例解读分析
- 屏幕分辨率(QQVGA、QVGA、VGA、XGA、WXGA、WUXGA和WSXGA+)
- BI笔记之---SSAS库Process的几种方案
- 暴雪游戏(Blizzard)的高效哈希算法
- ogre 查询平面地图中鼠标所在位置的高度
- varchar和nvarchar的区别:
- 为什么很少有Java程序员精通Multi-threading, Concurrency and Garbage Collection?
- “返乡潮”中的白领: 挥手作别大都市“伪幸福”
- SQL SERVER数据库操作中常用但不好记的语句
- 设置span 宽度的完美解决方案
- css_ie6__ie7_fie兼容问题 。 html